From 737af606cf922fd86495a98399bb74feda4c1547 Mon Sep 17 00:00:00 2001 From: Ralf Hartmann Date: Tue, 6 Mar 2001 10:32:37 +0000 Subject: [PATCH] Merge with mapping-branch. git-svn-id: https://svn.dealii.org/trunk@4116 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/fe/continuous.h | 158 - deal.II/deal.II/include/fe/fe.h | 2102 +-- deal.II/deal.II/include/fe/fe_base.h | 881 ++ deal.II/deal.II/include/fe/fe_dgq.h | 259 + .../deal.II/include/fe/fe_lib.criss_cross.h | 384 - deal.II/deal.II/include/fe/fe_lib.dg.h | 223 +- deal.II/deal.II/include/fe/fe_lib.dgp.h | 400 - deal.II/deal.II/include/fe/fe_lib.lagrange.h | 542 +- deal.II/deal.II/include/fe/fe_q.h | 306 + deal.II/deal.II/include/fe/fe_system.h | 666 +- deal.II/deal.II/include/fe/fe_update_flags.h | 198 +- deal.II/deal.II/include/fe/fe_values.h | 1361 +- deal.II/deal.II/include/fe/mapping.h | 372 + .../deal.II/include/fe/mapping_cartesian.h | 258 + deal.II/deal.II/include/fe/mapping_q.h | 488 + deal.II/deal.II/include/fe/mapping_q1.h | 432 + deal.II/deal.II/include/fe/q1_mapping.h | 195 - deal.II/deal.II/source/fe/fe.cc | 536 +- deal.II/deal.II/source/fe/fe_data.cc | 69 + deal.II/deal.II/source/fe/fe_dgq.cc | 549 + .../deal.II/source/fe/fe_lib.criss_cross.cc | 1353 -- deal.II/deal.II/source/fe/fe_lib.cubic.cc | 11983 ---------------- deal.II/deal.II/source/fe/fe_lib.dg.cc | 4483 ------ .../deal.II/source/fe/fe_lib.dg.constant.cc | 152 - deal.II/deal.II/source/fe/fe_lib.dgp1.cc | 398 - deal.II/deal.II/source/fe/fe_lib.dgp2.cc | 380 - deal.II/deal.II/source/fe/fe_lib.dgp3.cc | 389 - deal.II/deal.II/source/fe/fe_lib.linear.cc | 912 -- deal.II/deal.II/source/fe/fe_lib.quadratic.cc | 2982 ---- deal.II/deal.II/source/fe/fe_lib.quartic.cc | 2867 ---- deal.II/deal.II/source/fe/fe_q.cc | 1121 ++ deal.II/deal.II/source/fe/fe_system.cc | 1051 +- deal.II/deal.II/source/fe/fe_tools.cc | 18 +- deal.II/deal.II/source/fe/fe_values.cc | 874 +- deal.II/deal.II/source/fe/mapping.cc | 79 + .../deal.II/source/fe/mapping_cartesian.cc | 567 + deal.II/deal.II/source/fe/mapping_q.cc | 1185 ++ deal.II/deal.II/source/fe/mapping_q1.cc | 1061 ++ deal.II/deal.II/source/fe/mat_dgq.1 | 141 + deal.II/deal.II/source/fe/mat_dgq.2 | 350 + deal.II/deal.II/source/fe/mat_dgq.3 | 397 + deal.II/deal.II/source/fe/mat_q.1 | 114 + deal.II/deal.II/source/fe/mat_q.2 | 292 + deal.II/deal.II/source/fe/mat_q.3 | 552 + deal.II/deal.II/source/fe/q1_mapping.cc | 801 -- .../deal.II/source/fe/q1_mapping.jacobians.cc | 4636 ------ 46 files changed, 11713 insertions(+), 37804 deletions(-) delete mode 100644 deal.II/deal.II/include/fe/continuous.h delete mode 100644 deal.II/deal.II/include/fe/fe_lib.criss_cross.h delete mode 100644 deal.II/deal.II/include/fe/fe_lib.dgp.h delete mode 100644 deal.II/deal.II/include/fe/q1_mapping.h delete mode 100644 deal.II/deal.II/source/fe/fe_lib.criss_cross.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.cubic.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.dg.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.dg.constant.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.dgp1.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.dgp2.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.dgp3.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.linear.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.quadratic.cc delete mode 100644 deal.II/deal.II/source/fe/fe_lib.quartic.cc delete mode 100644 deal.II/deal.II/source/fe/q1_mapping.cc delete mode 100644 deal.II/deal.II/source/fe/q1_mapping.jacobians.cc diff --git a/deal.II/deal.II/include/fe/continuous.h b/deal.II/deal.II/include/fe/continuous.h deleted file mode 100644 index 5d0c9c065d..0000000000 --- a/deal.II/deal.II/include/fe/continuous.h +++ /dev/null @@ -1,158 +0,0 @@ -//--------------------------------------------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//--------------------------------------------------------------- -#ifndef __deal2__fe_continuous_h -#define __deal2__fe_continuous_h - -#include - -template class TensorProductPolynomials; - -/** - * Tensor product elements based on equitdistant support points. - */ -template -class FE_Q : public FiniteElement -{ -public: - /** - * Constructor for tensor product - * polynomials of degree @p{k}. - */ - FE_Q (unsigned int k); - /** - * Destructor. - */ - ~FE_Q (); - - /** - * Prepare internal data - * structures and fill in values - * independent of the cell. - */ - virtual FEValuesBase::InternalData* - get_data (const UpdateFlags, - const Quadrature& quadrature) const ; - - /** - * Prepare internal data - * structure for transformation - * of faces and fill in values - * independent of the cell. - */ - virtual FEValuesBase::InternalData* - get_face_data (const UpdateFlags flags, - const Quadrature& quadrature) const ; - - /** - * Prepare internal data - * structure for transformation - * of children of faces and fill - * in values independent of the - * cell. - */ - virtual FEValuesBase::InternalData* - get_subface_data (const UpdateFlags flags, - const Quadrature& quadrature) const; - - virtual void - fill_fe_values (const Mapping &mapping, - const DoFHandler::cell_iterator &cell, - const Quadrature &quadrature, - FEValuesBase::InternalData &mapping_internal, - FEValuesBase::InternalData &fe_internal, - FEValuesData& data) const; - - virtual void - fill_fe_face_values (const Mapping &mapping, - const DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const Quadrature &quadrature, - FEValuesBase::InternalData &mapping_internal, - FEValuesBase::InternalData &fe_internal, - FEValuesData& data) const ; - - virtual void - fill_fe_subface_values (const Mapping &mapping, - const DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int sub_no, - const Quadrature &quadrature, - FEValuesBase::InternalData &mapping_internal, - FEValuesBase::InternalData &fe_internal, - FEValuesData& data) const ; - -private: - /** - * Map tensor product data to shape - * function numbering. - * - * The node values are ordered such - * that vertices are first, - * followed by lines, - * quadrilaterals and - * hexahedra. Furthermore, the - * ordering inside each group may - * be confused, too. Therefore, - * this function computes a mapping - * from lexicographic ordering - * (x,y,z) to the shape function - * structure. - */ - void build_renumbering (unsigned int degree, - vector& numbering); - - /** - * Compute flags for initial update only. - */ - static UpdateFlags update_once (UpdateFlags flags); - - /** - * Compute flags for update on each cell. - */ - static UpdateFlags update_each (UpdateFlags flags); - - /** - * Degree of the polynomials. - */ - const unsigned int degree; - /** - * Mapping from lexicographic to - * shape function numbering. - */ - vector renumber; - /** - * Fields of cell-independent data. - */ - class InternalData : public FEValuesBase::InternalData - { - public: - vector shape_values; - vector > shape_grads; - }; - - /** - * Vector of one-dimensional - * polynomials used. - */ - vector polynomials; - - /** - * Implementation of the tensor - * product of polynomials. - */ - TensorProductPolynomials* poly; -}; - - - -#endif diff --git a/deal.II/deal.II/include/fe/fe.h b/deal.II/deal.II/include/fe/fe.h index db255de910..cf32082d61 100644 --- a/deal.II/deal.II/include/fe/fe.h +++ b/deal.II/deal.II/include/fe/fe.h @@ -1,5 +1,10 @@ + //---------------------------- fe.h --------------------------- +// $Id$ // Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer // to the file deal.II/doc/license.html for the text and @@ -9,1823 +14,255 @@ #ifndef __deal2__fe_h #define __deal2__fe_h - -#include -#include -#include -#include +#include #include -#include -#include - - -/** - * Dimension independent data for finite elements. See the @p{FiniteElementBase} - * class for more information. - */ -template -class FiniteElementData -{ - public: - /** - * Number of degrees of freedom on - * a vertex. - */ - const unsigned int dofs_per_vertex; - - /** Number of degrees of freedom - * on a line. - */ - const unsigned int dofs_per_line; - - /** Number of degrees of freedom - * on a quadrilateral. - */ - const unsigned int dofs_per_quad; - - /** Number of degrees of freedom - * on a hexahedron. - */ - const unsigned int dofs_per_hex; - - /** - * First index of dof on a line. - */ - const unsigned int first_line_index; - - /** - * First index of dof on a quad. - */ - const unsigned int first_quad_index; - - /** - * First index of dof on a hexahedron. - */ - const unsigned int first_hex_index; - - /** - * First index of dof on a line for face data. - */ - const unsigned int first_face_line_index; - - /** - * First index of dof on a quad for face data. - */ - const unsigned int first_face_quad_index; - - /** - * Number of degrees of freedom on a - * face. This information is - * redundant to some fields in the - * derived classes but makes - * writing dimension independant - * programs easier. - */ - const unsigned int dofs_per_face; - - /** - * Total number of degrees of freedom - * on a cell. This information is - * redundant to some fields in the - * derived classes but makes - * writing dimension independant - * programs easier. - */ - const unsigned int dofs_per_cell; - - /** - * Number of basis functions used for the - * transformation from unit cell to real - * cell. For a linear mapping, this number - * equals the number of vertices. - */ - const unsigned int transform_functions; - - - /** - * Number of components and dimension of - * the image space. - */ - const unsigned int components; - - /** - * Default constructor. Constructs - * an element - * which is not so useful. Checking - * @p{dofs_per_cell} is therefore a good way to - * check if something went wrong. - */ - FiniteElementData (); - - /** - * Constructor for a 1-dimensional - * object. - */ - FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int n_transform_functions, - const unsigned int n_components); - - /** - * Constructor for a 2-dimensional - * object. - */ - FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int n_transform_functions, - const unsigned int n_components); - - /** - * Constructor for a 3-dimensional - * object. - */ - FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_transform_functions, - const unsigned int n_components); - - /** - * Declare this destructor virtual in - * order to make the respective destructors - * in derived classes virtual as well. - */ - virtual ~FiniteElementData (); - - /** - * Return the @p{dofs_per_vertex}. - */ - unsigned int n_dofs_per_vertex () const; - - /** - * Return the @p{dofs_per_line}. - */ - unsigned int n_dofs_per_line () const; - - /** - * Return the @p{dofs_per_quad}. - */ - unsigned int n_dofs_per_quad () const; - - /** - * Return the @p{dofs_per_hex}. - */ - unsigned int n_dofs_per_hex () const; - - /** - * Return the @p{dofs_per_face}. - */ - unsigned int n_dofs_per_face () const; - - /** - * Return the @p{dofs_per_cell}. - */ - unsigned int n_dofs_per_cell () const; - - /** - * Return the @p{components}. - */ - unsigned int n_components () const; - - /** - * Return the value of @p{transform_functions}. - */ - unsigned int n_transform_functions () const; - - - /** - * Comparison operator. It is not clear to - * me (WB) why we have to declare and implement - * this one explicitely. - */ - bool operator == (const FiniteElementData &) const; - - /** - * Exception - */ - DeclException2 (ExcDimensionMismatch, int, int, - << "used " << arg1 << "-d constructor for " << arg2 << "-d object"); -}; - +template class FEValuesData; +template class FEValues; +template class FEFaceValues; +template class FESubfaceValues; +template class FESystem; +template class MatrixCreator; /** - * Base class for finite elements in arbitrary dimensions. This class provides - * several fields which describe a specific finite element and which are filled - * by derived classes. It more or less only offers the fields and access - * functions which makes it possible to copy finite elements without knowledge - * of the actual type (linear, quadratic, etc). - * - * The implementation of this base class is split into two parts: those fields - * which are not common to all dimensions (@p{dofs_per_quad} for example are only - * useful for @p{dim>=2}) are put into the @p{FiniteElementData} class which - * is explicitely specialized for all used dimensions, while those fields which - * may be formulated in a dimension-independent way are put into the present - * class. - * - * The different matrices are initialized with the correct size, such that in - * the derived (concrete) finite element classes, their entries must only be - * filled in; no resizing is needed. - * - * @author Wolfgang Bangerth, 1998 + * Common interface of all finite elements. Here, the functions to + * fill the data fields of @ref{FEValues} are declared. While + * @ref{FiniteElementBase} provides implementation of common + * functionality, this class only serves as an abstract base class. + * + * The interface of this class is very restrictive. The reason is that + * finite element values should be accessed only by use of + * @ref{FEValues} objects. These, together with @p{FiniteElement} are + * responsible to provide an optimized implementation. + * + * This even holds for evaluating finite elements at their support + * points (provided the element is based on Lagrangian interpolation): + * first, it is necessary to construct a quadrature rule from the + * support points. This is then fed into an object of class + * @ref{FEValues}. Even for evaluation on the unit cell, you will need + * a triangulation containing that single cell. + * + * @author Wolfgang Bangerth, Guido Kanschat, 1998, 2000 */ template -class FiniteElementBase : public Subscriptor, - public FiniteElementData +class FiniteElement : public FiniteElementBase { - public: - /** - * Construct an object of this type. - * You have to set the - * matrices explicitely after calling - * this base class' constructor. - */ - FiniteElementBase (const FiniteElementData &fe_data, - const std::vector &restriction_is_additive_flags); - - /** - * Return a readonly reference to the - * matrix which describes the transfer of a - * child with the given number to the - * mother cell. See the @p{restriction} array - * for more information. - */ - const FullMatrix & restrict (const unsigned int child) const; - /** - * Return a readonly reference to the - * matrix which describes the transfer of a - * mother cell to the child with the given - * number. + * Copy constructor prohibited. */ - const FullMatrix & prolongate (const unsigned int child) const; + FiniteElement(const FESystem&); + public: /** - * Return a readonly reference to the - * matrix which describes the constraints - * at the interface between a refined and - * an unrefined cell. - * - * The matrix is obviously empty in only - * one space dimension, since there are no - * constraints then. + * Constructor */ - const FullMatrix & constraints () const; + FiniteElement (const FiniteElementData &fe_data, + const std::vector &restriction_is_additive_flags); /** - * Comparison operator. We also check for - * equality of the constraint matrix, - * which is quite an expensive operation. - * Do therefore - * use this function with care, if possible - * only for debugging purposes. - * - * Since this function is not that important, - * we avoid an implementational question - * about comparing arrays and do not compare - * the matrix arrays @p{restriction} and - * @p{prolongation}. + * Virtual destructor. Makes sure + * that pointers to this class + * are deleted properly. */ - bool operator == (const FiniteElementBase &) const; + virtual ~FiniteElement (); /** - * Compute system index from components. + * Compute flags for initial + * update only. + * @see{FEValuesBase} */ - unsigned int component_to_system_index (unsigned int component, - unsigned int component_index) const; + virtual UpdateFlags update_once (UpdateFlags flags) const = 0; /** - * Compute component and index from - * system index. - * - * Return value contains first - * component and second index in - * component. + * Compute flags for update on + * each cell. + * @see{FEValuesBase} */ - std::pair - system_to_component_index (unsigned int index) const; - - /** - * Compute system index from components on a face. - */ - unsigned int face_component_to_system_index (unsigned int component, - unsigned int component_index) const; + virtual UpdateFlags update_each (UpdateFlags flags) const = 0; - /** - * Compute component and index from system - * index for a face. - * - * Return value contains first - * component and second index in - * component. - */ - std::pair - face_system_to_component_index (unsigned int index) const; - - /** - * The base element establishing a - * component. - * - * This table converts a - * component number to the - * @p{base_element} number. While - * component information contains - * multiplicity of base elements, - * the result allows access to - * shape functions of the base - * element. - */ - unsigned int component_to_base(unsigned int index) const; - - /** - * Access the @p{restriction_is_additive_flag} - * field. See there for more information on - * its contents. - */ - bool restriction_is_additive (const unsigned int component) const; - - /** - * Determine an estimate for the - * memory consumption (in bytes) - * of this object. - * - * This function is made virtual, - * since finite element objects - * are usually accessed through - * pointers to their base class, - * rather than the class itself. - */ - virtual unsigned int memory_consumption () const; /** - * Exception - */ - DeclException2 (ExcWrongFieldDimension, - int, int, - << "The field has not the assumed dimension " << arg2 - << ", but has " << arg1 << " elements."); - DeclException2 (ExcWrongInterfaceMatrixSize, - int, int, - << "The interface matrix has a size of " << arg1 - << "x" << arg2 - << ", which is not reasonable in the present dimension."); - - protected: - /** - * Have @p{N=2^dim} matrices keeping the - * restriction constants for the transfer - * of the @p{i}th child to the mother cell. - * The numbering conventions for the - * degree of freedom indices are descibed - * in the derived classes. - * In this matrix, the row indices belong - * to the destination cell, i.e. the - * unrefined one, while the column indices - * are for the refined cell's degrees of - * freedom. The application of this matrix - * is therefore usually its being - * multiplied by the vector of nodal values - * on the child. - * - * In essence, using the matrices from the - * children to the mother cell amounts to - * computing the interpolation of the - * function on the refined to the coarse - * mesh. To get the vector of nodal values - * of the interpolant on the mother cell, - * you have to multiply the nodal value - * vectors of each of the child cell with - * the respective restriction matrix and - * clobber these contributions together. - * However, you must take care not to - * @p{add} these together, since nodes which - * belong to more than one child would then - * be counted more than once; rather, you - * have to overwrite the nonzero - * contributions of each child into the - * nodal value vector of the mother cell. - * - * While we could avoid this and rather add - * up the contributions of each child for - * nodes that are interior of the mother - * cell, we can't for nodes on the boundary - * of the mother cell. The reason for this - * is that we know how many children may - * contribute to the interpolated nodal - * value of an interior degree of freedom. - * However, we don't know for dofs on the - * boundary, for which we only know how many - * children from each side of the face - * contribute, but we would have to look out - * of the cell to know how many neighbors - * there are and then, still, we would have - * to have two different interpolation - * routines for local interpolation and for - * the contribution of a cell to a global - * interpolation if we wanted to compute - * that by adding up local contributions. + * Return the support points of the + * trial functions on the unit cell. * - * Because of this problem, we chose to - * write rather than add the contributions - * of each cell to the interpolation onto - * the mother cell. However, there now is - * another problem which appears when using - * discontinuous finite elements. The - * process of 'writing' assumed that we - * get the same result for each degree of - * freedom from each of the children, such - * that 'over'writing would not destroy - * information; when using discontinuous - * elements, this assumption is violated. + * The order of points in the + * array matches that returned by + * the #cell->get_dof_indices# + * function, but: * - * One way to get the whole thing working - * nonetheless would be to use a flag which - * tells us when the 'write' and when to - * 'add'. Adding is possible when we have - * only interior degrees of freedom, i.e. - * dofs that are not shared between cells. - * This is certainly the way to go for the - * DG(r) elements. However, this scheme - * does not work for discontinuous elements - * with degrees of freedom on the faces, - * such as the rotated bilinear - * (Rannacher-Turek) element or elements - * like the Crouzeix-Raviart one. The latter - * have degrees of freedom on the faces, - * e.g. mean values on a face, and these - * values are the same from both sides of - * the face, but the solutions are - * discontinuous there nevertheless, such - * that interpolation is not possible here. - * - * At least for the first case - * (the DG(r) elements), the - * @p{restriction_is_additive_flags} was - * introduced, see there for more - * information. For the latter - * case, NO SOLUTION HAS BEEN - * MADE UP YET. - * - * To compute the interpolation of a - * finite element field to a cell, you - * may use the @p{get_interpolated_dof_values} - * function of the @p{DoFCellAccessor} class. - * See there for more information. - * - * Upon assembling the transfer matrix - * between cells using this matrix array, - * zero elements in the restriction - * matrix are discarded and will not fill - * up the transfer matrix. - */ -#if !((__GNUC__==2) && (__GNUC_MINOR__==95)) - FullMatrix restriction[GeometryInfo::children_per_cell]; -#else - FullMatrix restriction[1 << dim]; -#endif - - /** - * Have @p{N=2^dim} matrices keeping the - * prolongation constants for the transfer - * of the mother cell to the @p{i}th child. - * The numbering conventions for the - * degree of freedom indices are descibed - * in the derived classes. - * In this matrix, the row indices belong - * to the destination cell, i.e. the - * refined one, while the column indices - * are for the unrefined cell's degrees of - * freedom. Thus, if @p{u0} is the vector - * of values of degrees of freedom on the - * coarse cell, @p{prolongation[i]*u0} - * yields the vector of values of the - * degrees of freedom on the @p{i}th child - * cell. - * - * On the other hand, for finite elements - * with embedded spaces, the basis function - * phi0[i] on the coarse grid can be - * expressed by - * $\sum_c \sum_j p^c_{ji} phi1[j]$ - * where the sum over c runs over the child - * cells and phi1[j] is the jth basis - * function on the cth child cell. Note - * that we need here the transpose of the - * matrix $p^c$ ($p^c$ is returned by this - * function with parameter c). - * - * Upon assembling the transfer matrix - * between cells using this matrix array, - * zero elements in the prolongation - * matrix are discarded and will not fill - * up the transfer matrix. + * If the shape functions are not + * Lagrangian interpolants at + * some points, the size of the + * array will be zero after + * calling this function. This is + * the standard behavior, if the + * function is not overloaded. */ -#if ! ((__GNUC__==2) && (__GNUC_MINOR__==95)) - FullMatrix prolongation[GeometryInfo::children_per_cell]; -#else - FullMatrix prolongation[1 << dim]; -#endif - - /** - * Specify the constraints which - * the dofs on the two sides of a - * cell interface underly if the - * line connects two cells of - * which one is refined once. - * - * For further details see the - * general description of the - * derived class. - * - * This field is obviously - * useless in one space dimension - * and has there a zero size. - */ - FullMatrix interface_constraints; - - /** - * Map between linear dofs and - * component dofs. - */ - std::vector< std::pair > system_to_component_table; - - /** - * Map between linear dofs and - * component dofs on face. - */ - std::vector< std::pair > face_system_to_component_table; - - /** - * Map between component and - * linear dofs. - */ - std::vector< std::vector > component_to_system_table; - - /** - * Map between component and - * linear dofs on a face. - */ - std::vector< std::vector > face_component_to_system_table; + virtual void get_unit_support_points (std::vector > &points) const; /** - * The base element establishing - * a component. - * - * This table converts a - * component number to the - * @p{base_element} number. While - * component information contains - * multiplicity of base elements, - * the result allows access to - * shape functions of the base - * element. - */ - std::vector component_to_base_table; - - /** - * This flag determines how the - * restriction of data from child - * cells to its mother is to be - * done. In this, it also - * determines in which way the - * restriction matrices of the - * derived class are to be used. - * - * For most elements, the mode is - * the following. Consider a 1d - * linear element, with two - * children and nodal values 1 - * and 2 on the first child, and - * 2 and 4 on the second - * child. The restriction to the - * mother child then yields the - * values 1 and four, i.e. the - * values on the mother cell can - * be obtained by pointwise - * interpolation, where for each - * nodal value on the mother - * child one point on exactly one - * child exists. However, - * already on the quadratic - * element, the midpoint on the - * mother element can be obtained - * from any of the two children, - * which however would both yield - * the same value due to - * continuity. What we do in - * practice is to compute them - * from both sides and set them, - * rather than add them up. This - * makes some things much - * easier. In practice, if a - * degree of freedom on one of - * the child cells yields a - * nonzero contribution to one of - * the degrees of freedom on the - * mother cell, we overwrite the - * value on the mother cell. This - * way, when setting up the - * restriction matrices, we do - * not have to track which child - * is responsible for setting a - * given value on the mother - * cell. We call this the - * non-additive mode. - * - * The other possibility would be - * to add up the contributions - * from the different - * children. This would mean that - * both of the inner endpoint of - * the quadratic child elements - * above would have a weight of - * 1/2 with respect to the - * midpoint value on the mother - * cell. However, this also means - * that we have to first compute - * the restriction to the mother - * cell by addition from the - * child cells, and afterwards - * set them to the global - * vector. The same process, - * adding up the local - * contributions to the global - * vector is not possible since - * we do not know how many coarse - * cells contribute to nodes on - * the boundary. - * - * In contrast to the - * non-additive mode described - * above, which is the simplest - * way for elements can be - * interpolated from its - * children, interpolation is not - * possible for piecewise - * constant elements, to name - * only one example. Here, the - * value on the mother cell has - * to be taken the average of the - * values on the children, - * i.e. all children contribute - * alike to the one degree of - * freedom. Here, we have to sum - * up the contributions of all - * child cells with the same - * weight, and the non-additive - * mode of above would only set - * the value on the mother cell - * to the value of one of the - * child cell, irrespective of - * the values on the other cells. + * Return the support points of + * the trial functions on the + * first face of the unit cell. * - * For discontinuous elements of - * general degree p, DG(p), a - * local projection from the - * child cells to the mother cell - * is used as restriction. As the - * standard local projection - * would depend on the real - * points of the cells, the - * following projection is chosen - * to be performed on the unit - * square only: - * $u^K=u^K_j\phi^K_j$ denotes - * the discrete function on the - * mother cell and - * $u^C=u^C_k\phi^C_k$ the - * function on the child cell - * $C$, with $\phi^K_j$ and - * $\phi^C_k$ denoting the basis - * functions on the reference - * cell (unit square) and the - * cell $[0,0.5]^dim$, - * respectively. The projection - * $u^K$ is now defined to hold - * $\int_K - * u^K\phi^K_i=\sum_C\int_C - * u^C\phi^K_i,\quad\forall - * i$. Using prolongation - * matrices $A_{i,l}$, with - * $\phi^K_i(x)=A_{i,l}\phi^C_l(x)$, - * and using the local mass - * matrices $M^K$ and $M^C$, the - * projection $u^K$ may be - * written as - * $M^K_{i,j}u^K_j=\sum_C - * A_{l,i}M^C_{l,k}u^C_k$. Therefore - * $u^K_j=\sum_C R^C_{j,k}u^C_k$ - * with - * $R^C=(M^K)^{-1}A^TM^C$. The - * restriction matrices $R^C$ are - * hard coded and the summation - * over all child cells is - * switched on by setting the - * @p{restriction_is_additive_flags} - * to @p{true}. + * The order of points in + * the array matches that returned by + * the #cell->get_dof_indices# function. * - * Given these notes, the flag - * under consideration has to be - * set to @p{false} for the usual - * continuous Lagrange elements, - * and @p{true} for the other cases - * mentioned above. The main - * function where it is used is - * @p{DoFAccessor::get_interpolated_dof_values}. - * There is one flag per - * component. + * If the shape functions are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. This is the standard behavior, + * if the function is not overloaded. */ - const std::vector restriction_is_additive_flags; -}; - - - - -/** - * Finite Element in any dimension. This class declares the - * functionality to fill the fields of the @p{FiniteElementBase} - * class. Since this is something that depends on the actual finite - * element, the functions are declared virtual if it is not possible - * to provide a reasonable standard implementation. Note that you will - * only seldomly use the functionality of this class in application - * programs, as you will normally be interested in the values and - * derivatives of shape functions on cells in physical space, rather - * than on the unit cell. In that case, you will have to use the - * @p{FEValues} class and its siblings. - * - * - * @sect3{Finite elements in one dimension} - * - * Finite elements in one dimension need only set the @p{restriction} and - * @p{prolongation} matrices in @p{FiniteElementBase<1>}. The constructor of - * this class in one dimension presets the @p{interface_constraints} matrix - * by the unit matrix with dimension one. Changing this behaviour in - * derived classes is generally not a reasonable idea and you risk getting - * in terrible trouble. - * - * - * @sect3{Finite elements in two dimensions} - * - * In addition to the fields already present in 1D, a constraint matrix - * is needed in case two quads meet at a common line of which one is refined - * once more than the other one. Then there are constraints referring to the - * hanging nodes on that side of the line which is refined. These constraints - * are represented by a $m\times n$-matrix @p{interface_constraints}, where $n$ is the - * number of degrees of freedom on the refined side (those dofs on the middle - * vertex plus those on the two lines), and $m$ is that of the unrefined side - * (those dofs on the two vertices plus those on the line). The matrix is thus - * a rectangular one. - * - * The mapping of the dofs onto the indices of the matrix is as follows: - * let $d_v$ be the number of dofs on a vertex, $d_l$ that on a line, then - * $m=0...d_v-1$ refers to the dofs on vertex zero of the unrefined line, - * $m=d_v...2d_v-1$ to those on vertex one, - * $m=2d_v...2d_v+d_l-1$ to those on the line. - * - * Similarly, $n=0...d_v-1$ refers to the dofs on the middle vertex - * (vertex one of child line zero, vertex zero of child line one), - * $n=d_v...d_v+d_l-1$ refers to the dofs on child line zero, - * $n=d_v+d_l...d_v+2d_l-1$ refers to the dofs on child line one. - * Please note that we do not need to reserve space for the dofs on the - * end vertices of the refined lines, since these must be mapped one-to-one - * to the appropriate dofs of the vertices of the unrefined line. - * - * It should be noted that it is not possible to distribute a constrained - * degree of freedom to other degrees of freedom which are themselves - * constrained. Only one level of indirection is allowed. It is not known - * at the time of this writing whether this is a constraint itself. - * - * - * @sect3{Finite elements in three dimensions} - * - * For the interface constraints, almost the same holds as for the 2D case. - * The numbering for the indices $m$ on the mother face is obvious and keeps - * to the usual numbering of degrees of freedom on quadrilaterals. - * - * The numbering of the degrees of freedom on the interior of the refined - * faces for the index $n$ is as follows: let $d_v$ and $d_l$ be as above, - * and $d_q$ be the number of degrees of freedom per quadrilateral (and - * therefore per face), then $n=0...d_v-1$ denote the dofs on the vertex at - * the center, $n=d_v...5d_v-1$ for the dofs on the vertices at the center - * of the bounding lines of the quadrilateral, - * $n=5d_v..5d_v+4*d_l-1$ are for the degrees of freedom on - * the four lines connecting the center vertex to the outer boundary of the - * mother face, $n=5d_v+4*d_l...5d_v+4*d_l+8*d_l-1$ for the degrees of freedom - * on the small lines surrounding the quad, - * and $n=5d_v+12*d_l...5d_v+12*d_l+4*d_q-1$ for the dofs on the - * four child faces. Note the direction of the lines at the boundary of the - * quads, as shown below. - * - * The order of the twelve lines and the four child faces can be extracted - * from the following sketch, where the overall order of the different - * dof groups is depicted: - * @begin{verbatim} - * *--13--3--14--* - * | | | - * 16 20 7 19 12 - * | | | - * 4--8---0--6---2 - * | | | - * 15 17 5 18 11 - * | | | - * *--9---1--10--* - * @end{verbatim} - * It should be noted that the face as shown here is in the standard form, - * i.e. with vertex zero at the bottom left, and the other vertices numbered - * counter clockwise. This explains the numbering of the lines labeled 13 and - * 14, as well as those labeled 15 and 16. The dofs on the lines need to - * be numbered in the direction of the lines, which is as follows: - * @begin{verbatim} - * *-->---*-->---* - * | | | - * ^ ^ ^ - * | | | - * *-->---*-->---* - * | | | - * ^ ^ ^ - * | | | - * *-->---*-->---* - * @end{verbatim} - * The orientation of the quads should be obvious. - * - * The faces of a hexahedron are arranged in a way such that - * some must be viewed from the inside and some from the outside of the cell to - * show this order; refer to the documentation of the @ref{Triangulation} class for - * the definition of this. - * - * If of the cells adjacent to one line more than one is refined and there is - * at least one unrefined cell, then the degrees of freedom on the refined line - * are constrained from two cells. For example, consider the cell behind the - * face shown above is refined, while the one in front of the face is not - * refined; then the dofs on the lines numbered 9 and 10 are constrained. If - * there are two more cells below the ones just introduced, with a common face - * right below the one shown, and of these is one refined and one unrefined one, - * then the degrees on the two mentioned small lines are constrained a second - * time. Since these constraints must be unique, it follows that the constraints - * for the degrees of freedom on refined lines may only be in terms of the - * degrees of freedom on the unrefined line, not in terms of the other - * degrees of freedom on a face. - * - * Since the handling of constraints on degrees of freedom is mostly done - * by the @p{ConstraintMatrix} class, this class checks whether the constraints - * introduced from the two sides are unique; it is able to handle the fact - * that the constraints for some of the dofs are entered more than once. - * - * - * @sect3{Notes on three space dimensions} - * - * In three space dimensions, using locally refined elements involves - * a difficulty not found in one or two spatial dimensions: the common - * face of two cells need not match exactly, if one of the cells is - * refined and the two cells are at the boundary. To understand this, - * look at the following sketch: - * @begin{verbatim} - * *---------*---------* - * / / /| - * / / / | - * / / / | - * *---------*---------* | - * | | | | - * | | | * - * | | | / - * | | | / - * | | |/ - * *---------*---------* - * @end{verbatim} - * - * Assume the two top faces represent the boundary of the - * triangulation; assume further that the boundary of the original - * domain is curved here. Then, refining one of the two cells will - * lead to refinement of the top line of the common face of the two - * cells with the new mid-point being raised or lowered, i.e. the two - * children of this line will not take the same place as their mother - * line did (this is not properly drawable using only ASCII characters, - * use some imagination): - * @begin{verbatim} - * ..*--.*---..*---------* - * *----*----* / /| - * : : :/ / | - * : : :/ / | - * *----*----*---------* | - * | | | | | - * | | | | * - * *----*----* | / - * | | | | / - * | | | |/ - * *----*----*---------* - * @end{verbatim} - * While this is the case with boundary faces in two spatial - * dimensions also, it here leads to the fact that the four child - * faces of the common face of the two cells will not coincide with - * their mother face as well. - * - * Before proceeding to the consequences of this, we should note that - * this problem occurs only for cells exactly at the boundary and if - * exactly one of the two cells is refined once. If one of the two is - * refined once and the other one twice, the problem again occurs only - * for the outermost layer of cells, not for the others. - * - * Now for the consequences. Because most finite elements, at least - * those implemented at present (February 1999) are implemented by - * interpolation to certain Lagrange points, and because the Lagrange - * points do not match, there is no easy way to obtain continuity or - * any other constraint on the finite element functions at this - * face. This is rather obvious since parts of the child faces of the - * left, refined cell do not match any face of the right, unrefined - * cell at all. This problem seems unsolvable using the usual finite - * elements with trial functions computed on the unit cell without - * taking into consideration the actual cell, so we do not even - * attempt to solve it. - * - * A second, but related problem comes into play when trying to - * compute integrals over faces which are refined from one side. For - * this problem, the @p{FESubfaceValues} class exists, and it - * evaluates certain functions of the finite element class involving - * the Jacobian determinant of the mapping of unit face to real face, - * restricted to a subface, and the normal vectors to the subfaces. We - * should note that here, we talk only about evaluating the finite - * element in the right cell, but on the common face; evaluating the - * finite element in the small cells on the left poses no problem. The - * question here is: what are the subfaces? It could either be the - * four subfaces of the refined cell to the left, or the four subfaces - * of the large face if it were refined with no curved boundary being - * near it. In the first case, points where we evaluate jacobians as - * well as normal vectors would match from both sides of the faces; - * however, the points at which the finite element function is - * evaluated, would not match, which needs to be that way because for - * some points of the small faces of the left cell there are no - * matching points on the right. - * - * The other possibility would be to totally ignore the existence of - * the boundary and evaluate the finite element in the right cell at - * subfaces which would be generated if the new vertex of the top line - * of the common face was the midpoint of the line. This approach is - * simpler from the implementational view point, but is also more - * appropriate, since we evaluate on the right cell and do not want to - * let this evaluation depend on the state of the left cell or its - * children. - * - * Within this library, the present implementation uses the second way. - * - * - * @sect3{Notes on extending the finite element library} - * - * The @p{deal.II} library was mainly made to use lagrange elements of - * arbitrary order. For this reason, there may be places in the - * library where it uses features of finite elements which may not be - * as general as desirable as may be. Most of these restrictions don't - * come to mind and may cause problems if someone wanted to implement - * a finite element which does not satisfy these restrictions, leading - * to strange problems in places one does not expect. - * - * This section tries to collect some of these restrictions which are known. - * There is no guarantee that this list is complete; in fact, doubts are in - * place that that be so. - * - * @begin{itemize} - * @item Lagrange elements: at several places in the library, use is made of the - * assumption that the basis functions of a finite element corresponds to a - * function value (as opposed to derivatives or the like, as used in the - * Hermitean finite element class or in the quintic Argyris element). It is - * further assumed that a basis function takes its nominal value at a - * certain point (e.g. linear trial functions take their value in the - * corners of the element; this restriction rules out spectral elements for - * the present library). - * - * Both these assumptions are used when interpolation of a continuous - * function to the finite element space is applied. At present, only few - * places where this is used in the library come to mind to the author, - * namely the treating of boundary values in the @p{ProblemBase} class and - * the interpolation in the @p{VectorTools} collection. You should also - * look out for other places where explicit use of the support points is - * made if you want to use elements of other classes. A hint may be the - * use of the @p{get_support_points} and @p{get_face_support_points} functions - * of this class. - * - * This also is used in some sense in the - * @ref{DoFHandler}@p{::distribute_cell_to_dof_vector} where it is assumed that - * the degrees of freedom denote function values and not derivatives or - * the like. - * - * @item Vanishing of basis functions on faces: when projecting a function - * to the boundary, use if made of the assumption that all basis functions - * on a cell adjacent to the boundary vanish on the boundary except for those - * on the boundary face itself. For Lagrange elements this is true, but it - * may or may not be true in other cases. - * - * This assumption is used in the @p{VectorTools::project_boundary_values}, - * @p{MatrixCreator::create_boundary_mass_matrix}, - * @ref{DoFHandler}@p{::make_boundary_sparsity_pattern}, - * @ref{DoFHandler}@p{::map_dof_to_boundary_indices} and may be a few other places. - * The places in the @ref{DoFHandler} class are probably not that dangerous, - * since wrong results will most likely lead to internal errors through - * the @p{Assert} mechanism, but the first places will lead to undiscovered - * errors if not thought of properly. - * - * This assumption also comes into play when computing the constraints of - * hanging nodes. If functions not located on a certain face vanish on - * that face (they do for Lagrange elements), then the distribution of - * constrained nodes happens with the face nodes on the large call. If - * the assumption does not hold, then the distribution has to happen - * with all nodes on the small and the large cells. This is not - * implemented in the @ref{DoFHandler} class as of now. - * @end{itemize} - * - * @author Wolfgang Bangerth, 1998 - */ -template -class FiniteElement : public FiniteElementBase -{ - public: - /** - * Constructor - */ - FiniteElement (const FiniteElementData &fe_data, - const std::vector &restriction_is_additive_flags); - - /** - * Destructor. Only declared to - * have a virtual destructor - * which the compiler wants to - * have. - */ - virtual ~FiniteElement () {}; + virtual void get_unit_face_support_points (std::vector > &) const; - /** - * Return the value of the - * @p{i}th shape function at the - * point @p{p}. @p{p} is a point - * on the reference element. - */ - virtual double shape_value (const unsigned int i, - const Point &p) const = 0; - - /** - * Return the gradient of the - * @p{i}th shape function at the - * point @p{p}. @p{p} is a point - * on the reference element, and - * likewise the gradient is the - * gradient on the unit cell with - * respect to unit cell - * coordinates. - */ - virtual Tensor<1,dim> shape_grad (const unsigned int i, - const Point &p) const = 0; - - /** - * Return the tensor of second - * derivatives of the @p{i}th - * shape function at point @p{p} - * on the unit cell. The - * derivatives are derivatives on - * the unit cell with respect to - * unit cell coordinates. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const = 0; - - /** - * Transforms the point @p{p} on - * the unit cell to the point - * @p{p_real} on the real cell - * @p{cell} and returns @p{p_real}. - */ - virtual - Point - transform_unit_to_real_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const = 0; + friend class FEValues; + friend class FEFaceValues; + friend class FESubfaceValues; + friend class FESystem; + friend class MatrixCreator; + friend class VectorTools; + protected: /** - * Transforms the point @p{p} on - * the real cell to the point - * @p{p_unit} on the unit cell - * @p{cell} and returns @p{p_unit}. - */ - virtual - Point - transform_real_to_unit_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const = 0; - - /** - * Return the value of the - * @p{i}th shape function of the - * transformation mapping from - * unit cell to real cell. For - * isoparametric elements, this - * function is the same as the - * trial functions, but for - * sublinear or other mappings, - * they differ. - */ - virtual double shape_value_transform (const unsigned int i, - const Point &p) const = 0; - - /** - * Same as above: return gradient - * of the @p{i}th shape function - * for the mapping from unit to - * real cell. + * @p{clone} function instead of + * a copy constructor. + * + * This function is needed by the + * constructors of @p{FESystem}. */ - virtual Tensor<1,dim> shape_grad_transform (const unsigned int i, - const Point &p) const = 0; + virtual FiniteElement *clone() const =0; /** - * Compute the Jacobian matrix - * and the quadrature points as - * well as the trial function - * locations on the real cell in - * real space from the given cell - * and the given quadrature - * points on the unit cell. The - * Jacobian matrix is to be - * computed at every quadrature - * point. The derivative of the - * jacobian matrix is the - * derivative with respect to the - * unit cell coordinates. This - * function has to be in the - * finite element class, since - * different finite elements need - * different transformations of - * the unit cell to a real cell. - * - * The computation of these - * fields may share some common - * code, which is why we put it - * in one function. However, it - * may not always be necessary to - * really compute all fields, so - * there are bool flags which - * tell the function which of the - * fields to actually compute. - * - * Refer to the documentation of - * the @ref{FEValues} class for a - * definition of the Jacobi - * matrix and of the various - * structures to be filled. - * - * This function is provided for - * the finite element class in - * one space dimension, but for - * higher dimensions, it depends - * on the present fe and needs - * reimplementation by the - * user. This is due to the fact - * that the user may want to use - * iso- or subparametric mappings - * of the unit cell to the real - * cell, which makes things much - * more complicated. - * - * The - * @p{shape_values/grads_transform} - * arrays store the values and - * gradients of the - * transformation basis - * functions. While this - * information is not necessary - * for the computation of the - * other fields, it allows for - * significant speedups, since - * the values and gradients of - * the transform functions at the - * quadrature points need not be - * recomputed each time this - * function is called. - * - * The function assumes that the - * fields already have the right - * number of elements. It has to - * be guaranteed, that fields - * that are not requested for - * update are not changed. This - * also means, that these fields - * have to be filled with the - * correct values beforehand. - * - * This function is more or less - * an interface to the - * @p{FEValues} class and should - * not be used by users unless - * absolutely needed. + * Prepare internal data + * structures and fill in values + * independent of the cell. */ - virtual void fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grads_transform) const; + virtual typename Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Mapping& mapping, + const Quadrature &quadrature) const = 0; /** - * Do the same thing that the - * other @p{fill_fe_values} - * function does, exception that - * a face rather than a cell is - * considered. The @p{face_no} - * parameter denotes the number - * of the face to the given cell - * to be considered. - * - * The unit points for the - * quadrature formula are given - * on the unit face which is a - * mannifold of dimension one - * less than the dimension of the - * cell. The - * @p{global_unit_points} denote - * the position of the unit - * points on the selected face on - * the unit cell. This - * additional information is - * passed since the - * @p{FEFaceValues} class can - * compute them once and for all, - * eliminating the need to - * recompute it each time - * @p{FEFaceValues::reinit} is - * called. - * - * The jacobian matrix is - * evaluated at each of the - * quadrature points on the given - * face. The matrix is the - * transformation matrix of the - * unit cell to the real cell, - * not from the unit face to the - * real face. This is the - * necessary matrix to compute - * the real gradients. - * - * Conversely, the Jacobi - * determinants are the - * determinants of the - * transformation from the unit - * face to the real face. This - * information is needed to - * actually perform integrations - * along faces. Note that we here - * return the inverse of the - * determinant of the jacobi - * matrices as explained in the - * documentation of the - * @p{FEValues} class. - * - * The support points are the - * off-points of those trial - * functions located on the given - * face; this information is - * taken over from the - * @p{get_face_support_points} - * function. - * - * The order of trial functions - * is the same as if it were a - * cell of dimension one less - * than the present. E.g. in two - * dimensions, the order is first - * the vertex functions (using - * the direction of the face - * induced by the given cell) - * then the interior functions. - * The same applies for the - * quadrature points which also - * use the standard direction of - * faces as laid down by the - * @ref{Triangulation} class. - * - * There is a standard - * implementation for dimensions - * greater than one. It uses the - * @p{fill_fe_values()} function - * to retrieve the wanted - * information. Since this - * operation acts only on unit - * faces and cells it does not - * depend on a specific finite - * element transformation and is - * thus applicable for all finite - * elements and uses tha same - * mapping from the unit to the - * real cell as used for the - * other operations performed by - * the specific finite element - * class. - * - * Three fields remain to be - * finite element specific in - * this standard implementation: - * The jacobi determinants of the - * transformation from the unit - * face to the real face, the - * support points and the outward - * normal vectors. For these - * fields, there exist pure - * virtual functions, - * @p{get_face_jacobians}, - * @p{get_face_support_points} - * and @p{get_normal_vectors}. - * - * Though there is a standard - * implementation, there may be - * room for optimizations which - * is why this function is made - * virtual. - * - * Since any implementation for - * one dimension would be - * senseless, all derived classes - * should throw an error when - * called with @p{dim==1}. - * - * The function assumes that the - * fields already have the right - * number of elements. - * - * This function is more or less an - * interface to the @p{FEFaceValues} class - * and should not be used by users unless - * absolutely needed. + * Prepare internal data + * structure for transformation + * of faces and fill in values + * independent of the cell. */ - virtual void fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - const typename std::vector > &global_unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - std::vector &face_jacobi_determinants, - const bool compute_face_jacobians, - typename std::vector > &normal_vectors, - const bool compute_normal_vectors, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grads_transform) const; + virtual typename Mapping::InternalDataBase* + get_face_data (const UpdateFlags flags, + const Mapping& mapping, + const Quadrature &quadrature) const; /** - * This function does almost the - * same as the above one, with - * the difference that it - * considers the restriction of a - * finite element to a subface - * (the child of a face) rather - * than to a face. The number of - * the subface in the face is - * given by the @p{subface_no} - * parameter. The meaning of the - * other parameters is the same - * as for the - * @p{fill_fe_face_values} - * function. - * - * Since the usage of support - * points on subfaces is not - * useful, it is excluded from - * the interface to this - * function. - * - * Like for the - * @p{fill_fe_face_values} - * function, there is a default - * implementation, using the - * @p{fill_fe_values} - * function. There may be better - * and more efficient solutions - * for a special finite element, - * which is why this function is - * made virtual. - * - * This function is more or less - * an interface to the - * @p{FESubfaceValues} class and - * should not be used by users - * unless absolutely needed. - */ - virtual void fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - const typename std::vector > &global_unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &q_points, - const bool compute_q_points, - std::vector &face_jacobi_determinants, - const bool compute_face_jacobians, - typename std::vector > &normal_vectors, - const bool compute_normal_vectors, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grads_transform) const; - - /** - * Return the support points of - * the trial functions on the - * unit cell. - * - * The function assumes that the - * @p{unit_points} array already - * has the right size. The order - * of points in the array matches - * that returned by the - * @p{cell->get_dof_indices} - * function. - * - * For one space dimension there - * is a standard implementation - * assuming equidistant - * off-points on the unit - * line. For all other - * dimensions, an overwritten - * function has to be provided. + * Prepare internal data + * structure for transformation + * of children of faces and fill + * in values independent of the + * cell. */ - virtual void get_unit_support_points (typename std::vector > &unit_points) const; + virtual typename Mapping::InternalDataBase* + get_subface_data (const UpdateFlags flags, + const Mapping& mapping, + const Quadrature &quadrature) const; + + /** + * Fill the fields of + * @ref{FEValues}. This function + * performs all the operations + * needed to compute the data of an + * @p{FEValues} object. + * + * The same function in + * @p{mapping} must have been + * called for the same cell first! + */ + virtual void + fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData &data) const = 0; /** - * Compute the off-points of the - * finite element basis functions - * on the given cell in real - * space. - * - * This function implements a - * subset of the information - * delivered by the - * @p{fill_fe_values} function to - * the @p{FEValues} - * class. However, since it is - * useful to use information - * about off-points without using - * @p{FEValues} objects (e.g. in - * interpolating functions to the - * finite element space), this - * function is excluded from the - * abovementioned one. - * - * The function assumes that the - * @p{support_points} array - * already has the right - * size. The order of points in - * the array matches that - * returned by the - * @p{cell->get_dof_indices} - * function. - * - * For one space dimension there - * is a standard implementation - * assuming equidistant - * off-points on the unit - * line. For all other - * dimensions, an overwritten - * function has to be provided. - * - * For higher order - * transformations than the - * common (bi-, tri-)linear one, - * information about the boundary - * is needed, rather than only - * the readily available - * information on the location of - * the vertices. If necessary, we - * therefore rely on the boundary - * object of which a pointer is - * stored by the triangulation. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; + * Fill the fields of + * @ref{FEFaceValues}. This function + * performs all the operations + * needed to compute the data of an + * @p{FEFaceValues} object. + * + * The same function in + * @p{mapping} must have been + * called for the same cell first! + */ + virtual void + fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData &data) const = 0; /** - * Compute the off-points of the - * finite element basis functions - * located on the face. It only - * returns the off-points of the - * trial functions which are - * located on the face, rather - * than of all basis functions, - * which is done by the - * @p{get_support_points} - * function. - * - * This function produces a - * subset of the information - * provided by the - * @p{fill_fe_face_values()} - * function. However, you should - * not try to implement this - * function using the - * abovementioned function, since - * usually that function uses - * this function to compute - * information. - * - * The function is excluded from - * the abovementioned one, since - * no information about the - * neighboring cell is needed, - * such that loops over faces - * alone are possible when using - * this function. This is useful - * for example if we want to - * interpolate boundary values to - * the finite element - * functions. If integration - * along faces is needed, we - * still need the - * @p{fill_fe_face_values} - * function. - * - * The function assumes that the - * @p{support_points} array - * already has the right - * size. The order of points in - * the array matches that - * returned by the - * @p{face->get_dof_indices} - * function. - * - * Since any implementation for - * one dimension would be - * senseless, all derived classes - * should throw an error when - * called with @p{dim==1}. - * - * Regarding information about - * the boundary, which is - * necessary for higher order - * transformations than the usual - * (bi-, tri-)linear ones, refer - * to the @p{get_support_points} - * function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const =0; - - /** - * This is the second separated function - * described in the documentation of the - * @p{fill_fe_face_values} function. It - * returns the determinants of the - * transformation from the unit face to the - * real face at the - * - * Since any implementation for one - * dimension would be senseless, all - * derived classes should throw an error - * when called with @p{dim==1}. - * - * Regarding information about the - * boundary, which is necessary for - * higher order transformations than - * the usual (bi-, tri-)linear ones, - * refer to the @p{get_support_points} - * function. - */ - virtual void get_face_jacobians (const typename DoFHandler::face_iterator &face, - const typename std::vector > &unit_points, - std::vector &face_jacobi_determinants) const =0; - - /** - * Does the same as the above - * function, except that it - * computes the Jacobi - * determinant of the - * transformation from the unit - * face to the subface of - * @p{face} with number - * @p{subface_no}. - * - * The function needs not take - * special care about boundary - * approximation, since it must - * not be called for faces at the - * boundary. - */ - virtual void get_subface_jacobians (const typename DoFHandler::face_iterator &face, - const unsigned int subface_no, - const typename std::vector > &unit_points, - std::vector &face_jacobi_determinants) const =0; - - /** - * Compute the normal vectors to - * the cell at the quadrature - * points. See the documentation - * for the - * @p{fill_fe_face_values} - * function for more details. The - * function must guarantee that - * the length of the vectors be - * one. - * - * Since any implementation for - * one dimension would be - * senseless, all derived classes - * should throw an error when - * called with @p{dim==1}. - * - * Regarding information about - * the boundary, which is - * necessary for higher order - * transformations than the usual - * (bi-, tri-)linear ones, refer - * to the @p{get_support_points} - * function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const =0; + * Fill the fields of + * @ref{FESubfaceValues}. This function + * performs all the operations + * needed to compute the data of an + * @p{FESubfaceValues} object. + * + * The same function in + * @p{mapping} must have been + * called for the same cell first! + */ + virtual void + fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_internal, + typename Mapping::InternalDataBase &fe_internal, + FEValuesData &data) const = 0; - /** - * Does the same as the above function, - * except that it refers to the - * subface @p{subface_no} of the given face. - * - * The function needs not take special care - * about boundary approximation, since it - * must not be called for faces at the - * boundary. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const =0; - /** - * Fill in the given matrix with - * the local mass matrix. The - * mass matrix must be exactly - * computed, not using a - * quadrature, which may be done - * using an equation object and - * an assembler, as is done for - * the Laplace matrix in the - * @p{MatrixTools} class for - * example. - * - * The exact integration is possible since - * an exact representation for the Jacobi - * determinant exists in all known cases of - * iso- or subparametric mappings. For - * example, usually the point in real - * space $\vec x$ referring to the point - * $\vec \xi$ on the unit cell is given - * by $\vec x = \sum_i \vec p_i \phi_i(\vec \xi)$, - * where the sum is over all basis functions - * $\phi_i$ and $\vec p_i$ are the points - * in real space where the basis function - * $\phi_i$ is located. The Jacobi - * determinant is the given by - * $|det J| = |\frac{\partial\vec x}{\partial\vec\xi}$, - * which can be evaluated in closed form. - * The mass matrix then is given by - * $m_{ij} = \int_{\hat K} \phi_i(\vec\xi) - * \phi_j(\vec\xi) |det J| d\xi$, where - * $\hat K$ is the unit cell. The integrand - * obviously is a polynom and can - * thus easily be integrated - * analytically, so the - * computation of the local mass - * matrix is reduced to the - * computation of a weighted - * evaluation of a polynom in the - * coordinates of the support - * points in real space (for - * linear mappings, these are the - * corner points, for quadratic - * mappings also the center of - * mass and the edge and face - * centers). For example, in one - * space dimension, the Jacobi - * determinant simply is $h$, the - * size of the cell, and the - * integral over the two basis - * functions can easily be - * calculated with a pen and a - * sheet of paper. The actual - * computation on this matrix - * then is simply a scaling of a - * known and constant matrix by - * $h$. - * - * The functions which override - * this one may make assumptions - * on the sign of the determinant - * if stated in the - * documentation, but should - * check for them in debug - * mode. For that purpose, an - * exception with the longish - * name - * @p{ExcJacobiDeterminantHasWrongSign} - * is declared. - * - * The function takes a - * @ref{DoFHandler} iterator, which - * provides a superset of - * information to the geometrical - * information needed for the - * computations. The additional - * data should not be used, - * however a @ref{DoFHandler} - * iterator was preferred over a - * @ref{Triangulation} iterator - * since this is what usually is - * available in places where this - * function is called. - * - * The cell matrix is assumed to - * be of the right size - * already. Functions of derived - * classes shall be implemented - * in a way as to overwrite the - * previous contents of the - * matrix, so it need not be - * necessary to clear the matrix - * before use with this function. - * - * Some finite elements, - * especially in higher - * dimensions, may choose not to - * implement this function - * because the computational - * effort is growing rapidly, for - * the in-time computation of the - * matrix as well as for the - * setting up using a script. For - * example, the size of the - * generated @p{C++} code for the - * local mass matrix in 3d is - * 4.383.656 bytes already for - * the trilinear element. Higher - * order elements would produce - * even larger code. - * - * In the case of a finite - * element chosing not to - * implement the functionality of - * this function, that function - * is supposed to throw an - * exception of class - * @p{ExcComputationNotUseful} - * declared in this class; you - * can catch this exception and - * compute the mass matrix by - * quadrature instead. Finite - * element classes not - * implementing this function are - * assumed to state this in their - * documentation. - * - * Regarding information about - * the boundary, which is - * necessary for higher order - * transformations than the usual - * (bi-, tri-)linear ones, refer - * to the @p{get_support_points} - * function. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const =0; + public: /** - * Number of base elements in a - * mixed discretization. This - * function returns 1 for simple - * elements. + * Number of base elements in a mixed + * discretization. This function returns + * 1 for simple elements. */ virtual unsigned int n_base_elements () const; /** * Access to base element * objects. By default, - * @p{base_element(0)} is - * @p{this}. This function is - * overloaded by system elements - * to allow access to the - * different components of mixed + * #base_element(0)# is #this#. + * This function is overloaded by + * system elements to allow + * access to the different + * components of mixed * discretizations. */ virtual const FiniteElement& base_element (const unsigned int index) const; /** - * Exception + * Determine an estimate for the + * memory consumption (in bytes) + * of this object. + * + * This function is made virtual, + * since finite element objects + * are usually accessed through + * pointers to their base class, + * rather than the class itself. */ - DeclException0 (ExcPureFunctionCalled); + virtual unsigned int memory_consumption () const; + /** * Exception */ @@ -1842,171 +279,8 @@ class FiniteElement : public FiniteElementBase << "The computation you required from this function is not " << "feasible or not probable in the present dimension (" << arg1 << ") because it would be prohibitively expensive."); -}; - -/* ------------------------------- Inline functions ----------------------- */ - - -template -inline -unsigned int -FiniteElementData::n_dofs_per_vertex () const -{ - return dofs_per_vertex; }; - -template -inline -unsigned int -FiniteElementData::n_dofs_per_line () const -{ - return dofs_per_line; -}; - - - -template -inline -unsigned int -FiniteElementData::n_dofs_per_quad () const -{ - return dofs_per_quad; -}; - - - -template -inline -unsigned int -FiniteElementData::n_dofs_per_hex () const -{ - return dofs_per_hex; -}; - - - -template -inline -unsigned int -FiniteElementData::n_dofs_per_face () const -{ - return dofs_per_face; -}; - - - -template -inline -unsigned int -FiniteElementData::n_dofs_per_cell () const -{ - return dofs_per_cell; -}; - - - -template -inline -unsigned int -FiniteElementData::n_components () const -{ - return components; -}; - - - -template -inline -unsigned int -FiniteElementData::n_transform_functions () const -{ - return transform_functions; -}; - - - -template -inline -unsigned int -FiniteElementBase::component_to_system_index (unsigned int component, - unsigned int component_index) const -{ - Assert(component -inline -std::pair -FiniteElementBase::system_to_component_index (unsigned int index) const -{ - Assert(index < system_to_component_table.size(), - ExcIndexRange(index, 0, system_to_component_table.size())); - return system_to_component_table[index]; -} - - - -template -inline -unsigned int -FiniteElementBase::face_component_to_system_index (unsigned int component, - unsigned int component_index) const -{ - Assert(component -inline -std::pair -FiniteElementBase::face_system_to_component_index (unsigned int index) const -{ - Assert(index < face_system_to_component_table.size(), - ExcIndexRange(index, 0, face_system_to_component_table.size())); - return face_system_to_component_table[index]; -} - - - -template -inline -unsigned int -FiniteElementBase::component_to_base (unsigned int index) const -{ - if (n_components() == 1) - return 0; - Assert(index < component_to_base_table.size(), - ExcIndexRange(index, 0, component_to_base_table.size())); - return component_to_base_table[index]; -} - - - -template -inline -bool -FiniteElementBase::restriction_is_additive (const unsigned int component) const -{ - Assert(component +#include +#include +#include +#include +#include +#include +#include + +template class FESystem; + +/** + * Dimension independent data for finite elements. See the derived + * class @ref{FiniteElementBase} class for information on its use. All + * its data are available to the implementation in a concrete finite + * element class. + * + * Remark on a change in implementation: it is now wrong to cast a + * pointer to @ref{FiniteElement} to a pointer to + * @p{FiniteElementData} and delete it. The virtual destructor has + * been moved up. In a later version, @p{FiniteElementData} and + * @ref{FiniteElementBase} should be private base classes of + * @ref{FiniteElement}. + * + * @author Wolfgang Bangerth, Guido Kanschat, 1998, 1999, 2000, 2001 + */ +template +class FiniteElementData +{ + public: + /** + * Number of degrees of freedom on + * a vertex. + */ + const unsigned int dofs_per_vertex; + + /** Number of degrees of freedom + * on a line. + */ + const unsigned int dofs_per_line; + + /** Number of degrees of freedom + * on a quadrilateral. + */ + const unsigned int dofs_per_quad; + + /** Number of degrees of freedom + * on a hexahedron. + */ + const unsigned int dofs_per_hex; + + /** + * First index of dof on a line. + */ + const unsigned int first_line_index; + + /** + * First index of dof on a quad. + */ + const unsigned int first_quad_index; + + /** + * First index of dof on a hexahedron. + */ + const unsigned int first_hex_index; + + /** + * First index of dof on a line for face data. + */ + const unsigned int first_face_line_index; + + /** + * First index of dof on a quad for face data. + */ + const unsigned int first_face_quad_index; + + /** + * Number of degrees of freedom on a + * face. This information is + * redundant to some fields in the + * derived classes but makes + * writing dimension independant + * programs easier. + */ + const unsigned int dofs_per_face; + + /** + * Total number of degrees of freedom + * on a cell. This information is + * redundant to some fields in the + * derived classes but makes + * writing dimension independant + * programs easier. + */ + const unsigned int dofs_per_cell; + + /** + * Number of components and dimension of + * the image space. + */ + const unsigned int components; + + /** + * Default constructor. Constructs + * an element + * which is not so useful. Checking + * @p{dofs_per_cell} is therefore a good way to + * check if something went wrong. + */ + FiniteElementData (); + + /** + * Constructor for + * all-dimensional objects. The + * numbers in @p{dofs_per_object} + * represent the numbers of DoFs + * of grid objects in + * dim-ascending order. That is, + * @p{dofs_per_object[0]=dofs_per_vertex}, + * @p{dofs_per_object[1]=dofs_per_line}, + * @p{dofs_per_object[2]=dofs_per_quad}, + * @p{dofs_per_object[3]=dofs_per_hex}. + * + * Hence this constructor requires + * @p{dofs_per_object.size()==dim+1}. + */ + FiniteElementData (const std::vector &dofs_per_object, + const unsigned int n_components); + + /** + * Return the #dofs_per_vertex#. + */ + unsigned int n_dofs_per_vertex () const; + + /** + * Return the #dofs_per_line#. + */ + unsigned int n_dofs_per_line () const; + + /** + * Return the #dofs_per_quad#. + */ + unsigned int n_dofs_per_quad () const; + + /** + * Return the #dofs_per_hex#. + */ + unsigned int n_dofs_per_hex () const; + + /** + * Return the #dofs_per_face#. + */ + unsigned int n_dofs_per_face () const; + + /** + * Return the #dofs_per_cell#. + */ + unsigned int n_dofs_per_cell () const; + + /** + * Return the #components#. + */ + unsigned int n_components () const; + + /** + * Comparison operator. It is not clear to + * me (WB) why we have to declare and implement + * this one explicitely. + */ + bool operator == (const FiniteElementData &) const; + + /** + * Exception + */ + DeclException2 (ExcDimensionMismatch, int, int, + << "used " << arg1 << "-d constructor for " << arg2 << "-d object"); +}; + + +/** + * Base class for finite elements in arbitrary dimensions. This class + * provides several fields which describe a specific finite element + * and which are filled by derived classes. It more or less only + * offers the fields and access functions which makes it possible to + * copy finite elements without knowledge of the actual type (linear, + * quadratic, etc). + * + * The implementation of this base class is split into two parts: + * those fields which are not common to all dimensions + * (#dofs_per_quad# for example are only useful for #dim>=2#) are put + * into the #FiniteElementData# class which is explicitely + * specialized for all used dimensions, while those fields which may + * be formulated in a dimension-independent way are put into the + * present class. + * + * The different matrices are initialized with the correct size, such + * that in the derived (concrete) finite element classes, their + * entries only have to be filled in; no resizing is needed. If the + * matrices are not defined by a concrete finite element, they should + * be resized to zero. This way functions using them can find out, + * that they are missing. On the other hand, it is possible to use + * finite element classes without implementation of the full + * functionality, if only part of it is needed. The functionality + * under consideration here is hanging nodes constraints and grid + * transfer, respectively. + * + * + * \subsection{Finite elements in one dimension} + * + * Finite elements in one dimension need only set the #restriction# + * and #prolongation# matrices. The constructor of this class in one + * dimension presets the #interface_constraints# matrix to have + * dimension zero. Changing this behaviour in derived classes is + * generally not a reasonable idea and you risk getting into trouble. + * + * \subsection{Finite elements in two dimensions} + * + * In addition to the fields already present in 1D, a constraint + * matrix is needed, if the finite element has node values located on + * edges or vertices. These constraints are represented by a $m\times + * n$-matrix #interface_constraints#, where $n$ is the number of + * degrees of freedom on the refined side without the corner vertices + * (those dofs on the middle vertex plus those on the two lines), and + * $m$ is that of the unrefined side (those dofs on the two vertices + * plus those on the line). The matrix is thus a rectangular one. + * + * The mapping of the dofs onto the indices of the matrix on the + * unrefined side is as follows: let $d_v$ be the number of dofs on a + * vertex, $d_l$ that on a line, then $m=0...d_v-1$ refers to the dofs + * on vertex zero of the unrefined line, $m=d_v...2d_v-1$ to those on + * vertex one, $m=2d_v...2d_v+d_l-1$ to those on the line. + * + * Similarly, $n=0...d_v-1$ refers to the dofs on the middle vertex of + * the refined side (vertex one of child line zero, vertex zero of + * child line one), $n=d_v...d_v+d_l-1$ refers to the dofs on child + * line zero, $n=d_v+d_l...d_v+2d_l-1$ refers to the dofs on child + * line one. Please note that we do not need to reserve space for the + * dofs on the end vertices of the refined lines, since these must be + * mapped one-to-one to the appropriate dofs of the vertices of the + * unrefined line. + * + * It should be noted that it is not possible to distribute a constrained + * degree of freedom to other degrees of freedom which are themselves + * constrained. Only one level of indirection is allowed. It is not known + * at the time of this writing whether this is a constraint itself. + * + * \subsection{Finite elements in three dimensions} + * + * For the interface constraints, almost the same holds as for the 2D case. + * The numbering for the indices $m$ on the mother face is obvious and keeps + * to the usual numbering of degrees of freedom on quadrilaterals. + * + * The numbering of the degrees of freedom on the interior of the refined + * faces for the index $n$ is as follows: let $d_v$ and $d_l$ be as above, + * and $d_q$ be the number of degrees of freedom per quadrilateral (and + * therefore per face), then $n=0...d_v-1$ denote the dofs on the vertex at + * the center, $n=d_v...5d_v-1$ for the dofs on the vertices at the center + * of the bounding lines of the quadrilateral, + * $n=5d_v..5d_v+4*d_l-1$ are for the degrees of freedom on + * the four lines connecting the center vertex to the outer boundary of the + * mother face, $n=5d_v+4*d_l...5d_v+4*d_l+8*d_l-1$ for the degrees of freedom + * on the small lines surrounding the quad, + * and $n=5d_v+12*d_l...5d_v+12*d_l+4*d_q-1$ for the dofs on the + * four child faces. Note the direction of the lines at the boundary of the + * quads, as shown below. + * + * The order of the twelve lines and the four child faces can be extracted + * from the following sketch, where the overall order of the different + * dof groups is depicted: + * \begin{verbatim} + * *--13--3--14--* + * | | | + * 16 20 7 19 12 + * | | | + * 4--8---0--6---2 + * | | | + * 15 17 5 18 11 + * | | | + * *--9---1--10--* + * \end{verbatim} + * The numbering of vertices and lines, as well as the numbering of + * children within a line is consistent with the one described in + * @ref{Triangulation}. Therefore, this numbering is seen from the + * outside and inside, respectively, depending on the face. + * + * If of the cells adjacent to one line more than one is refined and + * there is at least one unrefined cell, then the degrees of freedom + * on the refined line are constrained from two cells. For example, + * consider the cell behind the face shown above is refined, while the + * one in front of the face is not refined; then the dofs on the lines + * numbered 9 and 10 are constrained. If there are two more cells + * below the ones just introduced, with a common face right below the + * one shown, and of these is one refined and one unrefined one, then + * the degrees on the two mentioned small lines are constrained a + * second time. Since these constraints must be unique, it follows + * that the constraints for the degrees of freedom on refined lines + * may only be in terms of the degrees of freedom on the unrefined + * line, not in terms of the other degrees of freedom on a face. + * + * Since the handling of constraints on degrees of freedom is mostly done + * by the #ConstraintMatrix# class, this class checks whether the constraints + * introduced from the two sides are unique; it is able to handle the fact + * that the constraints for some of the dofs are entered more than once. + * + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2001 + */ +template +class FiniteElementBase : public Subscriptor, + public FiniteElementData +{ + public: + /** + * Basis class for internal data. + * Adds data for second derivatives to + * @ref{Mapping::InternalDataBase} + * + * @author Guido Kanschat, 2001 + */ + class InternalDataBase : public Mapping::InternalDataBase + { + public: + /** + * Initialize @ref{FEValues} + * pointers for given element. + */ + void initialize (const FiniteElement* element, + const Mapping& mapping, + const Quadrature& quadrature); + + /** + * Destructor. Needed to avoid + * memory leaks with difference + * quotients. + */ + ~InternalDataBase (); + + /** + * Storage for @p{FEValues} + * objects needed to + * approximate second + * derivatives. + * + * The ordering is @p{p+hx}, + * @p{p+hy}, @p{p+hz}, + * @p{p-hx}, @p{p-hy}, + * @p{p-hz}, where unused + * entries in lower dimensions + * are missing. + */ + std::vector*> differences; + + + }; + + /** + * Construct an object of this type. + * You have to set the + * matrices explicitely after calling + * this base class' constructor. + */ + FiniteElementBase (const FiniteElementData &fe_data, + const std::vector &restriction_is_additive_flags); + + /** + * Compute second differences. + */ + void compute_2nd (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int offset, + typename Mapping::InternalDataBase &mapping_internal, + InternalDataBase& fe_internal, + FEValuesData& data) const; + + /** + * Projection from a fine grid + * space onto a coarse grid + * space. If this projection + * operator is associated with a + * matrix @p{P}, then the + * restriction of this matrix + * @p{P_i} to a single child cell + * is returned here. + * + * The matrix @p{P} is the + * concatenation or the sum of + * the cell matrices @p{P_i}, + * depending on the + * @p{restriction_is_additive_flags} + * given to the constructor. This + * distinguishes interpolation + * (concatenation) and projection + * with respect to scalar + * products (summation). + * + * Row and column indices are + * related to coarse grid and + * fine grid spaces, + * respectively, consistent with + * the definition of the + * associated operator. + * + * If projection matrices are not + * implemented in the derived + * finite element class, this + * function aborts with + * @p{ExcProjectionVoid}. + */ + const FullMatrix & restrict (const unsigned int child) const; + + /** + * Embedding matrix between grids. + * + * The identity operator from a + * coarse grid space into a fine + * grid space is associated with + * a matrix @p{P}. The + * restriction of this matrix @p{P_i} to + * a single child cell is + * returned here. + * + * The matrix @p{P} is the + * concatenation, not the sum of + * the cell matrices + * @p{P_i}. That is, if the same + * non-zero entry @p{j,k} exists + * in in two different child + * matrices @p{P_i}, the value + * should be the same in both + * matrices and it is copied into + * the matrix @p{P} only once. + * + * Row and column indices are + * related to fine grid and + * coarse grid spaces, + * respectively, consistent with + * the definition of the + * associated operator. + * + * These matrices are used by + * routines assembling the + * prolongation matrix for + * multi-level methods. Upon + * assembling the transfer matrix + * between cells using this + * matrix array, zero elements in + * the prolongation matrix are + * discarded and will not fill up + * the transfer matrix. + * + * If projection matrices are not + * implemented in the derived + * finite element class, this + * function aborts with + * @p{ExcEmbeddingVoid}. + */ + const FullMatrix & prolongate (const unsigned int child) const; + + /** + * Return a readonly reference to the + * matrix which describes the constraints + * at the interface between a refined and + * an unrefined cell. + * + * The matrix is obviously empty in only + * one space dimension, since there are no + * constraints then. + */ + const FullMatrix & constraints () const; + + /** + * Comparison operator. We also check for + * equality of the constraint matrix, + * which is quite an expensive operation. + * Do therefore + * use this function with care, if possible + * only for debugging purposes. + * + * Since this function is not that important, + * we avoid an implementational question + * about comparing arrays and do not compare + * the matrix arrays @p{restriction} and + * @p{prolongation}. + */ + bool operator == (const FiniteElementBase &) const; + + /** + * Compute system index from components. + */ + unsigned int component_to_system_index (unsigned int component, + unsigned int component_index) const; + + /** + * Compute component and index from + * system index. + * + * Return value contains first + * component and second index in + * component. + */ + std::pair + system_to_component_index (unsigned int index) const; + + /** + * Compute system index from components on a face. + */ + unsigned int face_component_to_system_index (unsigned int component, + unsigned int component_index) const; + + /** + * Compute component and index from system + * index for a face. + * + * Return value contains first + * component and second index in + * component. + */ + std::pair + face_system_to_component_index (unsigned int index) const; + + /** + * The base element establishing a + * component. + * + * This table converts a + * component number to the + * @p{base_element} number. While + * component information contains + * multiplicity of base elements, + * the result allows access to + * shape functions of the base + * element. + */ + unsigned int component_to_base(unsigned int index) const; + + /** + * Access the @p{restriction_is_additive_flag} + * field. See there for more information on + * its contents. + */ + bool restriction_is_additive (const unsigned int component) const; + + /** + * Determine an estimate for the + * memory consumption (in bytes) + * of this object. + * + * This function is not + * virtual. Use a + * @ref{FiniteElement} object to + * get the actual size of a + * concrete element. + */ + unsigned int memory_consumption () const; + + /** + * Exception + */ + DeclException0 (ExcEmbeddingVoid); + + /** + * Exception + */ + DeclException0 (ExcProjectionVoid); + + /** + * Exception + */ + DeclException0 (ExcConstraintsVoid); + + /** + * Exception + */ + DeclException2 (ExcWrongInterfaceMatrixSize, + int, int, + << "The interface matrix has a size of " << arg1 + << "x" << arg2 + << ", which is not reasonable in the present dimension."); + + protected: + /** + * Array of projection + * matrices. See @p{restrict()} + * above. + * + * Matrices in this array are + * automatically initialized to + * correct size. If the derived + * finite element class does not + * implement these matrices, they + * should be resized to zero + * size. + */ +#if !((__GNUC__==2) && (__GNUC_MINOR__==95)) + FullMatrix restriction[GeometryInfo::children_per_cell]; +#else + FullMatrix restriction[1 << dim]; +#endif + + /** + * Array of embedding + * matrices. See @p{prolongate()} + * above. + * + * Matrices in this array are + * automatically initialized to + * correct size. If the derived + * finite element class does not + * implement these matrices, they + * should be resized to zero + * size. + */ +#if ! ((__GNUC__==2) && (__GNUC_MINOR__==95)) + FullMatrix prolongation[GeometryInfo::children_per_cell]; +#else + FullMatrix prolongation[1 << dim]; +#endif + /** + * Specify the constraints which + * the dofs on the two sides of a + * cell interface underly if the + * line connects two cells of + * which one is refined once. + * + * For further details see the + * general description of the + * derived class. + * + * This field is obviously + * useless in one space dimension + * and has there a zero size. + */ + FullMatrix interface_constraints; + + /** + * Map between linear dofs and + * component dofs. + */ + std::vector< std::pair > system_to_component_table; + + /** + * Map between linear dofs and + * component dofs on face. + */ + std::vector< std::pair > face_system_to_component_table; + + /** + * Map between component and + * linear dofs. + */ + std::vector< std::vector > component_to_system_table; + + /** + * Map between component and + * linear dofs on a face. + */ + std::vector< std::vector > face_component_to_system_table; + + /** + * The base element establishing + * a component. + * + * This table converts a + * component number to the + * @p{base_element} number. While + * component information contains + * multiplicity of base elements, + * the result allows access to + * shape functions of the base + * element. + */ + std::vector component_to_base_table; + + /** + * Projection matrices are + * concatenated or summed up. + * + * This flags decides on how the + * projection matrices of the + * children of the same father + * are put together to one + * operator. The possible modes + * are concatenation and + * summation. + * + * If the projection is defined + * by an interpolation operator, + * the child matrices are + * concatenated, i.e. values + * belonging to the same node + * functional are identified and + * enter the interpolated value + * only once. In this case, the + * flag must be @p{false}. + * + * For projections with respect + * to scalar products, the child + * matrices must be summed up to + * build the complete matrix. The + * flag should be @p{true}. + * + * There is one flag per + * component in vector valued + * elements. + */ + const std::vector restriction_is_additive_flags; + + /** + * Allow the FESystem class to + * access the restriction and + * prolongation matrices + * directly. Hence, FESystem has + * the possibility to see if + * these matrices are initialized + * without accessing these + * matrices through the + * @p{restrict} and + * @p{prolongate} functions. This + * is important as these + * functions include assertions + * that throw if the matrices are + * not already initialized. + */ + friend class FESystem; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_vertex () const +{ + return dofs_per_vertex; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_line () const +{ + return dofs_per_line; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_quad () const +{ + return dofs_per_quad; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_hex () const +{ + return dofs_per_hex; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_face () const +{ + return dofs_per_face; +}; + + +template +inline +unsigned int +FiniteElementData::n_dofs_per_cell () const +{ + return dofs_per_cell; +}; + + +template +inline +unsigned int +FiniteElementData::n_components () const +{ + return components; +}; + + +template +inline +unsigned int +FiniteElementBase::component_to_system_index (unsigned int component, + unsigned int component_index) const +{ + Assert(component +inline +std::pair +FiniteElementBase::system_to_component_index (unsigned int index) const +{ + Assert(index < system_to_component_table.size(), + ExcIndexRange(index, 0, system_to_component_table.size())); + return system_to_component_table[index]; +} + + +template +inline +unsigned int +FiniteElementBase::face_component_to_system_index (unsigned int component, + unsigned int component_index) const +{ + Assert(component +inline +std::pair +FiniteElementBase::face_system_to_component_index (unsigned int index) const +{ + Assert(index < face_system_to_component_table.size(), + ExcIndexRange(index, 0, face_system_to_component_table.size())); + return face_system_to_component_table[index]; +} + + +template +inline +unsigned int +FiniteElementBase::component_to_base (unsigned int index) const +{ + if (n_components() == 1) + return 0; + Assert(index < component_to_base_table.size(), + ExcIndexRange(index, 0, component_to_base_table.size())); + return component_to_base_table[index]; +} + + +template +inline +bool +FiniteElementBase::restriction_is_additive (const unsigned int component) const +{ + Assert(component +#include + +template class TensorProductPolynomials; +template class MappingQ; + +/** + * Discontinuous tensor product elements based on equidistant support points. + */ +template +class FE_DGQ : public FiniteElement +{ + public: + /** + * Constructor for tensor product + * polynomials of degree @p{k}. + */ + FE_DGQ (unsigned int k); + /** + * Destructor. + */ + ~FE_DGQ (); + + /** + * Return the support points of the + * trial functions on the unit cell. + * + * The order of points in + * the array matches that returned by + * the #cell->get_dof_indices# function, but: + * + * If the shape functions are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. This is the standard behavior, + * if the function is not overloaded. + */ + virtual void get_unit_support_points (std::vector > &) const; + + /** + * Return the support points of + * the trial functions on the + * first face of the unit cell. + * + * The order of points in + * the array matches that returned by + * the #cell->get_dof_indices# function. + * + * If the shape functions are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. This is the standard behavior, + * if the function is not overloaded. + */ + virtual void get_unit_face_support_points (std::vector > &) const; + + /** + * Determine an estimate for the + * memory consumption (in bytes) + * of this object. + * + * This function is made virtual, + * since finite element objects + * are usually accessed through + * pointers to their base class, + * rather than the class itself. + */ + virtual unsigned int memory_consumption () const; + + protected: + + /** + * @p{clone} function instead of + * a copy constructor. + * + * This function is needed by the + * constructors of @p{FESystem}. + */ + virtual FiniteElement *clone() const; + + /** + * Prepare internal data + * structures and fill in values + * independent of the cell. + */ + virtual Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Mapping& mapping, + const Quadrature& quadrature) const ; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const ; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const ; + + private: + /** + * Only for internal use. Its + * full name is + * @p{get_dofs_per_object_vector} + * function and it creates the + * @p{dofs_per_object} vector that is + * needed within the constructor to + * be passed to the constructor of + * @p{FiniteElementData}. + */ + static std::vector get_dpo_vector(unsigned int degree); + + /** + * Compute flags for initial update only. + */ + virtual UpdateFlags update_once (UpdateFlags flags) const; + + /** + * Compute flags for update on each cell. + */ + virtual UpdateFlags update_each (UpdateFlags flags) const; + + /** + * Compute support points, only + * for @p{degree>0}. + */ + static void compute_support_points (std::vector >& support_points, + unsigned int degree); + + /** + * Compute renumbering for rotation + * of degrees of freedom. + */ + void rotate_indices (std::vector& indices, + const char direction = 'y') const; + + /** + * Degree of the polynomials. + */ + const unsigned int degree; + + /** + * Vector of one-dimensional + * polynomials used. + */ + std::vector > polynomials; + + /** + * Implementation of the tensor + * product of polynomials. + */ + TensorProductPolynomials* poly; + + /** + * Fields of cell-independent data. + */ + class InternalData : public FiniteElementBase::InternalDataBase + { + public: + /** + * Destructor. Needed to avoid + * memory leaks with difference + * quotients. + */ + ~InternalData (); + + /** + * Array with shape function values + * in quadrature points. There is one + * vector for each shape function, containing + * values for each quadrature point. + */ + std::vector > shape_values; + /** + * Array with shape function gradients + * in quadrature points. There is one + * vector for each shape function, containing + * values for each quadrature point. + */ + std::vector > > shape_gradients; + + /** + * Storage for @p{FEValues} + * objects needed to + * approximate second + * derivatives. + * + * The ordering is @p{p+hx}, + * @p{p+hy}, @p{p+hz}, + * @p{p-hx}, @p{p-hy}, + * @p{p-hz}, where unused + * entries in lower dimensions + * are missing. + */ + std::vector*> differences; + }; + + /** + * Allow access from other dimensions. + */ + template friend class FE_DGQ; + + /** + * Allows @p{MappingQ} class to + * access to build_renumbering + * function. + */ + friend class MappingQ; +}; + +#endif diff --git a/deal.II/deal.II/include/fe/fe_lib.criss_cross.h b/deal.II/deal.II/include/fe/fe_lib.criss_cross.h deleted file mode 100644 index f11c685f0d..0000000000 --- a/deal.II/deal.II/include/fe/fe_lib.criss_cross.h +++ /dev/null @@ -1,384 +0,0 @@ -//---------------------------- fe_lib.criss_cross.h --------------------------- -// Version: $Name$ -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.criss_cross.h --------------------------- -#ifndef __deal2__fe_lib_criss_cross_h -#define __deal2__fe_lib_criss_cross_h - - -#include -#include -#include - - -/** - * This class implements a rather unusual macro element, the so-called - * criss-cross element. Its purpose is mostly to demonstrate the absence - * of superconvergence effects on triangular meshes where at each vertex - * more or less than six elements meet, but never exactly six. - * - * The construction of the element is best explained in 2d. Consider a - * quadrilateral with basis functions at each vertex and one at the - * crossing-point of the two diagonals. The element is divided by the - * diagonals into four triangles and assume that each vertex basis - * function has support only on the two triangles adjacent to the - * respective vertex and is constant zero on the other two triangles; - * they are linear on each of the triangles and globally continuous. - * The center basis function lives on each of the four triangles, is - * linear on each triangles and vanishes at the faces of the quadrilateral. - * - * Now, on the unit element, these basis functions are the same as for - * a triangular trial space, namely the class of ${\cal P}_1$ Lagrange - * elements. Due to the arrangement of the four triangles on the - * quadrilateral, it is clear that considering the whole triangulation - * of the domain, always four triangles meet at the points which - * correspond with the centers of the quadrilaterals and $2*s$ triangles - * meet at the vertices of the quadrilaterals, if $s$ is the number of - * quadrilaterals meeting there. Thus, in most cases the number of - * triangles meeting are four or eight, which effectively destroys - * superconvergence at nodes. - * - * This element is not quite equivalent from beginning to the linear - * triangular elements. The reason for this is that if we use a bilinear - * mapping of the unit quadrilateral to the real cell, the diagonals will - * in general not be straight lines. Therefore, the shape functions will - * in general not be linear on the real cell, unlike for the linear - * triangular element, which uses a linear mapping. The missing linearity - * makes assemblage of matrices a bit more complicated, since the gradient - * is not constant and we need more than one quadrature point, as well - * as some other subtle difficulties. This problem can, however, be cured - * using a trick: the usual transformation from unit coordinates $\vec\xi$ - * to real coordinates $\vec x(\vec\xi)$ looks like - * $$ - * \vec x(\vec\xi) = \sum_{i=0}^3 \phi_i^L(\vec\xi) \vec x_i - * $$ - * with $\phi_i^L$ being the bilinear basis functions associated with the - * vertices and $\vec x_i$ being the coordinates of the vertices in real - * space. Now, we could also choose - * $$ - * \vec x(\vec\xi) = \sum_{i=0}^4 \phi_i(\vec\xi) \vec x_i - * $$ - * with the basis functions $\phi_i$ of this element, the four vertices - * in real space $\vec x_0..\vec x_3$ and an interior point in real space - * $\vec x_4$. We can choose the interior point quite arbitrarily and it - * will become clear in a moment how we have to do so. First let us note - * that because the vertex basis functions are linear on the faces, - * because they vanish on the two faces not adjacent to the associated - * vertex and because the center basis function vanishes at the four - * faces, the four sides of the unit cell are mapped to straight lines - * in real space, just like for the bilinear mapping. - * - * Now, to ensure that the mapping of each of the four triangles to the - * real space is linear, we have to require that the two diagonals are - * mapped to straight lines. One necessary condition for this is, that the - * center point of the unit cell is mapped to the crossing point of the - * two diagonals in real space. Therefore, we choose $\vec x_4$ to be - * this point. Then we note, that because the vertex basis functions vanish - * on the diagonal not through the vertex and are constant zero beyond that, - * the mapping of the line from the center to a vertex is described entirely - * by the basis function of that vertex and the center basis function; but - * because they both are linear on that line, the line is also a straight - * one in real space. This proves that by this construction of the mapping - * between unit and real cell, the mapping of each of the four triangles - * is linear (note that this does not hold for the whole element; the - * mapping of the quadrilaterals is only piecewise linear and globally - * continuous). It also proves that the trial space using this element - * is equivalent to the trial space using triangles and linear elements. - * - * Since in one space dimension, this element equals two linear elements, - * i.e. a linear ansatz on a mesh once more refined than the present one, - * this element is not implemented for one dimension. There may be an - * analogue to the criss-cross element in more than two space dimensions, - * but it is not implemented at present. - * - * As stated above, the element is not really a good one. It may, however, - * serve to study superconvergence effects and also to satisfy the author's - * curiosity. At least for the first of these two reasons, it is better - * suited than using a genuine triangulation of the domain (i.e. using real - * triangles rather than subdividing quadrilaterals as shown above), since - * the construction of triangulations with four or eight cells meeting at - * each vertex is certainly not feasible other than by hand, while the - * decomposition of a domain using quadrilaterals is easier. - * - * - * @sect2{Hanging nodes} - * - * Hanging nodes are handled exactly like for any other element. It should - * however be noted that the support of basis functions get quite - * complicated in the presence of hanging nodes, as the following figure - * depicts: - * @begin{verbatim} - * *-----------------*--------*---- - * | /|\ | - * | /..|.\ | - * | /....|...\ | - * | /......|.....\ | - * | /.......|.......\| - * | /.........*--------*---- - * | /..........|......./| - * | /............|....../ | - * | /.............|..../ | - * | /...............|.....\ | - * |/................|.......\| - * *-----------------o--------*----- - * @end{verbatim} - * The dotted area is the support of the basis function associated with the - * bottom middle vertex (denoted by @p{o}) after the hanging node in the center - * of the `picture' was eliminated. This strange structure of the support - * should not pose too many problems in practice, it is only note here for - * completeness and for curiosity. - * - * - * @sect2{Experience with the criss-cross element} - * - * Experience is that the error for the criss cross element shows - * the same convergence rate as the linear Lagrange element ($h^2$ for the - * $L^2$ error, $h$ for the $H^1$ error). The $L^2$ error is about the same - * size for the same number of elements as for the linear element; since - * the criss-cross elements has about twice as many degrees of freedom as - * the linear element for the same triangulation, the $L^2$ error really - * is about twice as large as a function of the number of degrees of freedom. - * - * Converse to that, the $H^1$ error is about a factor of 1.2 smaller for - * the same number of degrees of freedoms. - * - * Apart from all this data, it must not be forgotten that we cannot - * expect superconvergence neither in the Gauss points nor in the vertices. - * Thus we may improve the accuracy of the solution obtained with the linear - * element by a postprocess, while we can't do so for the criss-cross element. - * - * All given data refer to a Poisson equation with nonhomogeneous boundary - * values on the unit disk (resp. a triangulation of that) and hanging nodes. - * - * - * @sect2{Using quadrature formulae for this element} - * - * When using one of the usual quadrature formulae, a common problem is - * that some of the quadrature points lie on the interfaces of the - * triangles. For this reason, there is a family of quadrature formulae - * defined below, names @ref{QCrissCross1} and higher order, which - * resemble the quadrature formulae used on triangular domains, but - * taken four-fold, i.e. for each of the four subtriangles. - * - * - * @author Wolfgang Bangerth, 1998 - */ -template -class FECrissCross : public FiniteElement -{ - public: - /** - * Constructor - */ - FECrissCross (); - - /** - * Transforms the point @p{p} on - * the unit cell to the point - * @p{p_real} on the real cell - * @p{cell} and returns @p{p_real}. - */ - virtual Point transform_unit_to_real_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - - /** - * Transforms the point @p{p} on - * the real cell to the point - * @p{p_unit} on the unit cell - * @p{cell} and returns @p{p_unit}. - */ - virtual Point transform_real_to_unit_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - * - * The second derivatives are zero almost - * everywhere for this element; however, - * they are singular at the diagonals, so - * when trying to use this tensor, you - * should take special care and you may - * need to do some evaluation by hand. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - * Here, the (bi-)linear basis functions - * are meant, which are used for the - * computation of the transformation from - * unit cell to real space cell. - */ - virtual double shape_value_transform (const unsigned int i, - const Point &p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - * Here, the (bi-)linear basis functions - * are meant, which are used for the - * computation of the transformation from - * unit cell to real space cell. - */ - virtual Tensor<1,dim> shape_grad_transform (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * In two spatial dimensions, this function - * simply returns the length of the face. - */ - virtual void get_face_jacobians (const typename DoFHandler::face_iterator &face, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * In two spatial dimensions, this function - * simply returns half the length of the - * whole face. - */ - virtual void get_subface_jacobians (const typename DoFHandler::face_iterator &face, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const; - - /** - * Return the normal vectors to the - * face with number @p{face_no} of @p{cell}. - * - * For linear finite elements, this function - * is particularly simple since all normal - * vectors are equal and can easiliy be - * computed from the direction of the face - * without using the transformation (Jacobi) - * matrix, at least for two dimensions. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; - - /** - * Return the normal vectors to the - * subface with number @p{subface_no} of - * the face with number @p{face_no} of @p{cell}. - * - * For linear finite elements, this function - * is particularly simple since all normal - * vectors are equal and can easiliy be - * computed from the direction of the face - * without using the transformation (Jacobi) - * matrix, at least for two dimensions. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * For one dimensional elements, this - * function simply passes through to - * the one implemented in the base class. - * For higher dimensional finite elements - * we use multilinear mappings. - */ - virtual void fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grad_transform) const; - - DeclException0 (ExcNotUseful); -}; - - - -/** - * Quadrature formula for the criss-cross element. This quadrature - * formula uses one point at the barycenter of each of the four subtriangles. - * - * For the same reason as for the criss-cross element itself, this - * formula is not implemented for one space dimension. - */ -template -class QCrissCross1 : public Quadrature -{ - public: - QCrissCross1 (); - - DeclException0 (ExcNotUseful); -}; - - -#endif diff --git a/deal.II/deal.II/include/fe/fe_lib.dg.h b/deal.II/deal.II/include/fe/fe_lib.dg.h index 2a61782136..44403ed0aa 100644 --- a/deal.II/deal.II/include/fe/fe_lib.dg.h +++ b/deal.II/deal.II/include/fe/fe_lib.dg.h @@ -1,238 +1,59 @@ -//---------------------------- fe_lib.dg.h --------------------------- +//--------------------------------------------------------------- +// $Id$ // Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer // to the file deal.II/doc/license.html for the text and // further information on this license. // -//---------------------------- fe_lib.dg.h --------------------------- +//--------------------------------------------------------------- #ifndef __deal2__fe_lib_dg_h #define __deal2__fe_lib_dg_h -#include +#include -#define FEDGConstant FEDG_Q0 -#define FEDGLinear FEDG_Q1 -#define FEDGQuadraticSub FEDG_Q2 -#define FEDGCubicSub FEDG_Q3 -#define FEDGQuarticSub FEDG_Q4 -/** - * Define a constant discontinuous finite element in @p{dim} - * space dimensions, along with (bi-, tri-)linear - * transforms from the unit cell to the real cell. - * @author Ralf Hartmann, 1998 - */ -template -class FEDG_Q0 : public FEQ1Mapping +template class FEDG_Q0: public FE_DGQ { public: - /** - * Constructor - */ - FEDG_Q0 (); - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - * - * For linear elements, all second - * derivatives on the unit cell are zero. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; + FEDG_Q0(): FE_DGQ(0) + {}; }; -/** - * Define a (bi-, tri-, etc)linear finite element in @p{dim} space dimensions, - * along with (bi-, tri-)linear (therefore isoparametric) transforms from the - * unit cell to the real cell allowing discontinuous Galerkin methods. - * - * - * This class is derived from and provides substantially the same - * as the @p{FEQ1} class. The only difference is the new constructor that - * calls @p{FEQ1::FEQ1(const int)}, the protected constructor of the - * @p{FEQ1} class using a @p{FiniteElement} with no dofs in the vertices and - * $2^d$ dofs per cell. As now the cells do not share any vertex-dof with - * a neighboring cell the $2^d$ dofs per cell can be choosen independently not - * needing any constraints and allowing the use of discontinuous Galerkin - * methods. Although the basis functions now are not longer associated - * with the vertices but with the cell they retain their shape. As already - * explained no constraint matrices needed to be implemented. - * To use this element you need to think about the jump terms in your - * weak formulation of your discontinuous Galerkin scheme. - * @author Ralf Hartmann, 1998 - */ -template -class FEDG_Q1 : public FEQ1 +template class FEDG_Q1: public FE_DGQ { public: - /** - * Constructor - */ - FEDG_Q1(); - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; + FEDG_Q1(): FE_DGQ(1) + {}; }; -/** - * Define a (bi-, tri-, etc)quadratic finite element in @p{dim} space dimensions, - * along with (bi-, tri-)linear transforms from the - * unit cell to the real cell allowing discontinuous Galerkin methods. - * - * This class is derived from and provides substantially the same - * as the @p{FEQ2} class. The only difference is the new constructor that - * calls @p{FEQ2::FEQ2(const int)}, the protected constructor of the - * @p{FEQ2} class using a @p{FiniteElement} with no dofs in the vertices, no dofs on the lines and - * $3^d$ dofs per cell. As now the cells do not share any vertex-dof with - * a neighboring cell the $3^d$ dofs per cell can be choosen independently not - * needing any constraints and allowing the use of discontinuous Galerkin - * methods. Although the basis functions now are not longer associated - * with the vertices but with the cell they retain their shape. As already - * explained no constraint matrices needed to be implemented. - * To use this element you need to think about the jump terms in your - * weak formulation of your discontinuous Galerkin scheme. - * @author Ralf Hartmann, 1998 - */ -template -class FEDG_Q2 : public FEQ2 +template class FEDG_Q2: public FE_DGQ { public: - /** - * Constructor - */ - FEDG_Q2(); - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; + FEDG_Q2(): FE_DGQ(2) + {}; }; -/** - * Define a (bi-, tri-, etc)cubic finite element in @p{dim} space dimensions, - * along with (bi-, tri-)linear transforms from the - * unit cell to the real cell allowing discontinuous Galerkin methods. - * - * This class is derived from and provides substantially the same - * as the @p{FEQ3} class. The only difference is the new constructor that - * calls @p{FEQ3::FEQ3(const int)}, the protected constructor of the - * @p{FEQ3} class using a @p{FiniteElement} with no dofs in the vertices, no dofs on the lines and - * $4^d$ dofs per cell. As now the cells do not share any vertex-dof with - * a neighboring cell the $4^d$ dofs per cell can be choosen independently not - * needing any constraints and allowing the use of discontinuous Galerkin - * methods. Although the basis functions now are not longer associated - * with the vertices but with the cell they retain their shape. As already - * explained no constraint matrices needed to be implemented. - * To use this element you need to think about the jump terms in your - * weak formulation of your discontinuous Galerkin scheme. - * @author Ralf Hartmann, 1998 - */ -template -class FEDG_Q3 : public FEQ3 +template class FEDG_Q3: public FE_DGQ { public: - /** - * Constructor - */ - FEDG_Q3(); - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; + FEDG_Q3(): FE_DGQ(3) + {}; }; -/** - * Define a (bi-, tri-, etc)quartic finite element in @p{dim} space dimensions, - * along with (bi-, tri-)linear transforms from the - * unit cell to the real cell allowing discontinuous Galerkin methods. - * - * This class is derived from and provides substantially the same - * as the @p{FEQ4} class. The only difference is the new constructor that - * calls @p{FEQ4::FEQ4(const int)}, the protected constructor of the - * @p{FEQ4} class using a @p{FiniteElement} with no dofs in the vertices, no dofs on the lines and - * $5^d$ dofs per cell. As now the cells do not share any vertex-dof with - * a neighboring cell the $5^d$ dofs per cell can be choosen independently not - * needing any constraints and allowing the use of discontinuous Galerkin - * methods. Although the basis functions now are not longer associated - * with the vertices but with the cell they retain their shape. As already - * explained no constraint matrices needed to be implemented. - * To use this element you need to think about the jump terms in your - * weak formulation of your discontinuous Galerkin scheme. - * @author Ralf Hartmann, 1998 - */ -template -class FEDG_Q4 : public FEQ4 +template class FEDG_Q4: public FE_DGQ { public: - /** - * Constructor - */ - FEDG_Q4(); - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; + FEDG_Q4(): FE_DGQ(4) + {}; }; diff --git a/deal.II/deal.II/include/fe/fe_lib.dgp.h b/deal.II/deal.II/include/fe/fe_lib.dgp.h deleted file mode 100644 index 47721332bb..0000000000 --- a/deal.II/deal.II/include/fe/fe_lib.dgp.h +++ /dev/null @@ -1,400 +0,0 @@ -//---------------------------- fe_lib.dgp.h --------------------------- -// Version: $Name$ -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.dgp.h --------------------------- -#ifndef __deal2__fe_lib_dgp_h -#define __deal2__fe_lib_dgp_h - - -/*---------------------------- fe_lib.dgp.h ---------------------------*/ - - -#include - - -/** - * Discontinuous P1-element on hypercubes. - * - * This is the implementation of a linear (sic) polynomial space on a - * d-dimensional hypercube. The shape functions are the first @p{d+1} - * of @p{1,x,y,z}. Later on, these should be exchanged for mutually - * orthogonal, preferably by changing the unit cell to $[-1,1]^d$. - * - * @author Guido Kanschat, 2000 - */ -template -class FEDG_P1 : public FEQ1Mapping -{ - public: - /** - * Constructor - */ - FEDG_P1 (); - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - * - * For linear elements, all second - * derivatives on the unit cell are zero. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); -}; - - - - -/** - * Discontinuous P2-element on hypercubes. - * - * This is the implementation of a quadratic (sic) polynomial space on a - * d-dimensional hypercube. The shape functions are those of - * @p{1,x,y,z, x*x, x*y, x*z, y*y, y*z, z*z} applying to the space - * dimension. Later on, these should be exchanged for mutually - * orthogonal, preferably by changing the unit cell to $[-1,1]^d$. - * - * @author Guido Kanschat, 2000 - */ -template -class FEDG_P2 : public FEQ1Mapping -{ - public: - /** - * Constructor - */ - FEDG_P2 (); - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); -}; - - - - -/** - * Discontinuous P3-element on hypercubes. - * - * This is the implementation of a cubic (sic) polynomial space on a - * d-dimensional hypercube. The shape functions are the basis - * polynomials spanning the space of cubic polynomials. Later on, - * they should be exchanged for mutually orthogonal, preferably by - * changing the unit cell to $[-1,1]^d$. - * - * @author Guido Kanschat, 2000 - */ -template -class FEDG_P3 : public FEQ1Mapping -{ - public: - /** - * Constructor - */ - FEDG_P3 (); - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); -}; - - - - -/** - * Discontinuous P3-element on hypercubes. - * - * This is the implementation of a quartic (sic) polynomial space on a - * d-dimensional hypercube. The shape functions are the basis - * polynomials spanning the space of cubic polynomials. Later on, - * they should be exchanged for mutually orthogonal, preferably by - * changing the unit cell to $[-1,1]^d$. - * - * @author Guido Kanschat, 2000 - */ -template -class FEDG_P4 : public FEQ1Mapping -{ - public: - /** - * Constructor - */ - FEDG_P4 (); - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on what this function does. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); -}; - - -/*---------------------------- fe_lib.dgp.h ---------------------------*/ - -#endif -/*---------------------------- fe_lib.dgp.h ---------------------------*/ - - diff --git a/deal.II/deal.II/include/fe/fe_lib.lagrange.h b/deal.II/deal.II/include/fe/fe_lib.lagrange.h index 33aeac0b11..65e79a8ef8 100644 --- a/deal.II/deal.II/include/fe/fe_lib.lagrange.h +++ b/deal.II/deal.II/include/fe/fe_lib.lagrange.h @@ -1,556 +1,52 @@ -//---------------------------- fe_lib.lagrange.h --------------------------- +//--------------------------------------------------------------- +// $Id$ // Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer // to the file deal.II/doc/license.html for the text and // further information on this license. // -//---------------------------- fe_lib.lagrange.h --------------------------- +//--------------------------------------------------------------- #ifndef __deal2__fe_lib_lagrange_h #define __deal2__fe_lib_lagrange_h -/*---------------------------- fe_lib.h ---------------------------*/ - +#include -#include -/** - * Isoparametric Q1 finite element in @p{dim} space dimensions. - * - * The linear, isoparametric mapping from a point $\vec \xi$ on the unit cell - * to a point $\vec x$ on the real cell is defined as - * $$ \vec x(\vec \xi) = \sum_j {\vec p_j} N_j(\xi) $$ - * where $\vec p_j$ is the vector to the $j$th corner point of the cell in - * real space and $N_j(\vec \xi)$ is the value of the basis function associated - * with the $j$th corner point, on the unit cell at point $\vec \xi$. The sum - * over $j$ runs over all corner points. - * - * The number of degrees of freedom equal the number of the respective vertex - * of the cell - * - * @author Wolfgang Bangerth, 1998, 1999 - */ -template -class FEQ1 : public FEQ1Mapping +template class FEQ1: public FE_Q { public: - /** - * Constructor - */ - FEQ1 (); - protected: - /** - * Constructor that is called by the - * constructor of the derived - * @p{FEDG_Q1} class. - * It uses no dofs in the vertices and - * $2^d$ dofs per cell. No constraint - * matrices are build. - * For more detail see class @p{FEDGLinear}. - */ - FEQ1 (const int); - - public: - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - * - * For linear elements, all second - * derivatives on the unit cell are zero. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); + FEQ1(): FE_Q(1) + {}; }; -/** - * Subparametric Q2 finite element in @p{dim} space dimensions. - * A Q1 mapping from the unit cell - * to the real cell is implemented. - * - * The numbering of the degrees of freedom is as follows: - * @begin{itemize} - * @item 1D case: - * @begin{verbatim} - * 0---2---1 - * @end{verbatim} - * - * @item 2D case: - * @begin{verbatim} - * 3---6---2 - * | | - * 7 8 5 - * | | - * 0---4---1 - * @end{verbatim} - * - * @item 3D case: - * @begin{verbatim} - * 7--14---6 7--14---6 - * /| | / /| - * 19 | 13 19 1813 - * / 15 | / / | - * 3 | | 3---10--2 | - * | 4--12---5 | | 5 - * | / / | 9 / - * 11 16 17 11 | 17 - * |/ / | |/ - * 0---8---1 0---8---1 - * - * *-------* *-------* - * /| | / /| - * / | 21 | / 24 / | - * / | | / / | - * * | | *-------* | - * |25 *-------* | |23 * - * | / / | 20 | / - * | / 22 / | | / - * |/ / | |/ - * *-------* *-------* - * @end{verbatim} - * The center vertex has number 26. - * - * The respective coordinate values of the support points of the degrees - * of freedom are as follows: - * @begin{itemize} - * @item Index 0: @p{[0, 0, 0]}; - * @item Index 1: @p{[1, 0, 0]}; - * @item Index 2: @p{[1, 0, 1]}; - * @item Index 3: @p{[0, 0, 1]}; - * @item Index 4: @p{[0, 1, 0]}; - * @item Index 5: @p{[1, 1, 0]}; - * @item Index 6: @p{[1, 1, 1]}; - * @item Index 7: @p{[0, 1, 1]}; - * @item Index 8: @p{[1/2, 0, 0]}; - * @item Index 9: @p{[1, 0, 1/2]}; - * @item Index 10: @p{[1/2, 0, 1]}; - * @item Index 11: @p{[0, 0, 1/2]}; - * @item Index 12: @p{[1/2, 1, 0]}; - * @item Index 13: @p{[1, 1, 1/2]}; - * @item Index 14: @p{[1/2, 1, 1]}; - * @item Index 15: @p{[0, 1, 1/2]}; - * @item Index 16: @p{[0, 1/2, 0]}; - * @item Index 17: @p{[1, 1/2, 0]}; - * @item Index 18: @p{[1, 1/2, 1]}; - * @item Index 19: @p{[0, 1/2, 1]}; - * @item Index 20: @p{[1/2, 0, 1/2]}; - * @item Index 21: @p{[1/2, 1, 1/2]}; - * @item Index 22: @p{[1/2, 1/2, 0]}; - * @item Index 23: @p{[1, 1/2, 1/2]}; - * @item Index 24: @p{[1/2, 1/2, 1]}; - * @item Index 25: @p{[0, 1/2, 1/2]}; - * @item Index 26: @p{[1/2, 1/2, 1/2]}; - * @end{itemize} - * @end{itemize} - * - * @author Wolfgang Bangerth, 1998, 1999 - */ -template -class FEQ2 : public FEQ1Mapping +template class FEQ2: public FE_Q { public: - /** - * Constructor - */ - FEQ2 (); - protected: - /** - * Constructor that is called by the - * constructor of the derived - * @p{FEDGQuadraticSub} class. - * It uses no dofs in the vertices, no - * dofs in the lines and - * $3^d$ dofs per cell. No constraint - * matrices are build. - * For more detail see class - * @p{FEDGQuadraticSub}. - */ - FEQ2 (const int); - - public: - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); + FEQ2(): FE_Q(2) + {}; }; -/** - * Subparametric Q3 finite element in @p{dim} space dimensions. - * A Q1 mapping from the unit cell - * to the real cell is implemented. - * - * The numbering of degrees of freedom in one spatial dimension is as follows: - * @begin{verbatim} - * 0--2--3--1 - * @end{verbatim} - * - * The numbering of degrees of freedom in two spatial dimension is as follows: - * @begin{verbatim} - * 3--8--9--2 - * | | - * 11 15 14 7 - * | | - * 10 12 13 6 - * | | - * 0--4--5--1 - * @end{verbatim} - * Note the reverse ordering of degrees of freedom on the left and upper - * line and the counterclockwise numbering of the interior degrees of - * freedom. - * - * @author Wolfgang Bangerth, 1998 - */ -template -class FEQ3 : public FEQ1Mapping +template class FEQ3: public FE_Q { public: - /** - * Constructor - */ - FEQ3 (); - - protected: - /** - * Constructor that is called by the - * constructor of the derived - * @p{FEDGCubicSub} class. - * It uses no dofs in the vertices and - * $4^d$ dofs per cell. No constraint - * matrices are build. - * For more detail see class - * @p{FEDGCubicSub}. - */ - FEQ3 (const int); - - public: - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); + FEQ3(): FE_Q(3) + {}; }; -/** - * Subparametric Q4 finite element in @p{dim} space dimensions. - * A linear (subparametric) mapping from the unit cell - * to the real cell is implemented. - * - * The numbering of degrees of freedom in one spatial dimension is as follows: - * @begin{verbatim} - * 0--2--3--4--1 - * @end{verbatim} - * - * The numbering of degrees of freedom in two spatial dimension is as follows: - * @begin{verbatim} - * 3--10-11-12-2 - * | | - * 15 19 22 18 9 - * | | - * 14 23 24 21 8 - * | | - * 13 16 20 17 7 - * | | - * 0--4--5--6--1 - * @end{verbatim} - * Note the reverse ordering of degrees of freedom on the left and upper - * line and the numbering of the interior degrees of - * freedom. - * - * @author Wolfgang Bangerth, 1998 - */ -template -class FEQ4 : public FEQ1Mapping +template class FEQ4: public FE_Q { public: - /** - * Constructor - */ - FEQ4 (); - - protected: - /** - * Constructor that is called by the - * constructor of the derived - * @p{FEDGQuarticSub} class. - * It uses no dofs in the vertices and - * $5^d$ dofs per cell. No constraint - * matrices are build. - * For more detail see class - * @p{FEDGQuarticSub}. - */ - FEQ4 (const int); - - public: - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual double shape_value(const unsigned int i, - const Point& p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - - /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on what this function does. - * - * Please note that as allowed in the - * documentation of the base class, - * this function does not implement - * the setting up of the local mass - * matrix in three space dimensions - * because of too high computational - * costs. The specified exception - * is thrown instead. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - private: - - /** - * This function is simply singled out of - * the constructor; it sets up the - * @p{restriction} and @p{prolongation} - * matrices. Since we have two constructors - * which need this functionality, we - * provide a single function for this. - */ - void initialize_matrices (); + FEQ4(): FE_Q(4) + {}; }; -/*---------------------------- fe_lib.h ---------------------------*/ - #endif -/*---------------------------- fe_lib.h ---------------------------*/ - - diff --git a/deal.II/deal.II/include/fe/fe_q.h b/deal.II/deal.II/include/fe/fe_q.h index e69de29bb2..a603519233 100644 --- a/deal.II/deal.II/include/fe/fe_q.h +++ b/deal.II/deal.II/include/fe/fe_q.h @@ -0,0 +1,306 @@ +//--------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//--------------------------------------------------------------- +#ifndef __deal2__fe_q_h +#define __deal2__fe_q_h + +#include +#include + +template class TensorProductPolynomials; +template class MappingQ; + +/** + * Tensor product elements based on equidistant support points. + */ +template +class FE_Q : public FiniteElement +{ + public: + /** + * Constructor for tensor product + * polynomials of degree @p{k}. + */ + FE_Q (unsigned int k); + /** + * Destructor. + */ + ~FE_Q (); + + /** + * Compute flags for initial + * update only. + */ + virtual UpdateFlags update_once (UpdateFlags flags) const; + + /** + * Compute flags for update on + * each cell. + */ + virtual UpdateFlags update_each (UpdateFlags flags) const; + + /** + * Return the support points of the + * trial functions on the unit cell. + * + * The order of points in + * the array matches that returned by + * the #cell->get_dof_indices# function, but: + * + * If the shape functions are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. This is the standard behavior, + * if the function is not overloaded. + */ + virtual void get_unit_support_points (std::vector > &) const; + + /** + * Return the support points of + * the trial functions on the + * first face of the unit cell. + * + * The order of points in + * the array matches that returned by + * the #cell->get_dof_indices# function. + * + * If the shape functions are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. This is the standard behavior, + * if the function is not overloaded. + */ + virtual void get_unit_face_support_points (std::vector > &) const; + + /** + * Read-only access to the + * renumber vector. + */ + const std::vector &get_renumber() const; + + + /** + * Determine an estimate for the + * memory consumption (in bytes) + * of this object. + * + * This function is made virtual, + * since finite element objects + * are usually accessed through + * pointers to their base class, + * rather than the class itself. + */ + virtual unsigned int memory_consumption () const; + + protected: + + /** + * @p{clone} function instead of + * a copy constructor. + * + * This function is needed by the + * constructors of @p{FESystem}. + */ + virtual FiniteElement *clone() const; + + /** + * Prepare internal data + * structures and fill in values + * independent of the cell. + */ + virtual Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Mapping& mapping, + const Quadrature& quadrature) const ; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const ; + + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_internal, + Mapping::InternalDataBase &fe_internal, + FEValuesData& data) const ; + + private: + /** + * Only for internal use. Its + * full name is + * @p{get_dofs_per_object_vector} + * function and it creates the + * @p{dofs_per_object} vector that is + * needed within the constructor to + * be passed to the constructor of + * @p{FiniteElementData}. + */ + static std::vector get_dpo_vector(unsigned int degree); + + /** + * Map tensor product data to shape + * function numbering. + * + * The node values are ordered such + * that vertices are first, + * followed by lines, + * quadrilaterals and + * hexahedra. Furthermore, the + * ordering inside each group may + * be confused, too. Therefore, + * this function computes a mapping + * from lexicographic ordering + * (x,y,z) to the shape function + * structure. + * + * This function is made + * static. This allows other + * classes (like e.g. @p{MappingQ}) + * to call this functions without a + * need to create a + * FiniteElement. This function + * needs some data from the base + * class @p{FiniteElementData} of + * this @p{FE_Q} class. But this + * data cannot be accessed to by a + * static function. Hence this + * function needs an additional + * @p{FiniteElementData} argument. + */ + static void build_renumbering (const FiniteElementData &fe_data, + unsigned int degree, + std::vector& numbering); + + /** + * Map tensor product data to shape function + * numbering on first face. + * + * This function does the same as + * @p{build_renumbering}, only on + * the first face. + * + * It is used to compute the + * order of face support points. + */ + static void build_face_renumbering (const FiniteElementData &fe_data, + unsigned int degree, + std::vector& numbering); + + /** + * Compute support points. + */ + static void compute_support_points (std::vector >& support_points, + unsigned int degree, + const std::vector& renumber); + + /** + * Degree of the polynomials. + */ + const unsigned int degree; + /** + * Mapping from lexicographic to + * shape function numbering. + */ + std::vector renumber; + /** + * Mapping from lexicographic to + * shape function numbering on first face. + */ + std::vector face_renumber; + /** + * Vector of one-dimensional + * polynomials used. + */ + std::vector polynomials; + + /** + * Implementation of the tensor + * product of polynomials. + */ + TensorProductPolynomials* poly; + + /** + * Fields of cell-independent data. + */ + class InternalData : public FiniteElementBase::InternalDataBase + { + public: + /** + * Array with shape function values + * in quadrature points. There is one + * vector for each shape function, containing + * values for each quadrature point. + */ + std::vector > shape_values; + /** + * Array with shape function gradients + * in quadrature points. There is one + * vector for each shape function, containing + * values for each quadrature point. + */ + std::vector > > shape_gradients; + }; + + /** + * Allow access from other dimensions. + */ + template friend class FE_Q; + + /** + * Allows @p{MappingQ} class to + * access to build_renumbering + * function. + */ + friend class MappingQ; +}; + +#endif + + +template +inline +const std::vector & +FE_Q::get_renumber() const +{ + return renumber; +} diff --git a/deal.II/deal.II/include/fe/fe_system.h b/deal.II/deal.II/include/fe/fe_system.h index 660540401b..da1d97d857 100644 --- a/deal.II/deal.II/include/fe/fe_system.h +++ b/deal.II/deal.II/include/fe/fe_system.h @@ -1,5 +1,9 @@ //---------------------------- fe_system.h --------------------------- +// $Id$ // Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer // to the file deal.II/doc/license.html for the text and @@ -19,36 +23,34 @@ /** - * This class provides an interface to group several equal elements together - * into one. To the outside world, the resulting object looks just like - * a usual finite element object, which is composed of several other finite - * elements of the same class each. - * - * Basically, this composed finite element has @p{N} times as many degrees of - * freedom (and therefore also @p{N} times as many shape functions) as a single - * object of the underlying finite element would have had. Among these, - * always @p{N} have the same properties, i.e. are represented by the same - * shape functions. These @p{N} shape functions for each degree of freedom - * of the basic finite element are numbered consecutively, i.e. for - * the common case of a velocity @p{(u,v,w)}, the sequence of basis functions - * will be @p{u1, v1, w1, u2, v2, w2, ..., uN, vN, wN} compared to - * @p{u1, ..., uN, v1, ..., vN, w1, ...wN}. + * This class provides an interface to group several elements together + * into one. To the outside world, the resulting object looks just + * like a usual finite element object, which is composed of several + * other finite elements that are possibly of different type. + + * The overall numbering of degrees of freedom is as follows: for each + * subobject (vertex, line, quad, or hex), the degrees of freedom are + * numbered such that we run over all subelements first, before + * turning for the next dof on this subobject or for the next + * subobject. For example, for a element of three components in one + * space dimension, the first two components being cubic lagrange + * elements and the third being a quadratic lagrange element, the + * ordering for the system @p{s=(u,v,p)} is: * - * Using this scheme, the overall numbering of degrees of freedom is as - * follows: for each subobject (vertex, line, quad, or hex), the degrees - * of freedom are numbered such that we run over all subelements first, - * before turning for the next dof on this subobject or for the next subobject. - * For example, for the bicubic element in one space dimension, and for - * two subobjects grouped together by this class, the ordering for - * the system @p{s=(u,v)} is: * @begin{itemize} - * @item First vertex: @p{u0, v0 = s0, s1} - * @item Second vertex: @p{u1, v1 = s2, s3} - * @item First degree of freedom on the line (=cell): - * @p{u2, v2 = s3, s4} - * @item Second degree of freedom on the line: - * @p{u3, v3 = s5, s6}. + * @item First vertex: @p{u0, v0, p0 = s0, s1, s2} + * @item Second vertex: @p{u1, v1, p1 = s3, s4, s5} + * @item First component on the line: + * @p{u2, u3 = s4, s5} + * @item Second component on the line: + * @p{v2, v3 = s6, s7}. + * @item Third component on the line: + * @p{p2 = s8}. * @end{itemize} + * Do not rely on this numbering in your application as these + * internals might change in future. Rather use the functions + * @p{system_to_component_index} and @p{component_to_system_index}, + * instead. * * In the most cases, the composed element behaves as if it were a usual element * with more degrees of freedom. However the underlying structure is visible in @@ -60,19 +62,7 @@ * coupled to @p{u} at the vertices and the line on the larger cell next to this * vertex, there is no interaction with @p{v} and @p{w} of this or the other cell. * - * Likewise, the matrix computed by the @p{get_local_mass_matrix} function, which - * originally is defined to be $m_{ij} = \int_K \phi_i \phi_j dx$ contains - * only those $m_{ij}$ for which the respective shape functions belong to the - * same subobject, all other entries are set to zero. The matrix therefore is - * a block matrix, where each block is a diagonal matrix with entries equal to - * the entry at this block's position in the local mass matrix of a single - * finite element object. This behaviour is consistent with one common use - * of the mass matrix, which is in projecting functions onto the grid; in this - * case, one wants to project each component of the function (here it is a vector - * function) to the respective component of the finite element, without interaction - * of the different components. - * - * @author Wolfgang Bangerth, Guido Kanschat, 1999 + * @author Wolfgang Bangerth, Guido Kanschat, 1999, reimplementation Ralf Hartmann 2001. */ template class FESystem : public FiniteElement @@ -104,8 +94,7 @@ class FESystem : public FiniteElement * class needs to be of the same dimension * as is this object. */ - template - FESystem (const FE &fe, const unsigned int n_elements); + FESystem (const FiniteElement &fe, const unsigned int n_elements); /** * Constructor for mixed @@ -114,282 +103,158 @@ class FESystem : public FiniteElement * * See the other constructor. */ - template - FESystem (const FE1 &fe1, const unsigned int n1, - const FE2 &fe2, const unsigned int n2); + FESystem (const FiniteElement &fe1, const unsigned int n1, + const FiniteElement &fe2, const unsigned int n2); - /** + /** * Constructor for mixed * discretizations with three * base elements. * * See the other constructor. */ - template - FESystem (const FE1 &fe1, const unsigned int n1, - const FE2 &fe2, const unsigned int n2, - const FE3 &fe3, const unsigned int n3); + FESystem (const FiniteElement &fe1, const unsigned int n1, + const FiniteElement &fe2, const unsigned int n2, + const FiniteElement &fe3, const unsigned int n3); /** * Destructor. */ virtual ~FESystem (); - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - * - * For an element composed of @p{N} - * subelements, the first @p{N} shape - * functions refer to the zeroth shape - * function of the underlying object, - * the shape functions @p{N..2N-1} refer - * to the base shape function with - * number @p{1}, and so on. The @p{i} shape - * function therefore equals the - * @p{i/N} the shape function of the - * base object. - */ - virtual double shape_value(const unsigned int i, - const Point &p) const; - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - * - * For the ordering of shape functions - * refer to the @p{shape_value} function. + * Compute flags for initial update only. */ - virtual Tensor<1,dim> shape_grad(const unsigned int i, - const Point& p) const; - + virtual UpdateFlags update_once (UpdateFlags flags) const; + /** - * Return the tensor of second derivatives - * of the @p{i}th shape function at - * point @p{p} on the unit cell. - * - * For the ordering of shape functions - * refer to the @p{shape_value} function. + * Compute flags for update on each cell. */ - virtual Tensor<2,dim> shape_grad_grad (const unsigned int i, - const Point &p) const; + virtual UpdateFlags update_each (UpdateFlags flags) const; /** - * Refer to the base class for detailed - * information on this function. + * Return the support points of the + * trial functions on the unit cell. * - * For the ordering of shape functions - * refer to the @p{shape_value} function. - */ - virtual void get_unit_support_points (typename std::vector > &support_points) const; - - /** - * Refer to the base class for detailed - * information on this function. + * The order of points in the + * array matches that returned by + * the @p{cell->get_dof_indices} + * function, but: * - * For the ordering of shape functions - * refer to the @p{shape_value} function. + * If the shape functions of one + * of the base elements are not + * Lagrangian interpolants at + * some points, the size of the + * array will be zero after + * calling this function. */ - virtual void get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const; + virtual void get_unit_support_points (typename std::vector > &) const; /** - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const; - - /** - * Fill the local mass matrix. The elements - * of this matrix are the integrals - * $\int_K \phi_i \phi_j dx$ over a given - * cell $K$. However, here only those - * elements of the matrix are set for which - * the shape functions $\phi_i$ and - * $\phi_j$ belong to the same component, - * i.e. the resulting matrix is a block - * diagonal matrix where each block is a - * matrix with values equal to - * the respective entry of the local mass - * matrix for the underlying finite element - * class. This definition of the mass - * matrix for systems of finite elements - * is consistent with the use of the matrix - * for the projection of initial values and - * the like, where the components are not - * coupled to each other. Also in most - * other cases you will not want the - * coupling terms to appear in the mass - * matrix. + * Return the support points of + * the trial functions on the + * first face of the unit cell. * - * If the shape functions of this element - * were numbered such that the first - * numbers are for the shape functions of - * the first component, then those for - * the second component, and so on, then - * the mass matrix generated by this - * function would be a block diagonal - * matrix with each block being the mass - * matrix of the base finite element as - * described above. However, this is - * not the numbering used by the - * @p{FESystem} class, so the block - * structure is usually lost for - * the @em{local} mass matrices, but - * can be recovered in the global - * matrix by suitable renumbering - * of global DoF numbers. + * The order of points in the + * array matches that returned by + * the @p{cell->get_dof_indices} + * function, but: * - * Refer to the base class for more - * information on this function. - */ - virtual void get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const; - - /** - * Transforms the point @p{p} on - * the unit cell to the point - * @p{p_real} on the real cell - * @p{cell} and returns - * @p{p_real}. As the - * transformation mapping of each - * @p{FiniteElement} of this - * @p{FESystem} should be the - * same, this function just calls - * the @p{transform} function of - * @p{base_element(0)}. + * If the shape functions of one + * of the base elements are not + * Lagrangian interpolants at some + * points, the size of the array + * will be zero. */ - virtual Point transform_unit_to_real_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - + virtual void get_unit_face_support_points (typename std::vector > &) const; + + protected: /** - * Transforms the point @p{p} on - * the real cell to the point - * @p{p_unit} on the unit cell - * @p{cell} and returns - * @p{p_unit}. As the - * transformation mapping of each - * @p{FiniteElement} of this - * @p{FESystem} should be the - * same, this function just calls - * the @p{transform} function of - * @p{base_element(0)}. + * @p{clone} function instead of + * a copy constructor. + * + * This function is needed by the + * constructors of @p{FESystem}. */ - virtual Point transform_real_to_unit_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - + virtual FiniteElement *clone() const; + /** - * Return the value of the @p{i}th shape - * function of the transformation mapping - * from unit cell to real cell. Since - * the transform functions are not - * touched when clustering several finite - * element objects together using this - * class, this function simply passes down - * the call to the respective function of - * the underlying element. + * Prepare internal data + * structures and fill in values + * independent of the cell. */ - virtual double shape_value_transform (const unsigned int i, - const Point &p) const; + virtual typename Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Mapping& mapping, + const Quadrature& quadrature) const ; /** - * Same as above: return gradient of the - * @p{i}th shape function for the mapping - * from unit to real cell. - */ - virtual Tensor<1,dim> shape_grad_transform (const unsigned int i, - const Point &p) const; + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_values (const Mapping &mapping, + const typename DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fe_data, + FEValuesData &data) const; /** - * Refer to the base class for detailed - * information on this function. - * - * Since this function is only about the - * mapping from unit to real cell, it - * is not affected by putting several - * equal elements together, so this - * function simply passes down to the - * underlying object. - */ - virtual void get_face_jacobians (const typename DoFHandler::face_iterator &face, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const; + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_face_values (const Mapping &mapping, + const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_data, + typename Mapping::InternalDataBase &fe_data, + FEValuesData &data) const ; - /** - * Refer to the base class for detailed - * information on this function. - * - * Since this function is only about the - * mapping from unit to real cell, it - * is not affected by putting several - * equal elements together, so this - * function simply passes down to the - * underlying object. - */ - virtual void get_subface_jacobians (const typename DoFHandler::face_iterator &face, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const; - - /** - * Return the normal vectors to the - * face with number @p{face_no} of @p{cell}. - * - * Since this function is only about the - * mapping from unit to real cell, it - * is not affected by putting several - * equal elements together, so this - * function simply passes down to the - * underlying object. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; + /** + * Implementation of the same + * function in + * @ref{FiniteElement}. + */ + virtual void + fill_fe_subface_values (const Mapping &mapping, + const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_data, + typename Mapping::InternalDataBase &fe_data, + FEValuesData &data) const ; + /** - * Return the normal vectors to the - * subface with number @p{subface_no} of - * the face with number @p{face_no} of @p{cell}. - * - * Since this function is only about the - * mapping from unit to real cell, it - * is not affected by putting several - * equal elements together, so this - * function simply passes down to the - * underlying object. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; + * Calles (among other things) + * @p{fill_fe_([sub]face)_values} + * of the base elements. Calles + * @p{fill_fe_values} if + * @p{face_no==-1} and + * @p{sub_no==-1}; calles + * @p{fill_fe_face_values} if + * @p{face_no==-1} and + * @p{sub_no!=-1}; and calles + * @p{fill_fe_subface_values} if + * @p{face_no!=-1} and + * @p{sub_no!=-1}. + */ + template + void compute_fill (const Mapping &mapping, + const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_data, + typename Mapping::InternalDataBase &fe_data, + FEValuesData &data) const ; - /** - * Implementation of the - * corresponding function of - * @p{FiniteElement}. - */ - virtual void fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grad_transform) const; - /** * Number of different base * elements of this object. @@ -486,7 +351,7 @@ class FESystem : public FiniteElement const FiniteElementData &fe2, const unsigned int N2); - /** + /** * Same as above for mixed elements * with three different sub-elements. */ @@ -511,7 +376,7 @@ class FESystem : public FiniteElement compute_restriction_is_additive_flags (const FiniteElement &fe, const unsigned int N); - /** + /** * Same as above for mixed elements * with two different sub-elements. */ @@ -521,7 +386,7 @@ class FESystem : public FiniteElement const FiniteElement &fe2, const unsigned int N2); - /** + /** * Same as above for mixed elements * with three different sub-elements. */ @@ -562,11 +427,143 @@ class FESystem : public FiniteElement * Used by @p{initialize}. */ void build_interface_constraints (); - + /** - *Exception. - */ - DeclException0(ExcElementTransformNotEqual); + * Usually: Fields of + * cell-independent data. + * + * But for @p{FESystem} this + * @p{InternalData} class does + * not itself store the data but + * only pointers to + * @p{InternalDatas} of the base + * elements. + */ + class InternalData : public FiniteElementBase::InternalDataBase + { + public: + /** + * Constructor. Is called by + * the @p{get_data} + * function. Sets the size of + * the @p{base_fe_datas} + * vector to + * @p{n_base_elements}. + */ + InternalData(const unsigned int n_base_elements); + + /** + * Destructor. Deletes all + * @p{InternalDatas} whose + * pointers are stored by the + * @p{base_fe_datas} + * vector. + */ + ~InternalData(); + + /** + * Flag for computation of + * second derivatives. + */ + bool second_flag; + + /** + * Gives write-access to the + * pointer to a + * @p{InternalData} of the + * @p{base_no}th base + * element. + */ + void set_fe_data(unsigned int base_no, + typename FiniteElementBase::InternalDataBase *); + + /** + * Gives read-access to the + * pointer to a + * @p{InternalData} of the + * @p{base_no}th base element. + */ + typename FiniteElementBase::InternalDataBase &get_fe_data(unsigned int base_no) const; + + + /** + * Gives write-access to the + * pointer to a + * @p{FEValuesData} for the + * @p{base_no}th base + * element. + */ + void set_fe_values_data(unsigned int base_no, + FEValuesData *); + + /** + * Gives read-access to the + * pointer to a + * @p{FEValuesData} for the + * @p{base_no}th base element. + */ + FEValuesData &get_fe_values_data(unsigned int base_no) const; + + /** + * Deletes the + * @p{FEValuesData} the + * @p{fe_datas[base_no]} + * pointer is pointing + * to. Sets + * @p{fe_datas[base_no]} to + * zero. + * + * This function is used to + * delete @p{FEValuesData} + * that are needed only on + * the first cell but not any + * more afterwards. This is + * the case for + * e.g. Lagrangian elements + * (see e.g. @p{FE_Q} + * classes). + */ + void delete_fe_values_data(unsigned int base_no); + + private: + + /** + * Pointers to the + * @p{InternalDatas} of the + * base elements. They are + * accessed to by the + * @p{set_} and + * @p{get_fe_data} + * functions. + * + * The size of this vector is + * set to @p{n_base_elements} + * by the InternalData + * constructor. It is + * filled by the @p{get_data} + * function. + */ + typename std::vector::InternalDataBase *> base_fe_datas; + + /** + * Pointers to the + * @p{FEValuesDatas} + * that are given to the + * @p{fill_fe_values} + * function of the base + * elements. They are + * accessed to by the + * @p{set_} and + * @p{get_fe_values_data} + * functions. + * + * The size of this vector is + * set to @p{n_base_elements} + * by the InternalData + * constructor. + */ + typename std::vector *> base_fe_values_datas; + }; }; @@ -581,44 +578,38 @@ FESystem::n_base_elements() const template -template -FESystem::FESystem (const FE &fe, const unsigned int n_elements) : +FESystem::FESystem (const FiniteElement &fe, const unsigned int n_elements) : FiniteElement (multiply_dof_numbers(fe, n_elements), compute_restriction_is_additive_flags (fe, n_elements)), base_elements(1) { - base_elements[0] = ElementPair(new FE, n_elements); + base_elements[0] = ElementPair(fe.clone(), n_elements); base_elements[0].first -> subscribe (); initialize (); }; template -template -FESystem::FESystem (const FE1 &fe1, const unsigned int n1, - const FE2 &fe2, const unsigned int n2) +FESystem::FESystem (const FiniteElement &fe1, const unsigned int n1, + const FiniteElement &fe2, const unsigned int n2) : FiniteElement (multiply_dof_numbers(fe1, n1, fe2, n2), compute_restriction_is_additive_flags (fe1, n1, fe2, n2)), base_elements(2) { - Assert(fe1.n_transform_functions() == fe2.n_transform_functions(), - ExcElementTransformNotEqual()); - - base_elements[0] = ElementPair(new FE1, n1); + base_elements[0] = ElementPair(fe1.clone(), n1); base_elements[0].first -> subscribe (); - base_elements[1] = ElementPair(new FE2, n2); + base_elements[1] = ElementPair(fe2.clone(), n2); base_elements[1].first -> subscribe (); initialize (); }; template -template -FESystem::FESystem (const FE1 &fe1, const unsigned int n1, - const FE2 &fe2, const unsigned int n2, - const FE3 &fe3, const unsigned int n3) +FESystem::FESystem (const FiniteElement &fe1, const unsigned int n1, + const FiniteElement &fe2, const unsigned int n2, + const FiniteElement &fe3, const unsigned int n3) : FiniteElement (multiply_dof_numbers(fe1, n1, fe2, n2, @@ -628,16 +619,11 @@ FESystem::FESystem (const FE1 &fe1, const unsigned int n1, fe3, n3)), base_elements(3) { - Assert(fe1.n_transform_functions() == fe2.n_transform_functions(), - ExcElementTransformNotEqual()); - Assert(fe1.n_transform_functions() == fe3.n_transform_functions(), - ExcElementTransformNotEqual()); - - base_elements[0] = ElementPair(new FE1, n1); + base_elements[0] = ElementPair(fe1.clone(), n1); base_elements[0].first -> subscribe (); - base_elements[1] = ElementPair(new FE2, n2); + base_elements[1] = ElementPair(fe2.clone(), n2); base_elements[1].first -> subscribe (); - base_elements[2] = ElementPair(new FE3, n3); + base_elements[2] = ElementPair(fe3.clone(), n3); base_elements[2].first -> subscribe (); initialize (); }; @@ -663,6 +649,68 @@ FESystem::base_element(unsigned int index) const } +template +inline FiniteElementBase::InternalDataBase & +FESystem:: +InternalData::get_fe_data(unsigned int base_no) const +{ + Assert(base_no +inline void +FESystem:: +InternalData::set_fe_data(unsigned int base_no, + FiniteElementBase::InternalDataBase *ptr) +{ + Assert(base_no +inline FEValuesData & +FESystem:: +InternalData::get_fe_values_data(unsigned int base_no) const +{ + Assert(base_no +inline void +FESystem:: +InternalData::set_fe_values_data(unsigned int base_no, + FEValuesData *ptr) +{ + Assert(base_no +inline void +FESystem:: +InternalData::delete_fe_values_data(unsigned int base_no) +{ + Assert(base_no #include -#include -#include #include #include +#include +#include #include +#include +#include +#include #include +#include template class Quadrature; /** - * This class offers a multitude of arrays and other fields which are used by - * the derived classes @p{FEValues}, @p{FEFaceValues} and @p{FESubfaceValues}. - * In principle, it is the - * back end of the front end for the unification of a certain finite element - * and a quadrature formula which evaluates certain aspects of the finite - * element at quadrature points. - * - * This class is an optimization which avoids evaluating the shape functions - * at the quadrature points each time a quadrature takes place. Rather, the - * values and gradients (and possibly higher order derivatives in future - * versions of this library) are evaluated once and for all on the unit - * cell or face before doing the quadrature itself. Only the Jacobian matrix of - * the transformation from the unit cell or face to the real cell or face and - * the integration points in real space are calculated each time we move on - * to a new face. - * - * Actually, this class does none of the evaluations at startup itself; this is - * all done by the derived classes. It only offers the basic functionality, - * like providing those fields that are common to the derived classes and - * access to these fields. Any computations are in the derived classes. See there - * for more information. - * - * It has support for the restriction of finite elements to faces of cells or - * even to subfaces (i.e. refined faces). For this purpose, it offers an array - * of matrices of trial function values, rather than one. Since the value of - * a function at a quadrature point is an invariant under the transformation - * from the unit cell to the real cell, it is only evaluated once upon startup. - * However, when considering the restriction of a finite element to a face of - * a cell (using a given quadrature rule), we may be tempted to compute the - * restriction to all faces at startup (thus ending in four array of trial - * function values in two dimensions, one per face, and even more in higher - * dimensions) and let the respective @p{reinit} function of the derived classes - * set a number which of the fields is to be taken when the user requests the - * function values. This is done through the @p{selected_dataset} variable. See - * the derived classes and the @p{get_values} function for the exact usage of - * this variable. - * - * For many of the actual computations done by the @p{fill_fe_*} functions of - * the @p{FiniteElement} class and its decendants, the values and gradients of - * the transformation functions are needed. For example, for the computation - * of the real location of a quadrature point from the location on the unit - * cell, the values are needed, while for the computation of the Jacobian - * matrix the gradient is needed. While for linear elements the transformation - * functions coincide with the trial functions, this does not hold for higher - * order elements with subparametric mappings and for other types of elements - * such as non-conforming ones, etc, such that the precomputed values and - * gradients of the trial functions (@p{unit_shape_values} and - * @p{unit_shape_grads}) cannot be used for the present purpose. - * In principle, these values could be computed each time the @p{fill_fe_*} - * function is called; however, this computation is highly redundant, since - * only the values on the unit cell and only at the quadrature points are - * needed, i.e. they are the same for each cell that @p{fill_fe_*} is called. - * Therefore, two additional arrays, @p{unit_shape_values_transform} and - * @p{unit_shape_grads_transform} are provided, which are filled upon construction - * of an object of this type, which the actual finite element may or may not - * use. Later on, the @p{fill_fe_*} functions are passed pointers to these - * arrays, which they may use to extract the values and gradients of the - * transform functions. If a concrete finite element choses not to use this - * field, it shall set its field @p{transform_functions} to zero. - * - * The @p{unit_shape_grads_transform} array is provided by the derived classes - * to allow for the inclusion of multiple faces, etc. - * + * Contains all data vectors for @p{FEValues}. * - * @sect3{Definitions} + * This class has been extracted from @p{FEValuesBase} to be handed + * over to the fill functions of @p{Mapping} and + * @p{FiniteElement}. All data fields are public, but this is not + * critical, because access to this object is private in @p{FEValues}. * - * The Jacobian matrix is defined to be - * $$ J_{ij} = {d\xi_i \over dx_j} $$ - * where the $\xi_i$ are the coordinates on the unit cell and the $x_i$ are - * the coordinates on the real cell. - * This is the form needed to compute the gradient on the real cell from - * the gradient on the unit cell. If we want to transform the area element - * $dx dy$ from the real to the unit cell, we have to take the determinant of - * the inverse matrix, which is the reciprocal value of the determinant of the - * matrix defined above. - * - * The Jacobi matrix is always that of the transformation of unit to real cell. - * This applies also to the case where the derived class handles faces or - * subfaces, in which case also the transformation of unit to real cell is - * needed. However, the Jacobi matrix of the full transformation is always - * needed if we want to get the values of the gradients, which need to be - * transformed with the full Jacobi matrix, while we only need the - * transformation from unit to real face to compute the determinant of the - * Jacobi matrix to get the scaling of the surface element $do$. - * - * The question whether to compute the Jacobi matrix as the inverse of another - * matrix M (which we can compute from the transformation, while we can't do - * so for the Jacobi matrix itself) or its transpose is a bit delicate. It - * should be kept in mind that when we compute the gradients in real space - * from those on the unit cell, we multiply with the Jacobi matrix - * \textit{from the right}; the whole situation is a bit confusing and it - * either takes deep though or trial-and-error to do it right. Some more - * information on this can be found in the source code documentation for the - * @p{FEQ1Mapping::fill_fe_values} function, where also a small test - * program is presented. - * - * The derivatives of the Jacobi matrices at the quadrature points with respect - * to unit cell coordinates is stored in the field names - * @p{jacobi_matrices_grad}. Since the gradient of a shape function is given by - * $\partial_i \phi = \sum_k \hat\partial_k \hat\phi J_{ki}$, where - * $\hat\partial$ denotes differentiation on the unit cell, the second - * derivative of a function is given by - * $\partial_j \partial i \phi - * = - * \hat\partial_l [ (\hat \partial_k \hat\phi) J_{ki} ] J_{lj} - * = - * (\hat\partial_k \hat\partial_l \hat\phi) J_{ki} J_{lj} - * + - * (\hat \partial_l \hat\phi) (\hat\partial_l J_{ki}) J_{lj}$. - * While we already have access to the Jacobian matrix, the derivatives are - * stored in the named field. - * - * - * @sect3{Member functions} + * @author Guido Kanschat, 2000 + */ +template +class FEValuesData +{ + public: + /** + * Initialize all vectors to correct size. + */ + void initialize (const unsigned int n_quadrature_points, + unsigned int n_shapes, + const UpdateFlags flags); + + /** + * Storage type for shape values. + */ + typedef FullMatrix ShapeVector; + + /** + * Storage type for gradients. + */ + typedef typename std::vector > > GradientVector; + + /** + * Store the values of the shape functions + * at the quadrature points. Rows in the + * matrices denote the values of a single + * shape function at the different points, + * columns are for a single point with the + * different shape functions. + */ + ShapeVector shape_values; + + /** + * Store the gradients of the shape + * functions at the quadrature points. + * For each shape function, there is a vector + * of the gradients in each quadrature point. + */ + GradientVector shape_gradients; + + /** + * Store the 2nd derivatives of the shape + * functions at the quadrature points. + * For each shape function, there is a vector + * of the 2nd gradients in each quadrature point. + */ + typename std::vector > > shape_2nd_derivatives; + + /** + * Store an array of weights times the + * Jacobi determinant at the quadrature + * points. This function is reset each time + * @p{reinit} is called. The Jacobi determinant + * is actually the reciprocal value of the + * Jacobi matrices stored in this class, + * see the general documentation of this + * class for more information. + */ + std::vector JxW_values; + + /** + * Array of quadrature points. This array + * is set up upon calling @p{reinit} and + * contains the quadrature points on the + * real element, rather than on the + * reference element. + */ + std::vector > quadrature_points; + + /** + * List of outward normal vectors at the + * quadrature points. This field is filled + * in by the finite element class. + */ + std::vector > normal_vectors; + + /** + * List of boundary forms at the + * quadrature points. This field is filled + * in by the finite element class. + */ + std::vector > boundary_forms; + + /** + * Original update flags handed + * to the constructor of + * @p{FEValues}. + */ + UpdateFlags update_flags; +}; + + +/** + * Common features of @p{FEValues*} classes. + * + * @p{FEValues*} objects are programming interfaces to finite element + * and mapping classes on the one hand side, to cells and quadrature + * rules on the other side. The reason for their existence is possible + * optimization. Depending on the type of finite element and mapping, + * some values can be computed once on the unit cell. Others must be + * computed on each cell, but maybe computation of several values at + * the same time offers ways for optimization. Since this interlay may + * be complex and depends on the actual finite element, it cannot be + * left to the applications programmer. + * + * @p{FEValues*} provides only data handling: computations are left to + * objects of type @ref{Mapping} and @ref{FiniteElement}. These + * provide functions @p{get_*_data} and @p{fill_*_values} which are + * called by the constructor and @p{reinit} functions of + * @p{FEValues*}, respectively. + * + * \subsection{General usage} + * + * Usually, an object of @p{FEValues*} is used in integration loops + * over all cells of a triangulation. To take full advantage of the + * optimization features, it should be constructed before the + * loop. Then, it must be re-initialized for each grid cell. This is + * like a magnifying glass being used to look at one item after the + * other. A typical piece of code looks like this: + * + * \begin{verbatim} + * FEValues values (mapping, finite_element, quadrature, flags); + * for (cell = dof_handler.begin_active(); + * cell != dof_handler.end(); + * ++cell) + * { + * values.reinit(cell); + * ... + * } + * \end{verbatim} + * + * + * \subsection{Member functions} * * The functions of this class fall into different cathegories: - * @begin{itemize} - * @item @p{shape_value}, @p{shape_grad}, etc: return one of the values - * of this object at a time. In many cases you will want to get - * a whole bunch at a time for performance or convenience reasons, - * then use the @p{get_*} functions. + * \begin{itemize} + * \item @p{shape_value}, @p{shape_grad}, etc: return one of the values + * of this object at a time. These functions are inlined, so this + * is the suggested access to all finite element values. There should be + * no loss in performance with an optimizing compiler. * - * @item @p{get_shape_values}, @p{get_shape_grads}, etc: these return + * \item @p{get_shape_values}, @p{get_shape_grads}, etc: these return * a reference to a whole field. Usually these fields contain * the values of all trial functions at all quadrature points. * - * @item @p{get_function_values}, @p{get_function_grads}, @p{...}: these - * functions offer a simple way to avoid the detour of the - * trial functions, if you have a finite element solution (resp. the - * vector of values associated with the different trial functions.) - * Then you may want to get information from the restriction of - * the finite element function to a certain cell, e.g. the values - * of the function at the quadrature points or the values of its - * gradient. These two functions provide the information needed: - * you pass it a vector holding the finite element solution and the - * functions return the values or gradients of the finite element - * function restricted to the cell which was given last time the - * @p{reinit} function was given. The same applies for the functions - * returning higher derivatives of the solution. - * - * Though possible in principle, these functions do not call the - * @p{reinit} function, you have to do so yourself beforehand. On the - * other hand, a copy of the cell iterator is stored which was used - * last time the @p{reinit} function was called. This frees us from - * the need to pass the cell iterator again to these two functions, - * which guarantees that the cell used here is in sync with that used - * for the @p{reinit} function. You should, however, make sure that - * nothing substantial happens to the @ref{DoFHandler} object or any - * other involved instance between the @p{reinit} and the @p{get_function_*} - * functions are called. + * \item @p{get_function_values}, @p{get_function_grads}, @p{...}: + * Compute a finite element function or its derivative + * in quadrature points. * - * @item @p{reinit}: initialize the @p{FEValues} object for a certain cell. + * \item @p{reinit}: initialize the @p{FEValues} object for a certain cell. * This function is not in the present class but only in the derived * classes and has a variable call syntax. * See the docs for the derived classes for more information. - * @end{itemize} - * + * \end{itemize} * - * @sect3{Implementational issues} * - * The @p{FEValues} object keeps track of those fields which really need to - * be computed, since the computation of the gradients of the trial functions - * and of other values on each real cell can be quite an expensive thing - * if it is not needed. The - * object knows about which fields are needed by the @p{UpdateFlags} object - * passed through the constructor. In debug mode, the accessor functions, which - * return values from the different fields, check whether the required field - * was initialized, thus avoiding use of unitialized data. + * \subsection{UpdateFlags} * - * Functions should not assume that one flag is needed for another object as - * well. For example, the computation of the Jacobi determinant usually - * requires the computation of the Jacobi matrix. However, functions shall - * not assume that someone who wants to get the @p{JxW_values} must set the - * @p{update_jacobians} flag besides the @p{update_JxW_values} flag. + * The @ref{UpdateFlags} object handed to the constructor is used to + * determine, which of the data fields to compute. This way, it is + * possible to avoid expensive computations of useless derivatives. + * In the beginning, these flags are processed through the functions + * @p{update_once} and @p{update_each} of @ref{Mapping} and + * @p{FiniteElement}. All the results are bit-wise or'd and determine + * the fields actually computed. This enables @ref{Mapping} and + * @p{FiniteElement} to schedule auxiliary data fields for + * updating. Still, it is recommended to give ALL needed update flags + * to @p{FEValues}. * - * It is also forbidden that the constructor of a class set the - * @p{update_jacobians} flag if the user specifies @p{update_JxW_values}. This is - * since derived classes may be able to compute the @p{JxW_values} field without - * the Jacobian matrices, but need to do the latter since they can't know who - * set the @p{update_jacobians} flag. - * - * @author Wolfgang Bangerth, 1998 + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2001 */ template -class FEValuesBase +class FEValuesBase : protected FEValuesData { public: - /** * Number of quadrature points. */ const unsigned int n_quadrature_points; /** - * Total number of shape functions + * Number of shape functions * per cell. If we use this base class * to evaluate a finite element on * faces of cells, this is still the @@ -226,49 +229,47 @@ class FEValuesBase */ const unsigned int dofs_per_cell; - /** - * Number of basis functions for the - * transformation from the unit cell - * to the real cell. See the docs for - * more information on this field. - */ - const unsigned int n_transform_functions; /** - * Constructor. Set up the array sizes - * with @p{n_q_points} quadrature points, - * @p{n_support_points} support points (on - * the cell or face), @p{n_dof} trial - * functions per cell and with the - * given pattern to update the fields - * when the @p{reinit} function of the + * Constructor. Set up the array + * sizes with @p{n_q_points} + * quadrature points, @p{n_dof} + * trial functions per cell and + * with the given pattern to + * update the fields when the + * @p{reinit} function of the * derived classes is called. The - * fields themselves are not set up, - * this must happen in the derived - * class's constructor, only the sizes - * are set correctly. + * fields themselves are not set + * up, this must happen in the + * constructor of the derived + * class. */ FEValuesBase (const unsigned int n_q_points, - const unsigned int n_support_points, const unsigned int dofs_per_cell, - const unsigned int n_transform_functions, const unsigned int n_values_array, const UpdateFlags update_flags, + const Mapping &mapping, const FiniteElement &fe); /** - * Return the value of the @p{i}th shape - * function at the @p{j} quadrature point - * on the cell, face or subface selected - * the last time the @p{reinit} function - * of the derived class was called. + * Destructor. + */ + ~FEValuesBase (); + + /** + * Value of the @p{function_no}th shape + * function at the @p{point_no}th quadrature + * point on the cell, face or + * subface selected the last time + * the @p{reinit} function of the + * derived class was called. */ - double shape_value (const unsigned int function, - const unsigned int quadrature_point) const; + double shape_value (const unsigned int function_no, + const unsigned int point_no) const; /** - * Return a pointer to the matrix holding + * Pointer to the matrix holding * all values of shape functions at all * integration points, on the present cell, * face or subface selected @@ -276,11 +277,13 @@ class FEValuesBase * of the derived class was called. * For the format of this matrix, see the * documentation for the matrix itself. + * + * Use of this function is deprecated. */ - const FullMatrix & get_shape_values () const; + const typename FEValuesData::ShapeVector & get_shape_values () const; /** - * Return the values of the finite + * Values of the finite * element function characterized * by @p{fe_function} restricted to * the cell, face or subface selected @@ -301,7 +304,7 @@ class FEValuesBase * * The function assumes that the * @p{values} object already has the - * right size. + * correct size. * * The actual data type of the * input vector may be either a @@ -310,16 +313,17 @@ class FEValuesBase * @p{BlockVector}. */ template - void get_function_values (const InputVector &fe_function, - typename std::vector &values) const; + void get_function_values (const InputVector& fe_function, + typename std::vector& values) const; /** * Access to vector valued finite * element functions. * * This function does the same as - * the other @p{get_function_values}, - * but applied to multi-component + * the other + * @p{get_function_values}, but + * applied to multi-component * elements. * * The actual data type of the @@ -333,32 +337,39 @@ class FEValuesBase typename std::vector > &values) const; /** - * Return the gradient of the @p{i}th shape - * function at the @p{j} quadrature point. - * If you want to get the derivative in - * one of the coordinate directions, use - * the appropriate function of the @p{Tensor} - * class to extract one component. Since - * only a reference to the gradient's value - * is returned, there should be no major + * Gradient of the @p{i}th shape + * function at the @p{j} quadrature + * point with respect to real + * cell coordinates. If you want + * to get the derivative in one + * of the coordinate directions, + * use the appropriate function + * of the @pref{Tensor} class to + * extract one component. Since + * only a reference to the + * gradient's value is returned, + * there should be no major * performance drawback. - * The function returns the gradient on the - * real element, not the reference element. */ const Tensor<1,dim> & shape_grad (const unsigned int function, const unsigned int quadrature_point) const; /** - * Return a pointer to the matrix holding - * all gradients of shape functions at all - * integration points, on the present cell. - * For the format of this matrix, see the - * documentation for the matrix itself. - */ - const typename std::vector > > & get_shape_grads () const; + * Pointer to the matrix holding + * all gradients of shape + * functions at all integration + * points, on the present cell. + * For the format of this matrix, + * see the documentation for the + * matrix itself. + * + * Use of this function is + deprecated. + */ + const typename FEValuesData::GradientVector & get_shape_grads () const; /** - * Return the gradients of the finite + * Gradients of the finite * element function characterized * by @p{fe_function} restricted to * @p{cell} at the quadrature points. @@ -411,28 +422,25 @@ class FEValuesBase typename std::vector > > &gradients) const; /** - * Return the 2nd derivatives of - * the @p{i}th shape function at - * the @p{j} quadrature point. If - * you want to get the derivatives - * in one of the coordinate - * directions, use the - * appropriate function of the - * @p{Tensor} class to extract one - * component. Since only a - * reference to the derivatives' - * values is returned, there - * should be no major performance - * drawback. The function - * returns the derivatives on the - * real element, not the - * reference element. - */ - const Tensor<2,dim> & shape_2nd_derivative (const unsigned int function, - const unsigned int quadrature_point) const; - - /** - * Return a pointer to the + * 2nd derivatives of + * the @p{function_no}th shape function at + * the @p{point_no}th quadrature point + * with respect to real cell + * coordinates. If you want to + * get the derivatives in one of + * the coordinate directions, use + * the appropriate function of + * the @p{Tensor} class to + * extract one component. Since + * only a reference to the + * derivative values is returned, + * there should be no major + * performance drawback. */ + const Tensor<2,dim> & shape_2nd_derivative (const unsigned int function_no, + const unsigned int point_no) const; + + /** + * Pointer to the * matrix holding all 2nd * derivatives of shape functions * at all integration points, on @@ -444,15 +452,16 @@ class FEValuesBase const typename std::vector > > & get_shape_2nd_derivatives () const; /** - * Return the tensor of second - * derivatives of the finite - * element function characterized - * by @p{fe_function} restricted to - * @p{cell} at the quadrature points. + * Tensor of second derivatives + * of the finite element function + * characterized by + * @p{fe_function} restricted to + * @p{cell} at the quadrature + * points. * * The function assumes that the - * @p{second_derivatives} object already has - * the right size. + * @p{second_derivatives} object + * already has the correct size. * * The actual data type of the * input vector may be either a @@ -461,8 +470,8 @@ class FEValuesBase * @p{BlockVector}. */ template - void get_function_2nd_derivatives (const InputVector &fe_function, - typename std::vector > &second_derivatives) const; + void get_function_2nd_derivatives (const InputVector& fe_function, + typename std::vector >& second_derivatives) const; /** @@ -492,17 +501,8 @@ class FEValuesBase typename std::vector > > &second_derivatives) const; /** - * Return the position of the @p{i}th + * Position of the @p{i}th * quadrature point in real space. - * - * If this object is used to evaluate - * finite elements on faces of cells, - * and for curved boundary cells, using - * biquadratic or higher mappings - * of the unit cell to the real cell, - * these points may not be on the - * plane submannifold on which the - * vertices of the face lie. */ const Point & quadrature_point (const unsigned int i) const; @@ -513,72 +513,41 @@ class FEValuesBase const typename std::vector > & get_quadrature_points () const; /** - * Return the point in real space where - * the @p{i}th trial function is located - * (location is in the sense of where it - * assumes its nominal properties, e.g. at - * the vertex of a cell, at the center of - * a line, etc). - * - * This function is needed for the - * interpolation problem: if we want to - * transfer a continuous function to a - * finite element function by interpolation - * we have to take the continuous - * function's value at the trial function - * locations. - * - * For the evaluation of finite elements on - * faces of cells, @p{i} is the number - * of the trial function on the face, not - * on the cell. - */ - const Point & support_point (const unsigned int i) const; - - /** - * Return a pointer to the vector of points - * denoting the location of the trial - * functions. - */ - const typename std::vector > & get_support_points () const; - - /** - * Return the Jacobi determinant times - * the weight of the @p{i}th quadrature - * point. + * Mapped quadrature weight. This + * is the Jacobi determinant + * times the weight of the + * @p{i}th unit quadrature point. * - * If faces of cells are concerned, - * the jacobi determinant is that of the - * transformation of the unit face to - * the present face, not of the unit - * cell to the real cell (unlike for - * the @p{jacobi_matrix} array of the - * derived classes which store the cell - * transformation's Jacobi matrix in - * all cases). + * On faces, this is the mapped + * surface element. */ double JxW (const unsigned int quadrature_point) const; /** - * Return a pointer to the array holding + * Pointer to the array holding * the Jacobi determinant times the * quadrature weight at the different * quadrature points. */ const std::vector & get_JxW_values () const; + + /** + * Return the present cell. + */ + const typename DoFHandler::cell_iterator & get_cell() const; /** - * Return a constant reference to the - * selected finite element object. This - * function is inline, so it should - * be reasonably fast. + * Constant reference to the + * selected mapping object. */ - const FiniteElement & get_fe () const; + const Mapping & get_mapping () const; /** - * Return the present cell. + * Constant reference to the + * selected finite element + * object. */ - const typename DoFHandler::cell_iterator & get_cell() const; + const FiniteElement & get_fe () const; /** * Determine an estimate for the @@ -609,10 +578,6 @@ class FEValuesBase /** * Exception */ - DeclException0 (ExcInternalError); - /** - * Exception - */ DeclException0 (ExcInvalidUpdateFlag); /** * Exception @@ -621,229 +586,67 @@ class FEValuesBase protected: /** - * Store the values of the shape functions - * at the quadrature points. Rows in the - * matrices denote the values of a single - * shape function at the different points, - * columns are for a single point with the - * different shape functions. - * - * For cell values, the vector contains - * only one entry, representing the - * restriction of the finite element trial - * space to a cell. For face values, the - * vector contains as many elements as - * there are faces, for subfaces the same - * applies. Which of the matrices is active - * is determined by the @p{selected_dataset} - * variable. - */ - std::vector > shape_values; - - /** - * Store the gradients of the shape - * functions at the quadrature points. - * Since unfortunately the full matrix - * classes of DEAL are not templated, - * we have to store them in an - * archetypic style. - * - * This field is reset each time - * @p{reinit} is called and contains the - * gradients on the real element, rather - * than on the reference element. - */ - typename std::vector > > shape_gradients; - - /** - * Store the 2nd derivatives of the shape - * functions at the quadrature points. - * - * This field is reset each time - * @p{reinit} is called and contains the - * gradients on the real element, rather - * than on the reference element. - */ - typename std::vector > > shape_2nd_derivatives; - - /** - * Store an array of the weights of the - * quadrature points. This array is - * set up upon construction. - * - * If faces rather than cells are - * considered, the weights are stored - * only once still, since they are - * not transformed and are thus the same - * for all faces. - */ - std::vector weights; - - /** - * Store an array of weights times the - * Jacobi determinant at the quadrature - * points. This function is reset each time - * @p{reinit} is called. The Jacobi determinant - * is actually the reciprocal value of the - * Jacobi matrices stored in this class, - * see the general documentation of this - * class for more information. - */ - std::vector JxW_values; - - /** - * Array of quadrature points. This array - * is set up upon calling @p{reinit} and - * contains the quadrature points on the - * real element, rather than on the - * reference element. - */ - typename std::vector > quadrature_points; - - /** - * Array of points denoting the off-point - * of the trial functions. In real space - * (no-one seems to need the off-point - * on the unit cell, so no function is - * provided for this). - */ - typename std::vector > support_points; - - /** - * Store the jacobi matrices at the - * different quadrature points. This field - * is set each time @p{reinit} is called. - * - * If faces rather than cells are considered - * this is the Jacobi matrix of the - * transformation of the unit cell to the - * real cell, not of the unit face to the - * face. We need this full matrix for the - * transformation of the gradients to the - * real cell. + * Store the cell selected last time + * the @p{reinit} function was called + * to make access + * to the @p{get_function_*} functions + * safer. */ - typename std::vector > jacobi_matrices; + DoFHandler::cell_iterator present_cell; /** - * Store the derivatives of the jacobi - * matrices. If @p{J[j][k]} is the jacobi - * matrix, then the index @p{[i][j][k]} - * of this field denotes the derivation - * of @p{J[j][k]} with respect to the - * @p{i}th variable. - * - * The same general remarks apply as for - * @p{jacobi_matrices}. + * Storage for the mapping object. */ - typename std::vector > jacobi_matrices_grad; + const SmartPointer > mapping; /** - * Store the values of the basis functions - * of the transformation from unit cell - * to real cell at the quadrature points. - * - * This field stores some data which is not - * really needed for the assemblage of - * matrices and vectors but makes that - * operation much faster. Each time the - * @p{FEValues::reinit} function calls - * the @p{FiniteElemenet::fill_fe_values} - * function, this and the next array are - * passed. The @p{fill_fe_values} function - * may or may not use this field. - * - * The element @p{(i,j)} denotes the value - * of the @p{i}th transfer basis function - * at the @p{j}th quadrature point. + * Store the finite element for later use. */ - std::vector > shape_values_transform; + const SmartPointer > fe; - /** - * Store which of the data sets in the - * @p{shape_values} array is presently - * active. This variable is set by the - * @p{reinit} functions of the derived - * classes. For the exact meaning see - * there and in the doc for this class. - */ - unsigned int selected_dataset; /** - * Store which fields are to be updated by - * the reinit function. + * Internal data of mapping. */ - UpdateFlags update_flags; + SmartPointer::InternalDataBase> mapping_data; /** - * Store the cell selected last time - * the @p{reinit} function was called - * to make access - * to the @p{get_function_*} functions - * safer. + * Internal data of finite element. */ - typename DoFHandler::cell_iterator present_cell; - - /** - * Store the finite element for later use. - */ - const SmartPointer > fe; + SmartPointer::InternalDataBase> fe_data; + }; /** - * Represent a finite element evaluated with a specific quadrature rule on - * a cell. - * - * The unit cell is defined to be the tensor product of the interval $[0,1]$ - * in the present number of dimensions. In part of the literature, the convention - * is used that the unit cell be the tensor product of the interval $[-1,1]$, - * which is to distinguished properly. - * - * Objects of this class store a multitude of different values needed to - * do the assemblage steps on real cells rather than on the unit cell. Among - * these values are the values and gradients of the shape functions at the - * quadrature points on the real and the unit cell, the location of the - * quadrature points on the real and on the unit cell, the weights of the - * quadrature points, the Jacobian matrices of the mapping from the unit to - * the real cell at the quadrature points and so on. + * Finite element evaluated in quadrature points of a cell. * - * @author Wolfgang Bangerth, 1998 + * This function implements the initialization routines for + * @ref{FEValuesBase}, if values in quadrature points of a cell are + * needed. For further documentation see this class. + * + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2001 */ template class FEValues : public FEValuesBase { public: - - /** - * Constructor. Fill all arrays with the - * values of the shape functions of the - * specified finite element using the - * quadrature points of the given - * quadrature rule. - * - * This function actually only fills - * the fields related to the unit face, - * the fields related to a real face (like - * gradients, true quadrature points, etc.) - * need to be initialized using the - * @p{reinit} function. - * - * UPDATE! - * - * This function needs a boundary object - * passed, since this class needs to know - * how to handle faces which are located - * on the boundary of the domain. In that - * case, faces may be curved and the - * calculation of quadrature points, - * gradients and the like may need - * additional effort, depending on the - * mapping from the unit to the real cell - * (linear mappings use straight boundary - * segments, but higher order elements - * may use other ways.) + * Constructor. Gets cell + * independent data from mapping + * and finite element objects, + * matching the quadrature rule + * and update flags. + */ + FEValues (const Mapping &mapping, + const FiniteElement &fe, + const Quadrature &quadrature, + const UpdateFlags update_flags); + + /** + * Constructor. Uses @ref{MappingQ1} + * implicitly. */ FEValues (const FiniteElement &fe, const Quadrature &quadrature, @@ -865,109 +668,23 @@ class FEValues : public FEValuesBase private: /** - * Store the gradients of the shape - * functions at the quadrature points on - * the unit cell. - * This field is set up upon construction - * of the object and contains the gradients - * on the reference element. - */ - typename std::vector > > unit_shape_gradients; - - /** - * Store the 2nd derivatives of the shape - * functions at the quadrature points on - * the unit cell. - * This field is set up upon construction - * of the object and contains the - * derivatives on the reference element. - */ - typename std::vector > > unit_shape_2nd_derivatives; - - /** - * Gradients of the basis - * functions of the transformation. - * Analogous to the @p{shape_values_transform} - * array of the base class. + * Store the quadrature formula here. */ - typename std::vector > > unit_shape_gradients_transform; - - /** - * Array of quadrature points in the unit - * cell. This array is set up upon - * construction and contains the quadrature - * points on the reference element. - */ - typename std::vector > unit_quadrature_points; + const Quadrature quadrature; }; /** - * This class provides for the data elements needed for the restriction of - * finite elements to faces or subfaces. It does no real computations, apart - * from initialization of the fields with the right size. It more or - * less is only a base class to the @p{FEFaceValues} and @p{FESubfaceValues} - * classes which do the real computations. See there for descriptions of - * what is really going on. - * - * Since many of the concepts are the same whether we restrict a finite element - * to a face or a subface (i.e. the child of the face of a cell), we describe - * those common concepts here, rather than in the derived classes. - * + * Extend the interface of @ref{FEValuesBase} by surface values. * - * @sect3{Technical issues} + * On surfaces of mesh cells, normal vectors and boundary forms are + * additional values that can be computed. This class provides the + * interface to access those. Implementations are in derived classes + * @p{FEFaceValues} and @p{FESubfaceValues}. * - * The unit face is defined to be the tensor product of the interval $[0,1]$ - * in the present number of dimensions minus one. In part of the literature, - * the convention is used that the unit cell/face be the tensor product of the - * interval $[-1,1]$, which is to distinguished properly. A subface is the - * child of a face; they are numbered in the way laid down in the - * @ref{Triangulation} class. + * @see{FEValuesBase} * - * Just like in the @p{FEValues} class, function values and gradients on the unit - * face or subface are evaluated at the quadrature points only once, and stored - * by the common base class. Being a tensor of rank zero, the function values - * remain the same when we want them at the quadrature points on the real cell, - * while we get the gradients (a tensor of rank one) by multiplication with the - * Jacobi matrix of the transformation, which we need to compute for each cell - * and each quadrature point. - * - * However, while in the @p{FEValues} class the quadrature points are always the - * same, here we deal with more than one (sub)face. We therefore store the values - * and gradients of the trial functions on the unit cell in an array with as - * many elements as there are (sub)faces on a cell. The same applies for the - * quadrature points on the (sub)faces: for each (sub)face we store the position - * on the cell. This way we still need to evaluate unit gradients and function - * values only once and only recompute the gradients on the real (sub)face by - * multiplication of the unit gradients on the presently selected (sub)face - * with the Jacobi matrix. - * - * - * When the @p{reinit} function of a derived class is called, only those - * gradients, quadrature points etc are transformed to the real cell which - * belong to the selected face or subface. The number of the selected face - * or subface is stored in the @p{selected_dataset} variable of the base class - * such that the @p{shape_value} function can return the shape function's - * values on the (sub)face which was last selected by a call to the @p{reinit} - * function. - * - * In addition to the complications described above, we need two different - * Jacobi matrices and determinants in this context: one for the transformation - * of the unit cell to the real cell (this Jacobi matrix is needed to - * compute the restriction of the real gradient to the given face) and one - * for the transformation of the unit face to the real face or subface - * (needed to compute the weight factors for integration along faces). These two - * concepts have to be carefully separated. - * - * Finally, we will often need the outward normal to a cell at the quadrature - * points. While this could in principle be easily done using the Jacobi - * matrices at the quadrature points and the normal vectors to the unit cell - * (also easily derived, since they have an appealingly simple form for the unit - * cell ;-), it is more efficiently done by the finite element class itself. - * For example for (bi-, tri-)linear mappings the normal vector is readily - * available without complicated matrix-vector-multiplications. - * - * @author Wolfgang Bangerth, 1998 + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2000, 2001 */ template class FEFaceValuesBase : public FEValuesBase @@ -992,14 +709,14 @@ class FEFaceValuesBase : public FEValuesBase * per face. */ FEFaceValuesBase (const unsigned int n_q_points, - const unsigned int n_support_points, const unsigned int dofs_per_cell, - const unsigned int n_transform_functions, const unsigned int n_faces_or_subfaces, const UpdateFlags update_flags, - const FiniteElement &fe); - - /** + const Mapping &mapping, + const FiniteElement &fe, + const Quadrature& quadrature); + + /** * Return the outward normal vector to * the cell at the @p{i}th quadrature * point. The length of the vector @@ -1007,6 +724,25 @@ class FEFaceValuesBase : public FEValuesBase */ const Point & normal_vector (const unsigned int i) const; + /** + * Boundary form of the + * transformation of the cell at + * the @p{i}th quadrature point. + * + * The boundary form is the cross + * product of the images of the + * unit tangential + * vectors. Therefore, it is the + * unit normal vector multiplied + * with the surface + * element. Since it may be + * cheaper to compute the + * boundary form immediately, use + * this value to integrate + * @p{n.ds}. + */ + const Tensor<1,dim> & boundary_form (const unsigned int i) const; + /** * Return the list of outward normal * vectors to the cell at the @@ -1015,87 +751,22 @@ class FEFaceValuesBase : public FEValuesBase const typename std::vector > & get_normal_vectors () const; /** - * Return the present - * face. + * Return the list of outward normal + * vectors times quadrature weights. */ - typename DoFHandler::face_iterator get_face() const; + const std::vector > & get_boundary_forms () const; /** - * Determine an estimate for the - * memory consumption (in bytes) - * of this object. + * Return the present + * face. */ - unsigned int memory_consumption () const; - + typename DoFHandler::face_iterator get_face() const; protected: /** - * Store the gradients of the shape - * functions at the quadrature points on - * the unit cell. - * This field is set up upon construction - * of the object and contains the gradients - * on the reference element. - * - * There is one element for each face or - * subface, with indices like that: - * @p{unit_shape_gradients[face][dof][q_point]} - */ - typename std::vector > > > unit_shape_gradients; - - /** - * Store the 2nd derivatives of the shape - * functions at the quadrature points on - * the unit cell for each face. - * This field is set up upon construction - * of the object and contains the - * derivatives on the reference element. - */ - typename std::vector > > > unit_shape_2nd_derivatives; - - /** - * Gradients of the basis - * functions of the transformation. - * Analogous to the @p{shape_values_transform} - * array of the base class. - */ - typename std::vector > > > unit_shape_gradients_transform; - - /** - * Array of quadrature points on the - * unit face. This is a copy of the - * alike field of the quadrature formula - * passed upon construction. - */ - typename std::vector > unit_face_quadrature_points; - - /** - * Array of quadrature points in the unit - * cell. This array is set up upon - * construction and contains the quadrature - * points on the reference element. - * - * There is one element for each face or - * subface. The points are computed from - * those on the unit face, but are stored - * as coordinates on the unit cell. - */ - typename std::vector > > unit_quadrature_points; - - /** - * List of values denoting the determinant - * of the transformation from the unit face - * to the real face or subface. Needed to - * actually compute the JxW values. - */ - std::vector face_jacobi_determinants; - - /** - * List of outward normal vectors at the - * quadrature points. This field is filled - * in by the finite element class. + * Store the quadrature formula here. */ - typename std::vector > normal_vectors; + const Quadrature quadrature; /** * Stores the face or subface, @@ -1108,66 +779,42 @@ class FEFaceValuesBase : public FEValuesBase }; - /** - * Represent a finite element evaluated with a specific quadrature rule on - * the face of a cell. + * Finite element evaluated in quadrature points on a face. + * + * This class adds the functionality of @ref{FEFaceValuesBase} to + * @ref{FEValues}; see there for more documentation. + * + * Since finite element functions and their derivatives may be + * discontinuous at cell boundaries, there is no restriction of this + * function to a mesh face. But, there are limits of these values + * approaching the face from either of the neighboring cells. * - * This class is very similar to the @p{FEValues} class; see there for more - * documentation. It is, however, a bit more involved: since we want to - * compute the restriction of finite element functions (here: the basis - * functions, but a finite element function is obtained by multiplication - * with the nodal values and summation) to the face of a cell and since - * finite element functions and especially their gradients need not be - * continuous at faces, we can not compute the wanted information from - * the face and a finite element class on the unit cell alone, but we - * need the real cell as well. In addition, we need to know what number - * the face is in the set of faces of the cell we want to restrict. - * Finally, since we may want to use higher order elements with unit cell - * to real cell mappings of higher than first order, thus applying curved - * boundaries, we need to know an object describing the boundary of the - * domain. - * - * @author Wolfgang Bangerth, 1998 + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2000, 2001 */ template class FEFaceValues : public FEFaceValuesBase { public: /** - * Constructor. Fill all arrays with the - * values of the shape functions of the - * specified finite element using the - * quadrature points of the given - * quadrature rule for the face, which - * has a dimension one less than the - * cell. - * - * This function actually only fills - * the fields related to the unit face, - * the fields related to a real face (like - * gradients, true quadrature points, etc.) - * need to be initialized using the - * @p{reinit} function. - * - * UPDATE! - * - * This function needs a boundary object - * passed, since this class needs to know - * how to handle faces which are located - * on the boundary of the domain. In that - * case, faces may be curved and the - * calculation of quadrature points, - * gradients and the like may need - * additional effort, depending on the - * mapping from the unit to the real cell - * (linear mappings use straight boundary - * segments, but higher order elements - * may use other ways.) - */ - FEFaceValues (const FiniteElement &, - const Quadrature &, - const UpdateFlags); + * Constructor. Gets cell + * independent data from mapping + * and finite element objects, + * matching the quadrature rule + * and update flags. + */ + FEFaceValues (const Mapping& mapping, + const FiniteElement& fe, + const Quadrature& quadrature, + const UpdateFlags update_flags); + + /** + * Constructor. Uses @ref{MappingQ1} + * implicitly. + */ + FEFaceValues (const FiniteElement& fe, + const Quadrature& quadrature, + const UpdateFlags update_flags); /** * Reinitialize the gradients, Jacobi @@ -1181,128 +828,45 @@ class FEFaceValues : public FEFaceValuesBase /** - * Represent a finite element evaluated with a specific quadrature rule on - * the child of the face of a cell. + * Finite element evaluated in quadrature points on a face. * - * This class is very similar to the @p{FEFaceValues} class; see there for - * more documentation. It serves the computation of interface integrals - * where the cells on both sides of the face have different refinement - * levels. This is useful for example when we want to integrate the jump - * of the gradient of the finite element solution along the boundary of - * a cell to estimate the error. Now, this is not so much of a problem - * if all neighbors of the cell have the same refinement level, then we - * will use the @p{FEFaceValues} class, but it gets trickier if one of the - * cells is more refined than the other. + * This class adds the functionality of @ref{FEFaceValuesBase} to + * @ref{FEValues}; see there for more documentation. * - * To this end, there seem to be two ways which may be applicable: - * @begin{itemize} - * @item Prolong the coarser cell to the finer refinement level: we could - * compute the prolongation of the finite element functions to the - * child cells and consider the subface a face of one of the child cells. - * This approach seems clear and rather simple to implement, however it - * has two major drawbacks: first, the finite element space on the - * refined (child) cells may not be included in the space of the unrefined - * cell, in which case the prolongation would alter information and thus - * make computations worthless in the worst case. The second reason is - * a practical one, namely that by refining the cell virtually, we would - * end up with child cells which do not exist in real and can thus not be - * represented in terms of iterators. This would mean that we had to change - * the whole interface to the @p{FE*Values} classes to accept cell corner - * points by value, etc, instead of relying on appropriate iterators. This - * seems to be clumsy and not very suitable to maintain an orthogonal - * programming style. Apart from that, we already have iterators, why - * shouldn't we use them? - * - * @item Use 'different' quadrature formulae: this second approach is the - * way we chose here. The idea is to evaluate the finite element trial - * functions on the two cells restricted to the face in question separately, - * by restricting the trial functions on the less refined cell to its - * face and the functions on the more refined cell to its face as well, - * the second face being a child to the first one. Now, if we would use - * the same quadrature formula for both restrictions, we would end up with - * the same number of quadrature points, but at different locations since - * they were evaluated on faces of different size. We therefore use the - * original quadrature formula for the refined cell and a modified one for - * the coarse cell, the latter being modified in such a way that the - * locations of the quadrature points match each other. + * This class is used for faces lying on a refinement edge. In this + * case, the neighboring cell is refined. To be able to compute + * differences between interior and exterior function values, the + * refinement of the neighboring cell must be simulated on this + * cell. This is achieved by applying a quadrature rule that simulates + * the refinement. The resulting data fields are split up to reflect + * the refinement structure of the neighbor: a subface number + * corresponds to the number of the child of the neighboring face. * - * An example may shed more light onto this: assume we are in two dimension, - * we have a cell of which we want to evaluate a finite element function on - * face zero, and neighbor zero is refined (then so is face zero). The - * quadrature formula shall be the Simpson rule with quadrature points - * $0$, $0.5$ and $1$. The present cell shall be the unit cell, without - * loss of generality. Then the face in question is the line $(0,0)$ to - * $(1,0)$, subdivided into two subfaces. We will then compute the - * restriction of the present cell to the common subface $(0,0)$ to - * $(0.5,5)$ by using a modified quadrature formulae with quadrature - * points $(0,0)$, $(0.25,0)$ and $(0.5,0)$ (coordinates on the cell) - * which is not symmetric as was the original quadrature rule for a line. - * This modified quadrature rule is computed by projection onto the subface - * using the @p{QProjector::project_to_subface()} function. The neighboring - * cell, being refined once more than the present is evaluated with the - * quadrature formula projected to the common face, but using the original - * quadrature formula. This way, the locations of the quadrature points - * on both sides of the common face match each other. - * @end{itemize} - * - * For a use of this mechanism, take a look of the code in the error - * estimation hierarchy, since there often the jump of a finite element - * function's gradient across cell boundaries is computed. - * - * - * @sect3{Other implementational subjects} - * - * It does not seem useful to ask for the off-points of the trial functions - * (name @p{support_points} in the @p{FEValuesBase} class) for subfaces. These are - * therefore not supported for this class and should throw an error if - * accessed. Specifying @p{update_support_points} for the @p{UpdateFlags} in the - * constructor is disallowed. - * - * The values of the trial functions on the subfaces are stored as an array - * of matrices, each matrix representing the values of the trial functions at - * the quadrature points at one subface. The ordering is as follows: the values - * of the trial functions at face @p{face}, subface @p{subface} are stored in - * @p{shape_values[face*(1<<(dim-1))+subface]}. The same order applies for the - * quadrature points on the unit cell, which are stored in the - * @p{unit_quadrature_points} array. Note that @p{1<<(dim-1)} is the number of - * subfaces per face. - * - * One subtle problem is that if a face is at the boundary, then computation - * of subfaces may be a bit tricky, since we do not know whether the user - * intends to better approximate the boundary by the subfaces or only wants - * to have the subfaces be one part of the mother face. However, it is hardly - * conceivable what someone wants when using this class for faces at the - * boundary, in the end this class was invented to facilitate integration - * along faces with cells of different refinement levels on both sides, - * integration along the boundary of the domain is better done through - * the @p{FEFaceValues} class. For this reason, calling @p{reinit} with a - * boundary face will result in an error. - * - * @author Wolfgang Bangerth, 1998 + * @author Wolfgang Bangerth, 1998, Guido Kanschat, 2000, 2001 */ template class FESubfaceValues : public FEFaceValuesBase { public: /** - * Constructor. Fill all arrays with the - * values of the shape functions of the - * specified finite element using the - * quadrature points of the given - * quadrature rule for the face, which - * has a dimension one less than the - * cell. - * - * This function actually only fills - * the fields related to the unit face, - * the fields related to a real face (like - * gradients, true quadrature points, etc.) - * need to be initialized using the - * @p{reinit} function. + * Constructor. Gets cell + * independent data from mapping + * and finite element objects, + * matching the quadrature rule + * and update flags. */ - FESubfaceValues (const FiniteElement &fe, - const Quadrature &face_quadrature, - const UpdateFlags update_flags); + FESubfaceValues (const Mapping& mapping, + const FiniteElement& fe, + const Quadrature& face_quadrature, + const UpdateFlags update_flags); + + /** + * Constructor. Uses @ref{MappingQ1} + * implicitly. + */ + FESubfaceValues (const FiniteElement& fe, + const Quadrature& face_quadrature, + const UpdateFlags update_flags); /** * Reinitialize the gradients, Jacobi @@ -1332,68 +896,56 @@ class FESubfaceValues : public FEFaceValuesBase template inline -const FullMatrix & FEValuesBase::get_shape_values () const +double +FEValuesBase::shape_value (const unsigned int i, + const unsigned int j) const { Assert (update_flags & update_values, ExcAccessToUninitializedField()); - Assert (selected_dataset inline -const typename std::vector > > & -FEValuesBase::get_shape_grads () const +const Tensor<1,dim> & +FEValuesBase::shape_grad (const unsigned int i, + const unsigned int j) const { + Assert (i -inline -const typename std::vector > > & -FEValuesBase::get_shape_2nd_derivatives () const -{ - Assert (update_flags & update_second_derivatives, ExcAccessToUninitializedField()); - return shape_2nd_derivatives; + return shape_gradients[i][j]; }; template inline -const typename std::vector > & -FEValuesBase::get_quadrature_points () const +const Tensor<2,dim> & +FEValuesBase::shape_2nd_derivative (const unsigned int i, + const unsigned int j) const { - Assert (update_flags & update_q_points, ExcAccessToUninitializedField()); - return quadrature_points; -}; - - + Assert (i -inline -const typename std::vector > & -FEValuesBase::get_support_points () const -{ - Assert (update_flags & update_support_points, ExcAccessToUninitializedField()); - return support_points; -}; + return shape_2nd_derivatives[i][j]; +} template inline -const std::vector & -FEValuesBase::get_JxW_values () const +const typename DoFHandler::cell_iterator & +FEValuesBase::get_cell() const { - Assert (update_flags & update_JxW_values, ExcAccessToUninitializedField()); - return JxW_values; -}; + return present_cell; +} @@ -1403,32 +955,33 @@ const FiniteElement & FEValuesBase::get_fe () const { return *fe; -}; - +} template inline -const typename DoFHandler::cell_iterator & -FEValuesBase::get_cell() const +const Mapping & +FEValuesBase::get_mapping () const { - return present_cell; -}; + return *mapping; +} + /*------------------------ Inline functions: FEFaceValuesBase --------------------*/ + template -inline -const typename std::vector > & -FEFaceValuesBase::get_normal_vectors () const +const Point & +FEFaceValuesBase::normal_vector (const unsigned int i) const { + Assert (i::ExcAccessToUninitializedField()); - return normal_vectors; + FEValuesBase::ExcAccessToUninitializedField()); + + return normal_vectors[i]; }; - template inline typename DoFHandler::face_iterator diff --git a/deal.II/deal.II/include/fe/mapping.h b/deal.II/deal.II/include/fe/mapping.h index e69de29bb2..fed9d47ca0 100644 --- a/deal.II/deal.II/include/fe/mapping.h +++ b/deal.II/deal.II/include/fe/mapping.h @@ -0,0 +1,372 @@ +//---------------------------- mapping.h --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- mapping.h --------------------------- +#ifndef __deal2__mapping_h +#define __deal2__mapping_h + + +#include +#include +#include +#include +#include +#include + +template class Quadrature; +template class FEValuesData; +template class FEValues; + +/** + * Abstract basis class for mapping classes. + * + * The interface for filling the tables of @ref{FEValues} is provided. + * Everything else has to happen in derived classes. + * + * The following paragraph applies to the implementation of + * @ref{FEValues}. Usage of the class is as follows: first, call the + * functionss @p{update_once} and @p{update_each} with the update + * flags you need. Then call @p{get_*_data} and with the result of + * @p{update_once}. This will initialize some internal data + * structures. On the first cell, call @p{fill_fe_*_values} with the + * result of @p{update_once}. Finally, on each cell, use + * @p{fill_fe_*_values} with the result of @p{update_each} to compute + * values for a special cell. + * + * @author Guido Kanschat, 2000 + */ +template +class Mapping : public Subscriptor +{ + public: + /** + * Class for internal data of finite + * element and mapping objects. + */ + class InternalDataBase: public Subscriptor + { + public: + /** + * Constructor. Sets + * @p{UpdateFlags} to + * @p{update_default} and + * @p{first_cell} to @p{true}. + */ + InternalDataBase (); + + /** + * Virtual destructor for + * derived classes + */ + virtual ~InternalDataBase (); + + /** + * Values updated by the constructor or + * by reinit. + */ + UpdateFlags update_flags; + + /** + * Values computed by + * constructor. + */ + UpdateFlags update_once; + + /** + * Values updated on each + * cell by reinit. + */ + UpdateFlags update_each; + + /** + * If @p{first_cell==true} + * this function returns + * @p{update_flags}, + * i.e. @p{update_once|update_each}. + * If @p{first_cell==false} + * it returns + * @p{update_each}. + */ + UpdateFlags current_update_flags() const; + + /** + * Determine if this is the first + * cell visited. Then, we need to + * use @p{update_once} to fill + * cell-independent fields. + */ + bool first_cell; + }; + + + /** + * Virtual destructor. + */ + virtual ~Mapping (); + /** + * Prepare internal data + * structures and fill in values + * independent of the cell. + */ + virtual InternalDataBase* + get_data (const UpdateFlags, + const Quadrature& quadrature) const = 0; + + /** + * Prepare internal data + * structure for transformation + * of faces and fill in values + * independent of the cell. + */ + virtual InternalDataBase* + get_face_data (const UpdateFlags flags, + const Quadrature& quadrature) const = 0; + /** + * Prepare internal data + * structure for transformation + * of children of faces and fill + * in values independent of the + * cell. + */ + virtual InternalDataBase* + get_subface_data (const UpdateFlags flags, + const Quadrature& quadrature) const = 0; + + + /** + * Fill the transformation fields + * of @p{FEValues}. Given a grid + * cell and the quadrature points + * on the unit cell, it computes + * all values specified by + * @p{flags}. The arrays to be + * filled have to have the + * correct size. + * + * Values are split into three + * groups: first, + * @p{quadrature_points} and + * @p{JxW_values} are + * filled with the quadrature + * rule transformed to the + * cell in physical space. + * + * The second group contains the + * matrices needed to transform + * vector-valued functions, + * namely + * @p{covariant_transformation}, + * @p{contravariant_transformation} and the + * derivatives + * @p{covariant_grads}. + * + */ + virtual void + fill_fe_values (const typename DoFHandler::cell_iterator &cell, + const Quadrature& quadrature, + InternalDataBase& internal, + std::vector > &quadrature_points, + std::vector &JxW_values) const = 0; + + /** + * Performs the same as @p{fill_fe_values} + * on a face. + * Additionally, @p{boundary_form} and + * @p{normal_vectors} can be + * computed on surfaces. The + * boundary form is the vector + * product of the image of + * coordinate vectors on the + * surface of the unit + * cell. It is a + * vector normal to the surface, + * pointing outwards and having + * the length of the surface + * element. + * Therefore, it is more economic + * to use the boundary form + * instead of the product of the + * unit normal and the + * transformed quadrature weight. + */ + virtual void + fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature& quadrature, + InternalDataBase& internal, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const = 0; + + /** + * See above. + */ + virtual void + fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature& quadrature, + InternalDataBase& internal, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const = 0; + + + /** + * Tranform a field of covariant vectors. + * There must be one vector for each quadrature + * point. Alternatively, for faces and subfaces, + * the first quadrature point can be + * given as additional argument. + */ + virtual void transform_covariant (std::vector > &dst, + const std::vector > &src, + const InternalDataBase& internal, + const unsigned int src_offset) const = 0; + + /** + * Tranform a field of contravariant vectors. + * There must be one vector for each quadrature + * point. Alternatively, for faces and subfaces, + * the first quadrature point can be + * given as additional argument. + */ + virtual void transform_contravariant (std::vector > &dst, + const std::vector > &src, + const InternalDataBase& internal, + const unsigned int src_offset) const = 0; + + /** + * Tranform a field of covariant vectors. + * There must be one vector for each quadrature + * point. Alternatively, for faces and subfaces, + * the first quadrature point can be + * given as additional argument. + */ + virtual void transform_covariant (std::vector > &dst, + const std::vector > &src, + const InternalDataBase& internal, + const unsigned int src_offset) const = 0; + + /** + * Tranform a field of contravariant vectors. + * There must be one vector for each quadrature + * point. Alternatively, for faces and subfaces, + * the first quadrature point can be + * given as additional argument. + */ + virtual void transform_contravariant (std::vector > &dst, + const std::vector > &src, + const InternalDataBase& internal, + const unsigned int src_offset) const = 0; + + /** + * Transforms the point @p{p} on + * the unit cell to the point + * @p{p_real} on the real cell + * @p{cell} and returns @p{p_real}. + * + * Give pointer @p{m_data} if the + * shape values at point @p{p} + * and the mapping support points + * of the cell are computed + * earlier. This pointer is + * mainly for internal use (used + * by the + * @p{transform_real_to_unit_cell} + * function). As default this + * pointer is set to 0 and the + * shape values and the mapping + * support points are compute + * within this function. + */ + virtual Point transform_unit_to_real_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p, + const InternalDataBase *const m_data=0) const=0; + + /** + * Transforms the point @p{p} on + * the real cell to the point + * @p{p_unit} on the unit cell + * @p{cell} and returns @p{p_unit}. + */ + virtual Point transform_real_to_unit_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p) const=0; + + /** + * Indicate fields to be updated in the + * constructor of @ref{FEValues}. Especially, + * fields not asked for by @ref{FEValues}, but + * computed for efficiency reasons will be + * notified here. + */ + virtual UpdateFlags update_once (const UpdateFlags) const = 0; + + /** + * The same as @p{update_once}, + * but for the flags to be updated for + * each grid cell. + */ + virtual UpdateFlags update_each (const UpdateFlags) const = 0; + + /** + * Exception + */ + DeclException0 (ExcInvalidData); + + protected: + /** + * Vector of unit normal + * directions. The entry divided by + * 2 determines the non-zero + * component of the normal vector: + * 0 means x, 1 means y and 2 means + * z. The entry modulo 2 determines + * the orientation of the first + * tangential vector in the + * corss-product. This has to be + * chosen such that the normal + * vector points outwards. + * + * This variable is purely for + * internal use and its values are + * determined by its usage in the + * source code. + */ + static const unsigned int normal_directions[2*dim]; +}; + + + + +template +inline +UpdateFlags +Mapping::InternalDataBase::current_update_flags() const +{ + if (first_cell) + { + Assert(update_flags==(update_once|update_each), ExcInternalError()); + return update_flags; + } + else + return update_each; + + return update_default; +} + + + +#endif diff --git a/deal.II/deal.II/include/fe/mapping_cartesian.h b/deal.II/deal.II/include/fe/mapping_cartesian.h index e69de29bb2..be6c2e2374 100644 --- a/deal.II/deal.II/include/fe/mapping_cartesian.h +++ b/deal.II/deal.II/include/fe/mapping_cartesian.h @@ -0,0 +1,258 @@ +//---------------------------- mapping_Cartesian.h --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- mapping_Cartesian.h --------------------------- +#ifndef __deal2__mapping_cartesian_h +#define __deal2__mapping_cartesian_h + + +#include +#include + +/** + * Mapping of an axis-parallel cell. + * + * This class maps the unit cell to a grid cell with surfaces parallel + * to the coordinate lines/planes. It is specifically developed for + * cartesian meshes. Apply this mapping to a general mesh to get + * strange results. + * + * @author Guido Kanschat, 2001 + */ +template +class MappingCartesian : public Mapping +{ + public: + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_face_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_subface_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_values (const DoFHandler::cell_iterator &cell, + const Quadrature& quadrature, + Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const ; + + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Transforms the point @p{p} on + * the unit cell to the point + * @p{p_real} on the real cell + * @p{cell} and returns @p{p_real}. + */ + virtual Point transform_unit_to_real_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p, + const typename Mapping::InternalDataBase *const mdata=0) const; + + /** + * Transforms the point @p{p} on + * the real cell to the point + * @p{p_unit} on the unit cell + * @p{cell} and returns @p{p_unit}. + * + * Uses Newton iteration and the + * @p{transform_unit_to_real_cell} + * function. + */ + virtual Point transform_real_to_unit_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual UpdateFlags update_once (const UpdateFlags) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual UpdateFlags update_each (const UpdateFlags) const; + + /** + * Exception + */ + DeclException0 (ExcInvalidData); + + protected: + /** + * Implementation of the + * covariant transformation. + */ + template + void covariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the + * contravariant transformation. + */ + template + void contravariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Storage for internal data of + * d-linear transformation. + */ + class InternalData : public Mapping::InternalDataBase + { + public: + /** + * Constructor. + */ + InternalData (const Quadrature& quadrature); + + /** + * Length of the cell in + * different coordinate + * directions. + */ + std::vector length; + + /** + * Vector of all quadrature + * points. Especially, all + * points of all faces. + */ + std::vector > quadrature_points; + + /** + * Unit tangential vectors. Used + * for the computation of + * boundary forms and normal + * vectors. + * + * Filled once. + */ + std::vector > > unit_tangentials; + + /** + * Auxuliary vectors for internal use. + */ + std::vector > > aux; + }; + + /** + * Do the computation for the + * @p{fill_*} functions. + */ + void compute_fill (const typename DoFHandler::cell_iterator + &cell, + unsigned int face_no, + unsigned int sub_no, + InternalData& data, + std::vector > &quadrature_points, + std::vector >& normal_vectors) const; +}; + + +#endif diff --git a/deal.II/deal.II/include/fe/mapping_q.h b/deal.II/deal.II/include/fe/mapping_q.h index e69de29bb2..2874fae674 100644 --- a/deal.II/deal.II/include/fe/mapping_q.h +++ b/deal.II/deal.II/include/fe/mapping_q.h @@ -0,0 +1,488 @@ +//---------------------------- mapping_q.h --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- mapping_q.h --------------------------- +#ifndef __deal2__mapping_q_h +#define __deal2__mapping_q_h + + +#include +#include +#include + + +template class TensorProductPolynomials; +class LagrangeEquidistant; + + + +//TODO: fill_fe_face_values should exist in a version doing all faces +// to save initialization time. + +/** + * Mapping class that uses Qp-mappings on boundary AND on inner + * cells. The mapping shape functions make use of tensor product + * polynomials with equidistant support points. + * + * Make sure elsewhere (e.g. in FEValues) that on inner cells only Q1 + * mappings are used. + * + * @author Ralf Hartmann, Guido Kanschat 2000, 2001 + */ +template +class MappingQ : public MappingQ1 +{ + public: + /** + * Constructor. @p{p} gives the + * degree of mapping polynomials + * on boundary cells. + */ + MappingQ (unsigned int p); + + /** + * Destructor. + */ + ~MappingQ (); + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_face_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_subface_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_values (const DoFHandler::cell_iterator &cell, + const Quadrature& quadrature, + Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &exterior_form, + std::vector > &normal_vectors) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &exterior_form, + std::vector > &normal_vectors) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual UpdateFlags update_each (const UpdateFlags) const; + + private: + /** + * Storage for internal data of + * Q_degree transformation. + */ + class InternalData : public MappingQ1::InternalData + { + public: + /** + * Constructor. + */ + InternalData(unsigned int n_shape_functions); + + /** + * Unit normal vectors. Used + * for the alternative + * computation of the normal + * vectors. See doc of the + * @p{alternative_normals_computation} + * flag. + * + * Filled (hardcoded) once in + * @p{get_face_data}. + */ + std::vector > > unit_normals; + + /** + * Flag that is set by the + * @p{fill_fe_[[sub]face]_values} + * function. + * + * If this flag is @p{true} + * we are on an interior cell + * and the + * @p{mapping_q1_data} is + * used. + */ + bool use_mapping_q1_on_current_cell; + + /** + * On interior cells + * @p{MappingQ1} is used. + */ + MappingQ1::InternalData mapping_q1_data; + }; + + /** + * Calles the + * @p{compute_face_data} function + * of its base @ref{MappingQ1} + * class. + * + * For the + * @p{alternative_normal_computation} + * also the @p{unit_normal} + * vectors of the face are + * computed. + */ + void compute_face_data (const UpdateFlags flags, + const Quadrature& quadrature, + const unsigned int n_orig_q_points, + MappingQ1::InternalData& data) const; + + /** + * Do the computation for the + * @p{fill_*} functions. + */ + void compute_fill_face (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const bool is_subface, + const unsigned int npts, + const unsigned int offset, + const std::vector &weights, + MappingQ1::InternalData &mapping_q1_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const; + + /** + * Compute shape values and/or + * derivatives. + */ + virtual void compute_shapes_virtual (const std::vector > &unit_points, + MappingQ1::InternalData &data) const; + + /** + * This function is needed by the + * constructor of @p{MappingQ} + * for @p{dim=} 2 and 3. + * + * For @p{degree<4} this function + * sets the + * @p{laplace_on_quad_vector} to + * the hardcoded data. For + * @p{degree>=4} and MappingQ<2> + * this vector is computed. + */ + void set_laplace_on_quad_vector(std::vector > &loqvs) const; + + /** + * This function is needed by the + * constructor of @p{MappingQ<3>}. + * + * For @p{degree==2} this function + * sets the + * @p{laplace_on_quad_vector} to + * the hardcoded data. For + * @p{degree>2} this vector is + * computed. + */ + void set_laplace_on_hex_vector(std::vector > &lohvs) const; + + /** + * Computes the @p{laplace_on_quad(hex)_vector}. + * + * Called by the + * @p{set_laplace_on_(quad)hex_vector} + * functions if the data is not + * yet hardcoded. + */ + void compute_laplace_vector(std::vector > &lvs) const; + + /** + * Takes a + * @p{set_laplace_on_hex(quad)_vector} + * and applies it to the vector + * @p{a} to compute the inner + * support points. They are + * appended to the vector @p{a}. + */ + void apply_laplace_vector(const std::vector > &lvs, + std::vector > &a) const; + + /** + * Computes the support points of + * the mapping. + */ + virtual void compute_mapping_support_points( + const typename Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * Computes all support points of + * the mapping shape + * functions. The inner support + * points (ie. support points in + * quads for 2d, in hexes for 3d) + * are computed using the + * solution of a Laplace equation + * with the position of the outer + * support points as boundary + * values. The outer support + * points are all support points + * except of the inner ones. + */ + void compute_support_points_laplace( + const typename Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * Simple version of the + * @p{compute_support_points_laplace} + * function. Does not use the + * solution to Laplace + * equation. Computes the inner + * support points by simple + * interpolations.*/ + void compute_support_points_simple( + const typename Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * For @p{dim=2,3}. Adds (appends) the + * support points of all lines to + * the vector a. + * + * Needed by the + * @p{compute_support_points_simple(laplace)} + * functions. For @p{dim=1} this + * function is empty. + */ + void add_line_support_points (const Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * For @p{dim=3}. Adds (appends) the + * support points of all faces (quads in 3d) to + * the vector a. + * + * Needed by the + * @p{compute_support_points_laplace} + * function. For @p{dim=1} and 2 this + * function is empty. + */ + void add_face_support_points(const typename Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * For @p{dim=2} and 3. Simple + * version of the + * @p{add_face_support_points} + * function. + * + * Needed by the + * @p{compute_support_points_simple} + */ + void fill_quad_support_points_simple (const Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + * Needed by the + * @p{laplace_on_quad} function + * (for @p{dim==2}). Filled by the + * constructor. + * + * Sizes: + * laplace_on_quad_vector.size()= + * number of inner + * unit_support_points + * laplace_on_quad_vector[i].size()= + * number of outer + * unit_support_points, i.e. + * unit_support_points on the + * boundary of the quad + */ + std::vector > laplace_on_quad_vector; + + /** + * Needed by the + * @p{laplace_on_hex} function + * (for @p{dim==3}). Filled by the + * constructor. + */ + std::vector > laplace_on_hex_vector; + + /** + * Exception. + */ + DeclException1 (ExcLaplaceVectorNotSet, + int, + << "laplace_vector not set for degree=" << arg1 << "."); + + /** + * Degree @p{p} of the + * polynomials used as shape + * functions for the Qp mapping + * of cells at the boundary. + */ + const unsigned int degree; + + /** + * Number of inner mapping shape + * functions. + */ + const unsigned int n_inner; + + /** + * Number of mapping shape + * functions on the boundary. + */ + const unsigned int n_outer; + + + /** + * Vector of one-dimensional + * polynomials used as shape + * functions for the Qp mapping + * of cell at the boundary. + */ + std::vector polynomials; + + /** + * Pointer to the + * @p{dim}-dimensional tensor + * product polynomials used as + * shape functions for the Qp + * mapping of cells at the + * boundary. + */ + TensorProductPolynomials* tensor_pols; + + /** + * Number of the Qp tensor + * product shape functions. + */ + unsigned int n_shape_functions; + + /** + * Mapping from lexicographic to + * to the Qp shape function + * numbering. Its size is + * @p{dofs_per_cell}. + */ + std::vector renumber; + + /** + * Needed for inner faces. + */ + StraightBoundary straight_boundary; + + /** + * Flag for computing the normal + * vectors directly by using a + * covariant transformation. + * Used to test the covariant + * transformation. + */ + bool alternative_normals_computation; + + /** + * If this flag is set @p{true} + * then @p{MappingQ} is used on + * all cells, not only on + * boundary cells. + * + * The default value is false. + */ + bool use_mapping_q_on_all_cells; +}; + + +#endif diff --git a/deal.II/deal.II/include/fe/mapping_q1.h b/deal.II/deal.II/include/fe/mapping_q1.h index e69de29bb2..46450cfae4 100644 --- a/deal.II/deal.II/include/fe/mapping_q1.h +++ b/deal.II/deal.II/include/fe/mapping_q1.h @@ -0,0 +1,432 @@ +//---------------------------- mapping_q1.h --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- mapping_q1.h --------------------------- +#ifndef __deal2__mapping_q1_h +#define __deal2__mapping_q1_h + + +#include +#include + +/** + * Mapping of general quadrilateral/hexahedra by d-linear shape + * functions. + * + * This function maps the unit cell to a general grid cell with + * straight lines in @p{d} dimensions (remark that in 3D the surfaces + * may be curved, even if the edges are not). This is the well-known + * mapping for polyhedral domains. + * + * Shape function for this mapping are the same as for the finite + * element @p{FE_Q} of order 1. Therefore, coupling these two yields + * an isoparametric element. + * + * @author Guido Kanschat, Ralf Hartmann, 2000, 2001 + */ +template +class MappingQ1 : public Mapping +{ + public: + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_data (const UpdateFlags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_face_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual Mapping::InternalDataBase* + get_subface_data (const UpdateFlags flags, + const Quadrature& quadrature) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_values (const DoFHandler::cell_iterator &cell, + const Quadrature& quadrature, + Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const ; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature& quadrature, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const ; + + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual void + transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Transforms the point @p{p} on + * the unit cell to the point + * @p{p_real} on the real cell + * @p{cell} and returns @p{p_real}. + */ + virtual Point transform_unit_to_real_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p, + const typename Mapping::InternalDataBase *const mdata=0) const; + + /** + * Transforms the point @p{p} on + * the real cell to the point + * @p{p_unit} on the unit cell + * @p{cell} and returns @p{p_unit}. + * + * Uses Newton iteration and the + * @p{transform_unit_to_real_cell} + * function. + */ + virtual Point transform_real_to_unit_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual UpdateFlags update_once (const UpdateFlags) const; + + /** + * Implementation of the interface in + * @ref{Mapping}. + */ + virtual UpdateFlags update_each (const UpdateFlags) const; + + /** + * Exception + */ + DeclException0 (ExcInvalidData); + + protected: + /** + * Implementation of the + * covariant transformation. + */ + template + void covariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Implementation of the + * contravariant transformation. + */ + template + void contravariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const; + + /** + * Storage for internal data of + * d-linear transformation. + */ + class InternalData : public Mapping::InternalDataBase + { + public: + /** + * Constructor. + */ + InternalData(unsigned int n_shape_functions); + + /** + * Shape function at quadrature + * point. Shape functions are + * in tensor product order, so + * vertices must be reordered + * to obtain transformation. + */ + double shape (unsigned int qpoint, + unsigned int shape_nr) const; + + /** + * Shape function at quadrature + * point. See above. + */ + double &shape (unsigned int qpoint, + unsigned int shape_nr); + + /** + * Gradient of shape function + * in quadrature point. See + * above. + */ + Tensor<1,dim> derivative (unsigned int qpoint, + unsigned int shape_nr) const; + + /** + * Gradient of shape function + * in quadrature point. See + * above. + */ + Tensor<1,dim> &derivative (unsigned int qpoint, + unsigned int shape_nr); + + /** + * Values of shape + * functions. Access by + * function @p{shape}. + * + * Computed once. + */ + std::vector shape_values; + + /** + * Values of shape function + * derivatives. Access by + * function @p{derivative}. + * + * Computed once. + */ + std::vector > shape_derivatives; + + /** + * Tensors of covariant + * transformation. + * + * Computed on each cell. + */ + std::vector > covariant; + + /** + * Tensors of covariant + * transformation. + * + * Computed on each cell. + */ + std::vector > contravariant; + + /** + * Unit tangential vectors. Used + * for the computation of + * boundary forms and normal + * vectors. + * + * Filled once. + */ + std::vector > > unit_tangentials; + + /** + * Auxuliary vectors for internal use. + */ + std::vector > > aux; + + /** + * Number of shape functions. + */ + unsigned int n_shape_functions; + + /** + * Stores the support points of + * the mapping shape functions on + * the @p{cell_of_current_support_points}. + */ + std::vector > mapping_support_points; + + /** + * Stores the cell of which the + * @p{mapping_support_points} are + * stored. + */ + DoFHandler::cell_iterator cell_of_current_support_points; + + /** + * Default value of this flag + * is @p{true}. If @p{*this} + * is an object of a derived + * class, this flag is set to + * @p{false}. + */ + bool is_mapping_q1_data; + }; + + /** + * Do the computations for the + * @p{get_face_data} + * functions. Here, the data + * vectors of @p{InternalData} + * are reinitialized to proper + * size and shape values and + * derivatives are + * computed. Furthermore + * @p{unit_tangential} vectors of + * the face are computed. + */ + void compute_face_data (const UpdateFlags flags, + const Quadrature &quadrature, + const unsigned int n_orig_q_points, + InternalData &data) const; + + /** + * Mapping between tensor product + * ordering and real ordering of + * the vertices. + */ + static const unsigned int vertex_mapping[1< > &unit_points, + InternalData &data) const; + + /** + * Do the computations for the @p{get_data} + * functions. Here, the data + * vectors of @p{InternalData} are + * reinitialized to proper size and + * shape values are computed. + */ + void compute_data (const UpdateFlags flags, + const Quadrature& quadrature, + const unsigned int n_orig_q_points, + InternalData& data) const; + + /** + * Do the computation for the + * @p{fill_*} functions. + */ + void compute_fill (const typename DoFHandler::cell_iterator &cell, + const unsigned int npts, + const unsigned int offset, + InternalData &data, + std::vector > &quadrature_points) const; + + /** + * Do the computation for the + * @p{fill_*} functions. + */ + void compute_fill_face (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const bool is_subface, + const unsigned int npts, + const unsigned int offset, + const std::vector &weights, + InternalData &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_form, + std::vector > &normal_vectors) const; + + /** + * Compute shape values and/or + * derivatives. + */ + virtual void compute_shapes_virtual (const std::vector > &unit_points, + InternalData &data) const; + private: + + /** + * Computes the support points of + * the mapping. For @p{MappingQ1} + * these are the + * vertices. + */ + virtual void compute_mapping_support_points( + const typename Triangulation::cell_iterator &cell, + std::vector > &a) const; + + /** + *Number of shape functions + */ + static const unsigned int n_shape_functions = 1 << dim; +}; + + +#endif diff --git a/deal.II/deal.II/include/fe/q1_mapping.h b/deal.II/deal.II/include/fe/q1_mapping.h deleted file mode 100644 index 9c5cdcad90..0000000000 --- a/deal.II/deal.II/include/fe/q1_mapping.h +++ /dev/null @@ -1,195 +0,0 @@ -//---------------------------- q1_mapping.h --------------------------- -// Version: $Name$ -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- q1_mapping.h --------------------------- -#ifndef __deal2__q1_mapping_h -#define __deal2__q1_mapping_h - - -// File has moved from fe_linear_mapping.h - -#include -#include - - -/** - * Implementation of Q1 transformation to the unit cell. - * All finite element classes using a Q1 mapping of the grid cell to the - * unit cell may be derived from this class. The grid transformation functions - * are implemented here and do not have to be taken care of later. - * - * @author Wolfgang Bangerth, 1998 - */ -template -class FEQ1Mapping : public FiniteElement -{ - public: - /** - * Constructor. Simply passes through - * its arguments to the base class. For - * one space dimension, @p{dofs_per_quad} - * shall be zero; similarly, for one and - * two space dimensions, @p{dofs_per_hex} - * shall be zero. - */ - FEQ1Mapping (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_components, - const std::vector &restriction_is_additive_flags); - - /** - * Transforms the point @p{p} on - * the unit cell to the point - * @p{p_real} on the real cell - * @p{cell} and returns @p{p_real}. - */ - virtual Point transform_unit_to_real_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - - /** - * Transforms the point @p{p} on - * the real cell to the point - * @p{p_unit} on the unit cell - * @p{cell} and returns @p{p_unit}. - */ - virtual Point transform_real_to_unit_cell (const typename DoFHandler::cell_iterator &cell, - const Point &p) const; - - /** - * Return the value of the @p{i}th shape - * function at point @p{p} on the unit cell. - * Here, the (bi-)linear basis functions - * are meant, which are used for the - * computation of the transformation from - * unit cell to real space cell. - */ - virtual double shape_value_transform (const unsigned int i, - const Point &p) const; - - /** - * Return the gradient of the @p{i}th shape - * function at point @p{p} on the unit cell. - * Here, the (bi-)linear basis functions - * are meant, which are used for the - * computation of the transformation from - * unit cell to real space cell. - */ - virtual Tensor<1,dim> shape_grad_transform (const unsigned int i, - const Point &p) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * In two spatial dimensions, this function - * simply returns the length of the face. - */ - virtual void get_face_jacobians (const typename DoFHandler::face_iterator &face, - const typename std::vector > &unit_points, - std::vector &face_jacobi_determinants) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * In two spatial dimensions, this function - * simply returns half the length of the - * whole face. - */ - virtual void get_subface_jacobians (const typename DoFHandler::face_iterator &face, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const; - - /** - * Return the normal vectors to the - * face with number @p{face_no} of @p{cell}. - * - * For linear finite elements, this function - * is particularly simple since all normal - * vectors are equal and can easiliy be - * computed from the direction of the face - * without using the transformation (Jacobi) - * matrix, at least for two dimensions. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; - - /** - * Return the normal vectors to the - * subface with number @p{subface_no} of - * the face with number @p{face_no} of @p{cell}. - * - * For linear finite elements, this function - * is particularly simple since all normal - * vectors are equal and can easiliy be - * computed from the direction of the face - * without using the transformation (Jacobi) - * matrix, at least for two dimensions. - * - * Refer to the base class for detailed - * information on this function. - */ - virtual void get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const; - - /** - * Refer to the base class for detailed - * information on this function. - * - * For one dimensional elements, this - * function simply passes through to - * the one implemented in the base class. - * For higher dimensional finite elements - * we use multilinear mappings. - */ - virtual void fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grad_transform) const; - - /** - * Compute the gradients of the jacobian - * matrices of the mapping between unit - * and real cell at the given - * points on the unit cell. - */ - static void compute_jacobian_gradients (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians); - - - /** - * Exception - */ - DeclException0 (ExcInternalError); - /** - * Exception - */ - DeclException0 (ExcInvalidData); -}; - - -#endif diff --git a/deal.II/deal.II/source/fe/fe.cc b/deal.II/deal.II/source/fe/fe.cc index 9897095c18..7718537308 100644 --- a/deal.II/deal.II/source/fe/fe.cc +++ b/deal.II/deal.II/source/fe/fe.cc @@ -14,6 +14,9 @@ #include #include +#include +#include +#include #include #include #include @@ -25,149 +28,62 @@ using namespace std; #endif - - - -/*------------------------------- FiniteElementData ----------------------*/ - -template -FiniteElementData::FiniteElementData () : - dofs_per_vertex(static_cast(-1)), - dofs_per_line(static_cast(-1)), - dofs_per_quad(static_cast(-1)), - dofs_per_hex(static_cast(-1)), - first_line_index(static_cast(-1)), - first_quad_index(static_cast(-1)), - first_hex_index(static_cast(-1)), - first_face_line_index(static_cast(-1)), - first_face_quad_index(static_cast(-1)), - dofs_per_face(static_cast(-1)), - dofs_per_cell(static_cast(-1)), - transform_functions(static_cast(-1)), - components(static_cast(-1)) -{ - Assert (false, ExcNotImplemented()); -}; - - -template -FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_transform_functions, - const unsigned int n_components) : - dofs_per_vertex(dofs_per_vertex), - dofs_per_line(dofs_per_line), - dofs_per_quad(dofs_per_quad), - dofs_per_hex(dofs_per_hex), - first_line_index(GeometryInfo::vertices_per_cell - * dofs_per_vertex), - first_quad_index(first_line_index+ - GeometryInfo::lines_per_cell - * dofs_per_line), - first_hex_index(first_quad_index+ - GeometryInfo::faces_per_cell - * dofs_per_quad), - first_face_line_index(GeometryInfo::vertices_per_cell - * dofs_per_vertex), - first_face_quad_index(first_face_line_index+ - GeometryInfo::lines_per_cell - * dofs_per_line), - dofs_per_face(GeometryInfo::vertices_per_face * dofs_per_vertex+ - GeometryInfo::lines_per_face * dofs_per_line + - dofs_per_quad), - dofs_per_cell (first_hex_index+dofs_per_hex), - transform_functions (n_transform_functions), - components(n_components) -{ - Assert(dim==3, ExcDimensionMismatch(3,dim)); -}; +/*------------------------------- FiniteElementBase ----------------------*/ template -FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int n_transform_functions, - const unsigned int n_components) : - dofs_per_vertex(dofs_per_vertex), - dofs_per_line(dofs_per_line), - dofs_per_quad(dofs_per_quad), - dofs_per_hex(0), - first_line_index(GeometryInfo::vertices_per_cell * dofs_per_vertex), - first_quad_index(first_line_index+ - GeometryInfo::lines_per_cell * dofs_per_line), - first_hex_index(first_quad_index+ - GeometryInfo::quads_per_cell*dofs_per_quad), - first_face_line_index(GeometryInfo::vertices_per_cell - * dofs_per_vertex), - first_face_quad_index(first_line_index+ - GeometryInfo::lines_per_cell - * dofs_per_line), - dofs_per_face(GeometryInfo::vertices_per_face * dofs_per_vertex+ - dofs_per_line), - dofs_per_cell (first_quad_index+dofs_per_quad), - transform_functions (n_transform_functions), - components(n_components) +void +FiniteElementBase:: +InternalDataBase::initialize (const FiniteElement* element, + const Mapping& mapping, + const Quadrature& quadrature) { - Assert(dim==2, ExcDimensionMismatch(2,dim)); -}; + // We compute difference + // quotients of gradients + UpdateFlags diff_flags = update_gradients; + + // We will need shifted + // quadrature formulae + std::vector > diff_points (quadrature.n_quadrature_points); + std::vector diff_weights (quadrature.n_quadrature_points, 0); + + // The star has 2dim points + differences.resize(2*dim); + for (unsigned int d=0;d shift; + shift (d) = 1.e-6; + for (unsigned int i=0;i plus_quad (diff_points, diff_weights); + differences[d] = + new FEValues (mapping, *element, plus_quad, diff_flags); + for (unsigned int i=0;i minus_quad (diff_points, diff_weights); + differences[d+dim] = + new FEValues (mapping, *element, minus_quad, diff_flags); + } +} -template -FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int n_transform_functions, - const unsigned int n_components) : - dofs_per_vertex(dofs_per_vertex), - dofs_per_line(dofs_per_line), - dofs_per_quad(0), - dofs_per_hex(0), - first_line_index(GeometryInfo::vertices_per_cell * dofs_per_vertex), - first_quad_index(first_line_index+ - GeometryInfo::lines_per_cell * dofs_per_line), - first_hex_index(first_quad_index+ - GeometryInfo::quads_per_cell*dofs_per_quad), - first_face_line_index(GeometryInfo::vertices_per_cell - * dofs_per_vertex), - first_face_quad_index(first_line_index+ - GeometryInfo::lines_per_cell - * dofs_per_line), - dofs_per_face(dofs_per_vertex), - dofs_per_cell (first_line_index+dofs_per_line), - transform_functions (n_transform_functions), - components(n_components) -{ - Assert(dim==1, ExcDimensionMismatch(1,dim)); -}; template -FiniteElementData::~FiniteElementData () -{}; - - -template -bool FiniteElementData::operator== (const FiniteElementData &f) const +FiniteElementBase::InternalDataBase::~InternalDataBase () { - return ((dofs_per_vertex == f.dofs_per_vertex) && - (dofs_per_line == f.dofs_per_line) && - (dofs_per_quad == f.dofs_per_quad) && - (dofs_per_hex == f.dofs_per_hex) && - (transform_functions == f.transform_functions) && - (components == f.components)); -}; - + for (unsigned int i=0;i FiniteElementBase::FiniteElementBase (const FiniteElementData &fe_data, const std::vector &restriction_is_additive_flags) : - FiniteElementData (fe_data), + FiniteElementData (fe_data), system_to_component_table(dofs_per_cell), face_system_to_component_table(dofs_per_face), component_to_system_table(components, std::vector(dofs_per_cell)), @@ -176,7 +92,7 @@ FiniteElementBase::FiniteElementBase (const FiniteElementData &fe_data restriction_is_additive_flags(restriction_is_additive_flags) { Assert(restriction_is_additive_flags.size()==fe_data.components, - ExcWrongFieldDimension(restriction_is_additive_flags.size(),fe_data.components)); + ExcDimensionMismatch(restriction_is_additive_flags.size(),fe_data.components)); for (unsigned int i=0; i::children_per_cell; ++i) { @@ -232,6 +148,7 @@ FiniteElementBase::restrict (const unsigned int child) const { Assert (child::children_per_cell, ExcIndexRange(child, 0, GeometryInfo::children_per_cell)); + Assert (restriction[child].n() != 0, ExcProjectionVoid()); return restriction[child]; }; @@ -242,6 +159,7 @@ FiniteElementBase::prolongate (const unsigned int child) const { Assert (child::children_per_cell, ExcIndexRange(child, 0, GeometryInfo::children_per_cell)); + Assert (prolongation[child].n() != 0, ExcEmbeddingVoid()); return prolongation[child]; }; @@ -250,8 +168,11 @@ template const FullMatrix & FiniteElementBase::constraints () const { + Assert ((dofs_per_face == 0) || (interface_constraints.m() != 0), + ExcConstraintsVoid()); + if (dim==1) - Assert ((interface_constraints.m()==1) && (interface_constraints.n()==1), + Assert ((interface_constraints.m()==0) && (interface_constraints.n()==0), ExcWrongInterfaceMatrixSize(interface_constraints.m(), interface_constraints.n())); @@ -290,300 +211,112 @@ FiniteElementBase::memory_consumption () const }; -/*------------------------------- FiniteElement ----------------------*/ - - template -FiniteElement::FiniteElement (const FiniteElementData &fe_data, - const std::vector &restriction_is_additive_flags) : - FiniteElementBase (fe_data, - restriction_is_additive_flags) {}; - -#if deal_II_dimension == 1 - -template <> -void FiniteElement<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const; - - -template <> -void FiniteElement<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, - const std::vector > &unit_points, - std::vector > &jacobians, - const bool compute_jacobians, - std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - std::vector > &support_points, - const bool compute_support_points, - std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &, - const std::vector > > &) const { - Assert ((!compute_jacobians) || (jacobians.size() == unit_points.size()), - ExcWrongFieldDimension(jacobians.size(), unit_points.size())); - Assert ((!compute_jacobians_grad) || (jacobians_grad.size() == unit_points.size()), - ExcWrongFieldDimension(jacobians_grad.size(), unit_points.size())); - Assert ((!compute_q_points) || (q_points.size() == unit_points.size()), - ExcWrongFieldDimension(q_points.size(), unit_points.size())); - Assert ((!compute_support_points) || (support_points.size() == dofs_per_cell), - ExcWrongFieldDimension(support_points.size(), dofs_per_cell)); - - - // local mesh width - const double h=(cell->vertex(1)(0) - cell->vertex(0)(0)); - - for (unsigned int i=0; i:: +compute_2nd (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int offset, + Mapping::InternalDataBase &mapping_internal, + InternalDataBase& fe_internal, + FEValuesData& data) const +{ + // Number of quadrature points + const unsigned int n = data.shape_2nd_derivatives[0].size(); + + for (unsigned int d=0;dreinit(cell); + fe_internal.differences[d+dim]->reinit(cell); + } - // gradient of jacobian is zero - if (compute_jacobians_grad) - jacobians_grad[i] = Tensor<3,1>(); + std::vector > > diff_quot (dim, std::vector >(n)); + std::vector > diff_quot2 (n); + // Loop over shape functions + for (unsigned int shape=0; shapevertex(0) + h*unit_points[i]; - }; - - // compute support points. The first ones - // belong to vertex one, the second ones - // to vertex two, all following are - // equally spaced along the line - if (compute_support_points) - get_support_points (cell, support_points); -}; - - - -template <> -void FiniteElement<1>::fill_fe_face_values (const DoFHandler<1>::cell_iterator &, - const unsigned int , - const std::vector > &, - const std::vector > &, - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector &, - const bool , - std::vector > &, - const bool, - const FullMatrix &, - const std::vector > > &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FiniteElement<1>::fill_fe_subface_values (const DoFHandler<1>::cell_iterator &, - const unsigned int , - const unsigned int , - const std::vector > &, - const std::vector > &, - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector &, - const bool , - std::vector > &, - const bool, - const FullMatrix &, - const std::vector > > &) const { - Assert (false, ExcNotImplemented()); -}; - + // Fill difference quotients + for (unsigned int d1=0;d1& right + = fe_internal.differences[d1]->shape_grad(shape, k); + const Tensor<1,dim>& left + = fe_internal.differences[d1+dim]->shape_grad(shape, k); + for (unsigned int d=0;d -void FiniteElement<1>::get_unit_support_points (std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_cell, - ExcWrongFieldDimension(support_points.size(), dofs_per_cell)); - // compute support points. The first ones - // belong to vertex one, the second ones - // to vertex two, all following are - // equally spaced along the line - unsigned int next = 0; - // first the dofs in the vertices - for (unsigned int i=0; i(0.0); - for (unsigned int i=0; i(1.0); - - // now dofs on line - for (unsigned int i=0; i((i+1.0)/(dofs_per_line+1.0)); -}; +/*------------------------------- FiniteElement ----------------------*/ -template <> -void FiniteElement<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_cell, - ExcWrongFieldDimension(support_points.size(), dofs_per_cell)); - // compute support points. The first ones - // belong to vertex one, the second ones - // to vertex two, all following are - // equally spaced along the line - unsigned int next = 0; - // local mesh width - const double h=(cell->vertex(1)(0) - cell->vertex(0)(0)); - // first the dofs in the vertices - for (unsigned int vertex=0; vertex<2; vertex++) - for (unsigned int i=0; ivertex(vertex); - - // now dofs on line - for (unsigned int i=0; ivertex(0) + - Point<1>((i+1.0)/(dofs_per_line+1.0)*h); -}; +template +FiniteElement::FiniteElement (const FiniteElementData &fe_data, + const std::vector &restriction_is_additive_flags) : + FiniteElementBase (fe_data, + restriction_is_additive_flags) +{} -#endif template -void FiniteElement::fill_fe_values (const typename DoFHandler::cell_iterator &, - const typename std::vector > &, - typename std::vector > &, - const bool, - typename std::vector > &, - const bool, - typename std::vector > &, - const bool, - typename std::vector > &, - const bool, - const FullMatrix &, - const typename std::vector > > &) const { - Assert (false, ExcPureFunctionCalled()); -}; +FiniteElement::~FiniteElement () +{} + template -void FiniteElement::fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - const typename std::vector > &global_unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - std::vector &face_jacobi_determinants, - const bool compute_face_jacobians, - typename std::vector > &normal_vectors, - const bool compute_normal_vectors, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_gradients_transform) const +void +FiniteElement::get_unit_support_points (std::vector > &points) const { - Assert (jacobians.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(jacobians.size(), - unit_points.size())); - Assert (q_points.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(q_points.size(), - unit_points.size())); - Assert (global_unit_points.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(global_unit_points.size(), - unit_points.size())); - Assert (support_points.size() == dofs_per_face, - typename FiniteElementBase::ExcWrongFieldDimension(support_points.size(), - dofs_per_face)); - - // size not checked since not used - static std::vector > dummy(0); - fill_fe_values (cell, global_unit_points, - jacobians, compute_jacobians, - jacobians_grad, compute_jacobians_grad, - dummy, false, - q_points, compute_q_points, - shape_values_transform, shape_gradients_transform); - - if (compute_support_points) - get_face_support_points (cell->face(face_no), support_points); - - if (compute_face_jacobians) - get_face_jacobians (cell->face(face_no), - unit_points, - face_jacobi_determinants); - - if (compute_normal_vectors) - get_normal_vectors (cell, face_no, unit_points, normal_vectors); -}; - + points.resize(0); +} + template -void FiniteElement::fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - const typename std::vector > &global_unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &q_points, - const bool compute_q_points, - std::vector &face_jacobi_determinants, - const bool compute_face_jacobians, - typename std::vector > &normal_vectors, - const bool compute_normal_vectors, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_gradients_transform) const +void +FiniteElement::get_unit_face_support_points (std::vector > &points) const { - Assert (jacobians.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(jacobians.size(), - unit_points.size())); - Assert (q_points.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(q_points.size(), - unit_points.size())); - Assert (global_unit_points.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(global_unit_points.size(), - unit_points.size())); - - static std::vector > dummy(0); // size not checked since not used - fill_fe_values (cell, global_unit_points, - jacobians, compute_jacobians, - jacobians_grad, compute_jacobians_grad, - dummy, false, - q_points, compute_q_points, - shape_values_transform, shape_gradients_transform); - - if (compute_face_jacobians) - get_subface_jacobians (cell->face(face_no), subface_no, - unit_points, face_jacobi_determinants); - - if (compute_normal_vectors) - get_normal_vectors (cell, face_no, subface_no, - unit_points, normal_vectors); -}; + points.resize(0); +} + template -void -FiniteElement::get_unit_support_points (typename std::vector > &) const +Mapping::InternalDataBase* +FiniteElement::get_face_data (const UpdateFlags flags, + const Mapping& mapping, + const Quadrature &quadrature) const { - Assert (false, ExcPureFunctionCalled()); -}; + QProjector q(quadrature, false); + return get_data (flags, mapping, q); +} template -void -FiniteElement::get_support_points (const typename DoFHandler::cell_iterator &, - typename std::vector > &) const +Mapping::InternalDataBase* +FiniteElement::get_subface_data (const UpdateFlags flags, + const Mapping& mapping, + const Quadrature &quadrature) const { - Assert (false, ExcPureFunctionCalled()); -}; + QProjector q(quadrature, true); + return get_data (flags, mapping, q); + +} template @@ -593,6 +326,16 @@ FiniteElement::n_base_elements() const return 1; } +template +unsigned int +FiniteElement::memory_consumption () const +{ + return FiniteElementBase::memory_consumption (); +} + + + + template const FiniteElement& FiniteElement::base_element(unsigned index) const @@ -603,7 +346,6 @@ FiniteElement::base_element(unsigned index) const /*------------------------------- Explicit Instantiations -------------*/ -template class FiniteElementData; template class FiniteElementBase; template class FiniteElement; diff --git a/deal.II/deal.II/source/fe/fe_data.cc b/deal.II/deal.II/source/fe/fe_data.cc index e69de29bb2..9079dac9c4 100644 --- a/deal.II/deal.II/source/fe/fe_data.cc +++ b/deal.II/deal.II/source/fe/fe_data.cc @@ -0,0 +1,69 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + + +#include +#include + + +template +FiniteElementData::FiniteElementData (const std::vector &dofs_per_object, + const unsigned int n_components) : + dofs_per_vertex(dofs_per_object[0]), + dofs_per_line(dofs_per_object[1]), + dofs_per_quad(dim>1? dofs_per_object[2]:0), + dofs_per_hex(dim>2? dofs_per_object[3]:0), + first_line_index(GeometryInfo::vertices_per_cell + * dofs_per_vertex), + first_quad_index(first_line_index+ + GeometryInfo::lines_per_cell + * dofs_per_line), + first_hex_index(first_quad_index+ + GeometryInfo::quads_per_cell + * dofs_per_quad), + first_face_line_index(GeometryInfo::vertices_per_cell + * dofs_per_vertex), + first_face_quad_index((dim==3 ? + first_face_line_index : + first_line_index) + + GeometryInfo::lines_per_cell + * dofs_per_line), + dofs_per_face(GeometryInfo::vertices_per_face * dofs_per_vertex + + GeometryInfo::lines_per_face * dofs_per_line + + GeometryInfo::quads_per_face * dofs_per_quad), + dofs_per_cell (GeometryInfo::vertices_per_cell * dofs_per_vertex + + GeometryInfo::lines_per_cell * dofs_per_line + + GeometryInfo::quads_per_cell * dofs_per_quad + + GeometryInfo::hexes_per_cell * dofs_per_hex), + components(n_components) +{ + Assert(dofs_per_object.size()==dim+1, ExcDimensionMismatch(dofs_per_object.size()-1,dim)); +}; + + + +template +bool FiniteElementData::operator== (const FiniteElementData &f) const +{ + return ((dofs_per_vertex == f.dofs_per_vertex) && + (dofs_per_line == f.dofs_per_line) && + (dofs_per_quad == f.dofs_per_quad) && + (dofs_per_hex == f.dofs_per_hex) && + (components == f.components)); +}; + + +template class FiniteElementData<1>; +template class FiniteElementData<2>; +template class FiniteElementData<3>; + diff --git a/deal.II/deal.II/source/fe/fe_dgq.cc b/deal.II/deal.II/source/fe/fe_dgq.cc index e69de29bb2..2250f1a059 100644 --- a/deal.II/deal.II/source/fe/fe_dgq.cc +++ b/deal.II/deal.II/source/fe/fe_dgq.cc @@ -0,0 +1,549 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static std::vector dummy(1,true); + +// Embedding matrices (produced by tests/fe/embedding with postprocessing) + +#if (deal_II_dimension == 1) +#include "mat_dgq.1" +#endif + +#if (deal_II_dimension == 2) +#include "mat_dgq.2" +#endif + +#if (deal_II_dimension == 3) +#include "mat_dgq.3" +#endif + + +template +FE_DGQ::InternalData::~InternalData () +{ + for (unsigned int i=0;i +FE_DGQ::FE_DGQ (unsigned int degree) + : + FiniteElement (FiniteElementData(get_dpo_vector(degree),1), dummy), + degree(degree), + polynomials(degree+1), + poly(0) +{ + std::vector > > v(degree+1); + if (degree==0) + { + std::vector coeff(1); + coeff[0] = 1.; + polynomials[0] = Polynomial (coeff); + v[0] = &(polynomials[0]); + } else { + for (unsigned int i=0;i<=degree;++i) + { + LagrangeEquidistant p(degree, i); + polynomials[i] = p; + v[i] = &(polynomials[i]); + } + } + + poly = new TensorProductPolynomials (v); + + Assert (degree <= 10, ExcNotImplemented()); + + std::vector right; + std::vector top; + rotate_indices (right, 'Z'); + if (dim>2) + rotate_indices (top, 'X'); + + if (embedding[degree] != 0) + { + prolongation[0].fill (embedding[degree]); + switch (dim) + { + case 1: + prolongation[1].fill_permutation (prolongation[0], + right, right); + break; + case 2: + prolongation[1].fill_permutation (prolongation[0], + right, right); + prolongation[2].fill_permutation (prolongation[1], + right, right); + prolongation[3].fill_permutation (prolongation[2], + right, right); + break; + case 3: + prolongation[1].fill_permutation (prolongation[0], + right, right); + prolongation[5].fill_permutation (prolongation[1], + right, right); + prolongation[4].fill_permutation (prolongation[5], + right, right); + prolongation[7].fill_permutation (prolongation[4], + top, top); + prolongation[3].fill_permutation (prolongation[7], + top, top); + prolongation[6].fill_permutation (prolongation[5], + top, top); + prolongation[2].fill_permutation (prolongation[6], + top, top); + break; + default: + for (unsigned int i=0;i::children_per_cell;++i) + prolongation[i].reinit(0); + } + } else { + for (unsigned int i=0;i::children_per_cell;++i) + prolongation[i].reinit(0); + } + + if (projection_matrices[degree] != 0) + { + restriction[0].fill (projection_matrices[degree]); + switch (dim) + { + case 1: + restriction[1].fill_permutation (restriction[0], + right, right); + break; + case 2: + restriction[1].fill_permutation (restriction[0], + right, right); + restriction[2].fill_permutation (restriction[1], + right, right); + restriction[3].fill_permutation (restriction[2], + right, right); + break; + case 3: + restriction[1].fill_permutation (restriction[0], + right, right); + restriction[5].fill_permutation (restriction[1], + right, right); + restriction[4].fill_permutation (restriction[5], + right, right); + restriction[7].fill_permutation (restriction[4], + top, top); + restriction[3].fill_permutation (restriction[7], + top, top); + restriction[6].fill_permutation (restriction[5], + top, top); + restriction[2].fill_permutation (restriction[6], + top, top); + break; + default: + for (unsigned int i=0;i::children_per_cell;++i) + restriction[i].reinit(0); + } + } +} + + +template +FE_DGQ::~FE_DGQ () +{ + delete poly; +} + + +template +FiniteElement * +FE_DGQ::clone() const +{ + return new FE_DGQ(degree); +} + + +template +void +FE_DGQ::get_unit_support_points (std::vector > &points) const +{ + if (degree>0) + compute_support_points (points, degree); + else + { + points.resize(1); + for (unsigned int i=0; i +void +FE_DGQ::get_unit_face_support_points (std::vector > &points) const +{ + points.resize(0); +} + +//---------------------------------------------------------------------- +// Auxilliary functions +//---------------------------------------------------------------------- + + +template +std::vector +FE_DGQ::get_dpo_vector(unsigned int deg) +{ + std::vector dpo(dim+1, 0); + dpo[dim] = ++deg; + for (unsigned int i=1;i +UpdateFlags +FE_DGQ::update_once (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + +// cerr << "FE_DGQ:Once: " << hex << flags << ' '; + + if (flags & update_values) + out |= update_values; + +// cerr << out << dec << endl; + + return out; +} + + +template +UpdateFlags +FE_DGQ::update_each (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + +// cerr << "FE_DGQ:Each: " << hex << flags << ' '; + + if (flags & update_gradients) + out |= update_gradients | update_covariant_transformation; + if (flags & update_second_derivatives) + out |= update_second_derivatives; + +// cerr << out << dec << endl; + + return out; +} + + +template +void +FE_DGQ::compute_support_points (std::vector >& support_points, + unsigned int degree) +{ + Assert(degree>0, ExcInternalError()); + // number of points: (degree+1)^dim + unsigned int n= degree+1; + for (unsigned int i=1;i p; + + unsigned int k=0; + for (unsigned int iz=0;iz <= ((dim>2) ? degree : 0) ; ++iz) + for (unsigned int iy=0;iy <= ((dim>1) ? degree : 0) ; ++iy) + for (unsigned int ix=0;ix<=degree;++ix) + { + p(0) = ix * step; + if (dim>1) + p(1) = iy * step; + if (dim>2) + p(2) = iz * step; + + support_points[k++] = p; + } +} + + +template +void +FE_DGQ::rotate_indices (std::vector& numbers, + const char direction) const +{ + const unsigned int n = degree+1; + unsigned int s = n; + for (unsigned int i=1;i0;) + numbers[l++]=--i; + } else { + switch (direction) + { + // Rotate xy-plane + // counter-clockwise + case 'z': + for (unsigned int iz=0;iz<((dim>2) ? n:1);++iz) + for (unsigned int j=0;j2) ? n:1);++iz) + for (unsigned int iy=0;iy2, ExcDimensionMismatch (dim,3)); + for (unsigned int iz=0;iz2, ExcDimensionMismatch (dim,3)); + for (unsigned int iz=0;iz +Mapping::InternalDataBase* +FE_DGQ::get_data (const UpdateFlags update_flags, + const Mapping& mapping, + const Quadrature &quadrature) const +{ + InternalData* data = new InternalData; + std::vector values(0); + std::vector > grads(0); + std::vector > grad_grads(0); + + data->update_once = update_once(update_flags); + data->update_each = update_each(update_flags); + data->update_flags = data->update_once | data->update_each; + + const UpdateFlags flags(data->update_flags); + + if (flags & update_values) + { + values.resize (dofs_per_cell); + data->shape_values.resize(dofs_per_cell, + std::vector(quadrature.n_quadrature_points)); + } + + if (flags & update_gradients) + { + grads.resize (dofs_per_cell); + data->shape_gradients.resize(dofs_per_cell, + std::vector >(quadrature.n_quadrature_points)); + } + + if (flags & update_second_derivatives) + { + data->initialize (this, mapping, quadrature); + } + + + if (flags & (update_values | update_gradients)) + for (unsigned int i=0;icompute(quadrature.point(i), values, grads, grad_grads); + for (unsigned int k=0;kshape_values[k][i] = values[k]; + if (flags & update_gradients) + data->shape_gradients[k][i] = grads[k]; + } + } + return data; +} + + + +//---------------------------------------------------------------------- +// Fill data of FEValues +//---------------------------------------------------------------------- +template +void +FE_DGQ::fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fedata, + FEValuesData &data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0;k +void +FE_DGQ::fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face, + const Quadrature& quadrature, + Mapping::InternalDataBase& mapping_data, + Mapping::InternalDataBase& fedata, + FEValuesData& data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + unsigned int offset = face * quadrature.n_quadrature_points; + + const UpdateFlags flags(fe_data.update_once | fe_data.update_each); + + for (unsigned int k=0;k +void +FE_DGQ::fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face, + const unsigned int subface, + const Quadrature& quadrature, + Mapping::InternalDataBase& mapping_data, + Mapping::InternalDataBase& fedata, + FEValuesData& data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + unsigned int offset = (face * GeometryInfo::subfaces_per_face + + subface) * quadrature.n_quadrature_points; + + const UpdateFlags flags(fe_data.update_once | fe_data.update_each); + + for (unsigned int k=0;k +unsigned int +FE_DGQ::memory_consumption () const +{ + Assert (false, ExcNotImplemented ()); + return 0; +} + + + +template FE_DGQ; diff --git a/deal.II/deal.II/source/fe/fe_lib.criss_cross.cc b/deal.II/deal.II/source/fe/fe_lib.criss_cross.cc deleted file mode 100644 index e74dd30f44..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.criss_cross.cc +++ /dev/null @@ -1,1353 +0,0 @@ -//---------------------------- fe_lib.criss_cross.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.criss_cross.cc --------------------------- - - -#include -#include -#include -#include -#include - -#include - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - -/*-----------------------------------2d------------------------------------ - Maple script to automate some of the error-prone computations on - this strange sort of element. - - n_functions := 5: - - # note: support_points[i] is a std::vector which is indexed from - # one and not from zero! - support_points[0] := [0,0]: - support_points[1] := [1,0]: - support_points[2] := [1,1]: - support_points[3] := [0,1]: - support_points[4] := [1/2,1/2]: - - phi[0] := proc(x,y) if(y<1-x) then 1-x-y; else 0; fi; end: - phi[1] := proc(x,y) if(y1-x) then x+y-1; else 0; fi; end: - phi[3] := proc(x,y) if(y>x) then y-x; else 0; fi; end: - phi[4] := proc(x,y) 1 - phi[0](x,y) - phi[1](x,y) - - phi[2](x,y) - phi[3](x,y) ; end: - - #points on children: let them be indexed one-based, as are - #the support_points - points[0] := array(0..n_functions-1, 1..2): - points[1] := array(0..n_functions-1, 1..2): - points[2] := array(0..n_functions-1, 1..2): - points[3] := array(0..n_functions-1, 1..2): - for i from 0 to n_functions-1 do - points[0][i,1] := support_points[i][1]/2: - points[0][i,2] := support_points[i][2]/2: - - points[1][i,1] := support_points[i][1]/2+1/2: - points[1][i,2] := support_points[i][2]/2: - - points[2][i,1] := support_points[i][1]/2+1/2: - points[2][i,2] := support_points[i][2]/2+1/2: - - points[3][i,1] := support_points[i][1]/2: - points[3][i,2] := support_points[i][2]/2+1/2: - od: - - prolongation := array(0..3,0..n_functions-1, 0..n_functions-1): - print ("Computing prolongation matrices"): - for i from 0 to 3 do - print ("child", i): - for j from 0 to n_functions-1 do - for k from 0 to n_functions-1 do - prolongation[i,j,k] := phi[k](points[i][j,1], points[i][j,2]): - od: - od: - od: - - print ("Computing restriction matrices"): - # to get the restriction (interpolation) matrices, evaluate - # the basis functions on the child cells at the global - # interpolation points - child_phi[0] := proc(i, x, y) - if ((x>1/2) or (y>1/2)) then - 0: - else - phi[i](2*x,2*y): - fi: - end: - child_phi[1] := proc(i, x, y) - if ((x<1/2) or (y>1/2)) then - 0: - else - phi[i](2*x-1,2*y): - fi: - end: - child_phi[2] := proc(i, x, y) - if ((x<1/2) or (y<1/2)) then - 0: - else - phi[i](2*x-1,2*y-1): - fi: - end: - child_phi[3] := proc(i, x, y) - if ((x>1/2) or (y<1/2)) then - 0: - else - phi[i](2*x,2*y-1): - fi: - end: - restriction := array(0..3,0..n_functions-1, 0..n_functions-1): - for child from 0 to 3 do - for j from 0 to n_functions-1 do - for k from 0 to n_functions-1 do - restriction[child,j,k] := child_phi[child](k, - support_points[j][1], - support_points[j][2]): - od: - od: - od: - - - # these are the basis functions differentiated with respect to - # xi and eta. we need them for the computation of the jacobi - # matrix, since we can't just differentiate a function. - phi_xi[0] := proc(x,y) if(y<1-x) then -1; else 0; fi; end: - phi_xi[1] := proc(x,y) if(y1-x) then 1; else 0; fi; end: - phi_xi[3] := proc(x,y) if(y>x) then -1; else 0; fi; end: - phi_xi[4] := proc(x,y) 1 - phi_xi[0](x,y) - phi_xi[1](x,y) - - phi_xi[2](x,y) - phi_xi[3](x,y) ; end: - - phi_eta[0] := proc(x,y) if(y<1-x) then -1; else 0; fi; end: - phi_eta[1] := proc(x,y) if(y1-x) then 1; else 0; fi; end: - phi_eta[3] := proc(x,y) if(y>x) then 1; else 0; fi; end: - phi_eta[4] := proc(x,y) 1 - phi_eta[0](x,y) - phi_eta[1](x,y) - - phi_eta[2](x,y) - phi_eta[3](x,y) ; end: - - # define an array of the support points in real space; the first - # four are the vertices, the last one is the crossing point of - # the two diagonals - print ("Computing cross point"): - x := array(0..4): - y := array(0..4): - - eq_sys := {(1-t)*x[0] + t*x[2] = (1-s)*x[1] + s*x[3], - (1-t)*y[0] + t*y[2] = (1-s)*y[1] + s*y[3]}: - solution := solve (eq_sys, {s,t}): - - # set last point in dependence of the first four - x[4] := subs (solution, (1-t)*x[0] + t*x[2]): - y[4] := subs (solution, (1-t)*y[0] + t*y[2]): - - # this is the mapping from the unit cell to the real cell, only for - # completeness; we can't use it here, since phi[i] can't be - # differentiated - x_real := simplify(sum(x[s]*phi[s], s=0..4)): - y_real := simplify(sum(y[s]*phi[s], s=0..4)): - - # correct form of the jacobi determinant: - # detJ := diff(x_real,xi)*diff(y_real,eta) - # - diff(x_real,eta)*diff(y_real,xi): - # better now: - detJ1 := proc(xi,eta) sum(x[s]*phi_xi[s](xi,eta), s=0..4); end: - detJ2 := proc(xi,eta) sum(y[s]*phi_eta[s](xi,eta), s=0..4); end: - detJ3 := proc(xi,eta) sum(x[s]*phi_eta[s](xi,eta), s=0..4); end: - detJ4 := proc(xi,eta) sum(y[s]*phi_xi[s](xi,eta), s=0..4); end: - detJ := proc(xi,eta) - detJ1(xi,eta) * detJ2(xi,eta) - - detJ3(xi,eta) * detJ4(xi,eta); - end: - - - # Now for the mass matrix: we divide the entire cell into four - # sectors: - # - # *-------* - # |\ /| - # | \ 3 / | - # | \ / | - # |4 * 2| - # | / \ | - # | / 1 \ | - # |/ \| - # *-------* - # - # In each of these sectors, the Jacobi determinant is constant - # so that we can assemble the local mass matrix by summation - # over these four sectors. Since the basis functions are as of - # now only expressed as if-then-else statements, we have to - # express them for each sector separately and name them - # phi_s[i]. detJ_s denotes the Jacobi determinant on this sector. - - print ("Computing mass matrix"): - - mass_matrix := array (0..n_functions-1, 0..n_functions-1): - for i from 0 to n_functions-1 do - for j from 0 to n_functions-1 do - mass_matrix[i,j] := 0: - od: - od: - - # sector 1 - phi_s[0] := 1-x-y: - phi_s[1] := x-y: - phi_s[2] := 0: - phi_s[3] := 0: - phi_s[4] := 1 - phi_s[0] - phi_s[1] - phi_s[2] - phi_s[3]: - - detJ_s := simplify(detJ(1/2, 1/4)): - - for i from 0 to n_functions-1 do - for j from 0 to n_functions-1 do - # split integral over sector into the two parts - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..x), - x=0..1/2) * detJ_s: - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..1-x), - x=1/2..1) * detJ_s: - od: - od: - - # sector 2 - phi_s[0] := 0: - phi_s[1] := x-y: - phi_s[2] := x+y-1: - phi_s[3] := 0: - phi_s[4] := 1 - phi_s[0] - phi_s[1] - phi_s[2] - phi_s[3]: - - detJ_s := simplify(detJ(3/4, 1/2)): - - for i from 0 to n_functions-1 do - for j from 0 to n_functions-1 do - # split integral over sector into the two parts - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..x), - x=0..1/2) * detJ_s: - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..1-x), - x=1/2..1) * detJ_s: - od: - od: - - # sector 3 - phi_s[0] := 0: - phi_s[1] := 0: - phi_s[2] := x+y-1: - phi_s[3] := y-x: - phi_s[4] := 1 - phi_s[0] - phi_s[1] - phi_s[2] - phi_s[3]: - - detJ_s := simplify(detJ(1/2, 3/4)): - - for i from 0 to n_functions-1 do - for j from 0 to n_functions-1 do - # split integral over sector into the two parts - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..x), - x=0..1/2) * detJ_s: - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..1-x), - x=1/2..1) * detJ_s: - od: - od: - - # sector 4 - phi_s[0] := 1-x-y: - phi_s[1] := 0: - phi_s[2] := 0: - phi_s[3] := y-x: - phi_s[4] := 1 - phi_s[0] - phi_s[1] - phi_s[2] - phi_s[3]: - - detJ_s := simplify(detJ(1/4, 1/2)): - - for i from 0 to n_functions-1 do - for j from 0 to n_functions-1 do - # split integral over sector into the two parts - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..x), - x=0..1/2) * detJ_s: - mass_matrix[i,j] := mass_matrix[i,j] + - int(int(phi_s[i] * phi_s[j], - y=0..1-x), - x=1/2..1) * detJ_s: - od: - od: - - print ("writing data to files"): - readlib(C): - C(prolongation, filename=prolongation_2d): - C(restriction, filename=restriction_2d): - C(array(1..2, [x[4], y[4]]), optimized, filename=crosspoint_2d): - C(mass_matrix, optimized, filename=massmatrix_2d): - - -------------------------------------------------------------------- - - Postprocess the files by the commands - - perl -pi -e 's/\[(\d+)\]\[(\d+)\]\[(\d+)\]/[$1]($2,$3)/g;' prolongation_2d - perl -pi -e 's/.*= 0.0;\n//g;' prolongation_2d - perl -pi -e 's/\[(\d+)\]\[(\d+)\]/($1,$2)/g;' massmatrix_2d - perl -pi -e 's/(t\d+) =/const double $1 =/g;' massmatrix_2d - ------------------------------------------------------------------------------*/ - - -#if deal_II_dimension == 1 - - -template <> -FECrissCross<1>::FECrissCross () : - // set more or less invalid data - FiniteElement<1> (FiniteElementData<1> (0,0,0,0), - std::vector()) -{ - Assert (false, ExcNotUseful()); -}; - - -template <> -double FECrissCross<1>::shape_value (const unsigned int, const Point<1> &) const { - Assert (false, ExcNotUseful()); - return 0; -}; - - -template <> -Tensor<1,1> FECrissCross<1>::shape_grad (const unsigned int, const Point<1> &) const { - Assert (false, ExcNotUseful()); - return Point<1>(); -}; - - -template <> -Tensor<2,1> FECrissCross<1>::shape_grad_grad (const unsigned int, const Point<1> &) const { - Assert (false, ExcNotUseful()); - return Tensor<2,1>(); -}; - - -template <> -void FECrissCross<1>::get_unit_support_points (std::vector >&) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_support_points (const DoFHandler<1>::cell_iterator &, - std::vector > &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &, - FullMatrix &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -double FECrissCross<1>::shape_value_transform (const unsigned int, - const Point<1> &) const { - Assert (false, ExcNotUseful()); - return 0; -}; - - -template <> -Tensor<1,1> FECrissCross<1>::shape_grad_transform (const unsigned int, - const Point<1> &) const { - Assert (false, ExcNotUseful()); - return Point<1>(); -}; - - -template <> -void FECrissCross<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, - const std::vector > &, - std::vector &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, - const unsigned int, - const std::vector > &, - std::vector &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, - const unsigned int, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcNotUseful()); -}; - - -template <> -void FECrissCross<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &, - const std::vector > &, - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - const FullMatrix &, - const std::vector > > &) const { - Assert (false, ExcNotUseful()); -}; - -#endif - - -#if deal_II_dimension == 2 - - -template <> -FECrissCross<2>::FECrissCross () : - FiniteElement<2> (FiniteElementData<2> (1,0,1,5,1), - std::vector (1, false)) -{ - interface_constraints(0,0) = 1./2.; - interface_constraints(0,1) = 1./2.; - - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = 1.0/2.0; - prolongation[0](1,1) = 1.0/2.0; - prolongation[0](2,4) = 1.0; - prolongation[0](3,0) = 1.0/2.0; - prolongation[0](3,3) = 1.0/2.0; - prolongation[0](4,0) = 1.0/2.0; - prolongation[0](4,4) = 1.0/2.0; - prolongation[1](0,0) = 1.0/2.0; - prolongation[1](0,1) = 1.0/2.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,1) = 1.0/2.0; - prolongation[1](2,2) = 1.0/2.0; - prolongation[1](3,4) = 1.0; - prolongation[1](4,1) = 1.0/2.0; - prolongation[1](4,4) = 1.0/2.0; - prolongation[2](0,4) = 1.0; - prolongation[2](1,1) = 1.0/2.0; - prolongation[2](1,2) = 1.0/2.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,2) = 1.0/2.0; - prolongation[2](3,3) = 1.0/2.0; - prolongation[2](4,2) = 1.0/2.0; - prolongation[2](4,4) = 1.0/2.0; - prolongation[3](0,0) = 1.0/2.0; - prolongation[3](0,3) = 1.0/2.0; - prolongation[3](1,4) = 1.0; - prolongation[3](2,2) = 1.0/2.0; - prolongation[3](2,3) = 1.0/2.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,3) = 1.0/2.0; - prolongation[3](4,4) = 1.0/2.0; - - restriction[0](0,0) = 1.0; - restriction[0](4,2) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](4,3) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](4,0) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](4,1) = 1.0; -}; - - -template <> -inline -double FECrissCross<2>::shape_value (const unsigned int i, - const Point<2> &p) const -{ - Assert((i1-x) ? x+y-1 : 0); - case 3: return ((y>x) ? y-x : 0); - - // I am too lazy to optimize the - // following myself. Let the - // compiler do this - case 4: return (1-(((y<1-x) ? 1-x-y : 0) + - ((y1-x) ? x+y-1 : 0) + - ((y>x) ? y-x : 0))); - } - return 0.; -}; - - -template <> -inline -Tensor<1,2> FECrissCross<2>::shape_grad (const unsigned int i, const Point<2> &p) const -{ - Assert((i(-1,-1) : Point<2>(0,0)); - case 1: return ((y(1,-1) : Point<2>(0,0)); - case 2: return ((y>1-x) ? Point<2>(1,1) : Point<2>(0,0)); - case 3: return ((y>x) ? Point<2>(-1,1) : Point<2>(0,0)); - - // I am too lazy to optimize the - // following myself. Let the - // compiler do this - case 4: return -1.*(((y<1-x) ? Point<2>(-1,-1) : Point<2>(0,0)) + - ((y(1,-1) : Point<2>(0,0)) + - ((y>1-x) ? Point<2>(1,1) : Point<2>(0,0)) + - ((y>x) ? Point<2>(-1,1) : Point<2>(0,0))); - } - return Point<2>(); -}; - - -template <> -inline -Tensor<2,2> -FECrissCross<2>::shape_grad_grad (const unsigned int i, - const Point<2> &) const -{ - Assert((i(); -}; - - -template <> -void FECrissCross<2>::get_unit_support_points (std::vector > &unit_points) const { - Assert(unit_points.size()==dofs_per_cell, - FiniteElementBase<2>:: - ExcWrongFieldDimension (unit_points.size(), dofs_per_cell)); - - unit_points[0] = Point<2> (0,0); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (1,1); - unit_points[3] = Point<2> (0,1); - unit_points[4] = Point<2> (0.5, 0.5); -}; - - -template <> -void FECrissCross<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell, - std::vector > &support_points) const { - const unsigned int dim = 2; - - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<2>:: - ExcWrongFieldDimension (support_points.size(), dofs_per_cell)); - - // copy vertices - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - support_points[vertex] = cell->vertex(vertex); - -/* - last support point is the common point of the two diagonals; the formula for - the computation is a bit lengthy but straightforward. You can get it with - the small Maple script printed at the beginning of this file. -*/ - const double x0 = cell->vertex(0)(0), - y0 = cell->vertex(0)(1), - x1 = cell->vertex(1)(0), - y1 = cell->vertex(1)(1), - x2 = cell->vertex(2)(0), - y2 = cell->vertex(2)(1), - x3 = cell->vertex(3)(0), - y3 = cell->vertex(3)(1); - const double t1 = x0*y1; - const double t2 = x0*y3; - const double t4 = x1*y0; - const double t5 = x3*y0; - const double t14 = (t1-t2+x1*y3-t4+t5-x3*y1)/(t1-t2-x2*y1+x2*y3-t4+x1*y2+t5-x3*y2); - const double t15 = 1.0-t14; - support_points[4](0) = t15*x0+t14*x2; - support_points[4](1) = t15*y0+t14*y2; -}; - - -template <> -void FECrissCross<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face, - std::vector > &support_points) const { - const unsigned int dim = 2; - - Assert ((support_points.size() == dofs_per_face) && - (support_points.size() == GeometryInfo::vertices_per_face), - FiniteElementBase<2>:: - ExcWrongFieldDimension (support_points.size(), - GeometryInfo::vertices_per_face)); - - for (unsigned int vertex=0; vertexvertex(vertex); -}; - - -template <> -void FECrissCross<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell, - FullMatrix &mass_matrix) const { - Assert (mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>:: - ExcWrongFieldDimension(mass_matrix.n(),dofs_per_cell)); - Assert (mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>:: - ExcWrongFieldDimension(mass_matrix.m(),dofs_per_cell)); - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - - const double t1 = x[3]*x[2]; - const double t2 = y[1]*y[1]; - const double t5 = x[0]*x[0]; - const double t7 = t5*y[3]*y[2]; - const double t8 = x[3]*x[1]; - const double t9 = y[0]*y[0]; - const double t10 = t8*t9; - const double t11 = t5*y[1]; - const double t12 = t11*y[3]; - const double t13 = t11*y[2]; - const double t14 = x[1]*x[1]; - const double t15 = t14*y[0]; - const double t19 = x[2]*x[1]*t9; - const double t20 = t1*t9; - const double t24 = x[0]*x[2]; - const double t25 = t24*t2; - const double t29 = t15*y[2]; - const double t30 = x[3]*y[0]; - const double t31 = x[1]*y[2]; - const double t32 = t30*t31; - const double t33 = x[2]*y[3]; - const double t34 = x[1]*y[0]; - const double t35 = t33*t34; - const double t37 = x[2]*y[1]; - const double t38 = t37*t34; - const double t39 = y[1]*x[1]; - const double t42 = -2.0*t1*t2-t7+t10+t12+t13+2.0*t15*y[3]+t19-t20-2.0*t14*y[2]*y[3]+ - t25+2.0*x[0]*t2*x[3]+t29-t32-2.0*t35-t38-2.0*t39*t30; - const double t43 = y[3]*x[1]; - const double t46 = x[3]*y[2]; - const double t49 = t37*t30; - const double t51 = x[0]*y[1]; - const double t52 = t51*t46; - const double t54 = t51*t33; - const double t55 = x[0]*y[0]; - const double t56 = t55*t37; - const double t59 = t51*t30; - const double t60 = t51*t31; - const double t61 = t55*t31; - const double t62 = t55*t46; - const double t63 = x[0]*y[3]; - const double t64 = t63*t34; - const double t65 = t55*t33; - const double t66 = t63*t31; - const double t72 = 2.0*t37*t43+2.0*t39*t46+3.0*t49-2.0*t52-t54-t56-2.0*t51*t43-t59-t60 - -t61+t62-t64+t65+3.0*t66-t14*t9-t5*t2+2.0*t51*t34; - const double t75 = 1/(t51-t63-t37+t33-t34+t31+t30-t46); - const double t76 = (t42+t72)*t75; - const double t77 = y[3]*y[3]; - const double t81 = x[3]*x[3]; - const double t82 = y[1]*t81; - const double t86 = t81*y[0]*y[2]; - const double t90 = t24*t77; - const double t94 = -t7-t10-t12-2.0*x[0]*t77*x[1]+t13+t19+2.0*t82*y[2]-t86-t20+t81*t9 - -2.0*t82*y[0]-t90+t32-3.0*t35+2.0*t49-3.0*t52; - const double t96 = t63*t46; - const double t97 = t30*t33; - const double t98 = x[3]*y[3]; - const double t114 = t54-t56+t59-t61+t62+t64+t65+2.0*t66+t96+t97+2.0*t51*t98-2.0*t63* - t30-2.0*y[1]*x[3]*t33+2.0*t98*t34-2.0*t98*t31+2.0*t77*x[1]*x[2]+t5*t77; - const double t116 = (t94+t114)*t75; - const double t118 = t76/24.0; - const double t119 = t116/24.0; - const double t121 = -t118+t116/8.0; - const double t122 = x[0]*y[2]; - const double t123 = t122*t37; - const double t124 = t122*t33; - const double t125 = y[2]*y[2]; - const double t126 = x[0]*t125; - const double t127 = t126*x[1]; - const double t128 = t126*x[3]; - const double t129 = x[2]*x[2]; - const double t131 = y[1]*t129; - const double t132 = t131*y[0]; - const double t133 = t131*y[3]; - const double t134 = -t25+t60+t123+t54-t52-t124-t127+t128+t129*t2-t132-t133; - const double t135 = t37*t46; - const double t139 = x[2]*y[0]; - const double t140 = t139*t46; - const double t141 = t8*t125; - const double t143 = t129*y[0]*y[3]; - const double t144 = t33*t31; - const double t145 = t139*t31; - const double t146 = t38+t135-2.0*t37*t31-t29+t14*t125-t140-t35-t141+t143+t144+t32+t145 - ; - const double t148 = (t134+t146)*t75; - const double t150 = t148/24.0; - const double t152 = -t118+t148/8.0; - const double t153 = t123-t54+t66+t128-t96-t124-t127+t90+t49-t132-t135; - const double t158 = t133+2.0*t33*t46+t86-t81*t125-t129*t77+t141-t97-t32-t144-t140+t143 - +t145; - const double t160 = (t153+t158)*t75; - const double t162 = t160/24.0; - const double t164 = 7.0/24.0*t160; - const double t165 = -5.0/24.0*t148+t164; - const double t168 = t164-5.0/24.0*t116; - mass_matrix(0,0) = -t76/12.0+t116/12.0; - mass_matrix(0,1) = -t118; - mass_matrix(0,2) = 0.0; - mass_matrix(0,3) = -t119; - mass_matrix(0,4) = t121; - mass_matrix(1,0) = -t118; - mass_matrix(1,1) = -t76/12.0+t148/12.0; - mass_matrix(1,2) = -t150; - mass_matrix(1,3) = 0.0; - mass_matrix(1,4) = t152; - mass_matrix(2,0) = 0.0; - mass_matrix(2,1) = -t150; - mass_matrix(2,2) = t148/12.0-t160/12.0; - mass_matrix(2,3) = -t162; - mass_matrix(2,4) = t165; - mass_matrix(3,0) = -t119; - mass_matrix(3,1) = 0.0; - mass_matrix(3,2) = -t162; - mass_matrix(3,3) = -t160/12.0+t116/12.0; - mass_matrix(3,4) = t168; - mass_matrix(4,0) = t121; - mass_matrix(4,1) = t152; - mass_matrix(4,2) = t165; - mass_matrix(4,3) = t168; - mass_matrix(4,4) = -t76/12.0+7.0/12.0*t148-17.0/12.0*t160+7.0/12.0*t116; -}; - - -template <> -inline -double FECrissCross<2>::shape_value_transform (const unsigned int i, - const Point<2> &p) const { - // use an isoparametric ansatz - return shape_value(i,p); -}; - - -template <> -Tensor<1,2> FECrissCross<2>::shape_grad_transform (const unsigned int i, - const Point<2> &p) const { - // use an isoparametric ansatz - return shape_grad(i,p); -}; - - -template <> -void FECrissCross<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &face, - const std::vector > &unit_points, - std::vector &face_jacobians) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == face_jacobians.size(), - FiniteElementBase<2>:: - ExcWrongFieldDimension (unit_points.size(), face_jacobians.size())); - - // a linear mapping for a single line - // produces particularly simple - // expressions for the jacobi - // determinant :-) - const double h = sqrt((face->vertex(1) - face->vertex(0)).square()); - fill_n (face_jacobians.begin(), - unit_points.size(), - h); -}; - - -template <> -void FECrissCross<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator &face, - const unsigned int, - const std::vector > &unit_points, - std::vector &face_jacobians) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == face_jacobians.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - face_jacobians.size())); - Assert (face->at_boundary() == false, - FiniteElement<2>::ExcBoundaryFaceUsed ()); - - // a linear mapping for a single line - // produces particularly simple - // expressions for the jacobi - // determinant :-) - const double h = sqrt((face->vertex(1) - face->vertex(0)).square()); - fill_n (face_jacobians.begin(), - unit_points.size(), - h/2); -}; - - -template <> -void FECrissCross<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, - const unsigned int face_no, - const std::vector > &unit_points, - std::vector > &normal_vectors) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == normal_vectors.size(), - FiniteElementBase<2>:: - ExcWrongFieldDimension (unit_points.size(), normal_vectors.size())); - - const DoFHandler<2>::face_iterator face = cell->face(face_no); - // compute direction of line - const Point<2> line_direction = (face->vertex(1) - face->vertex(0)); - // rotate to the right by 90 degrees - const Point<2> normal_direction(line_direction(1), - -line_direction(0)); - - if (face_no <= 1) - // for sides 0 and 1: return the correctly - // scaled vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / sqrt(normal_direction.square())); - else - // for sides 2 and 3: scale and invert - // vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / (-sqrt(normal_direction.square()))); -}; - - -template <> -void FECrissCross<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, - const unsigned int face_no, - const unsigned int, - const std::vector > &unit_points, - std::vector > &normal_vectors) const { - // more or less copied from the linear - // finite element - // note, that in 2D the normal vectors to the - // subface have the same direction as that - // for the face - Assert (unit_points.size() == normal_vectors.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), normal_vectors.size())); - Assert (cell->face(face_no)->at_boundary() == false, - FiniteElement<2>::ExcBoundaryFaceUsed ()); - - const DoFHandler<2>::face_iterator face = cell->face(face_no); - // compute direction of line - const Point<2> line_direction = (face->vertex(1) - face->vertex(0)); - // rotate to the right by 90 degrees - const Point<2> normal_direction(line_direction(1), - -line_direction(0)); - - if (face_no <= 1) - // for sides 0 and 1: return the correctly - // scaled vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / sqrt(normal_direction.square())); - else - // for sides 2 and 3: scale and invert - // vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / (-sqrt(normal_direction.square()))); -}; - - -template -void FECrissCross::fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &/*shape_grad_transform*/) const { - Assert (jacobians.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(jacobians.size(), - unit_points.size())); - Assert (q_points.size() == unit_points.size(), - typename FiniteElementBase::ExcWrongFieldDimension(q_points.size(), - unit_points.size())); - Assert (support_points.size() == dofs_per_cell, - typename FiniteElementBase::ExcWrongFieldDimension(support_points.size(), - dofs_per_cell)); - - - unsigned int n_points=unit_points.size(); - - // we need the support points in any - // way, wanted or not by the user - if (compute_support_points) - get_support_points (cell, support_points); - - if (compute_q_points) - { - // initialize points to zero - for (unsigned int i=0; i (); - - // note: let x_l be the vector of the - // lth quadrature point in real space and - // xi_l that on the unit cell, let further - // p_j be the vector of the jth vertex - // of the cell in real space and - // N_j(xi_l) be the value of the associated - // basis function at xi_l, then - // x_l(xi_l) = sum_j p_j N_j(xi_l) - for (unsigned int j=0; j::fill_fe_values# - for more information on this. -*/ - - Point vertices[GeometryInfo::vertices_per_cell]; - for (unsigned int l=0; l::vertices_per_cell; ++l) - vertices[l] = cell->vertex(l); - - if (compute_jacobians) - switch (dim) - { - case 1: - for (unsigned int point=0; point -FECrissCross<3>::FECrissCross () : - // set more or less invalid data - FiniteElement<3> (FiniteElementData<3> (0,0,0,0,0,0), - std::vector()) -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -double -FECrissCross<3>::shape_value (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -}; - - -template <> -Tensor<1,3> -FECrissCross<3>::shape_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<1,3>(); -}; - - -template <> -Tensor<2,3> -FECrissCross<3>::shape_grad_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<2,3>(); -}; - - -template <> -void -FECrissCross<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_unit_support_points (std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_support_points (const DoFHandler<3>::cell_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_face_support_points (const DoFHandler<3>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_face_jacobians (const DoFHandler<3>::face_iterator &, - const std::vector > &, - std::vector &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_subface_jacobians (const DoFHandler<3>::face_iterator &, - const unsigned int, - const std::vector > &, - std::vector &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &, - const unsigned int, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FECrissCross<3>::fill_fe_values (const DoFHandler<3>::cell_iterator &, - const std::vector > &, - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - std::vector > &, - const bool , - const FullMatrix &, - const std::vector > > &) const { - Assert (false, ExcNotImplemented()); -}; - - -template <> -double FECrissCross<3>::shape_value_transform (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -}; - - -template <> -Tensor<1,3> FECrissCross<3>::shape_grad_transform (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Point<3>(); -}; - - -#endif // deal_II_dimension == 3 - - - -template -Point -FECrissCross::transform_unit_to_real_cell (const typename DoFHandler::cell_iterator &, - const Point &) const -{ - Assert (false, ExcNotImplemented()); - return Point(); -}; - - - -template -Point -FECrissCross::transform_real_to_unit_cell (const typename DoFHandler::cell_iterator &, - const Point &) const -{ - Assert (false, ExcNotImplemented()); - return Point(); -}; - - - - -/*--------------------------- QCrissCross* ------------------------------------*/ - - -#if deal_II_dimension == 1 - -template <> -QCrissCross1<1>::QCrissCross1 () : - Quadrature<1> (1) -{ - Assert (false, ExcNotUseful()); -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -QCrissCross1<2>::QCrissCross1 () : - Quadrature<2> (4) -{ - // let quadrature points be the - // barycenters of the four triangles - quadrature_points[0] = Point<2>(1./2., 1./6.); - quadrature_points[1] = Point<2>(5./6., 1./2.); - quadrature_points[2] = Point<2>(1./2., 5./6.); - quadrature_points[3] = Point<2>(1./6., 1./2.); - - weights[0] = 1./4.; - weights[1] = 1./4.; - weights[2] = 1./4.; - weights[3] = 1./4.; -}; - -#endif - - -// explicit instantiations - -template class FECrissCross; -template class QCrissCross1; diff --git a/deal.II/deal.II/source/fe/fe_lib.cubic.cc b/deal.II/deal.II/source/fe/fe_lib.cubic.cc deleted file mode 100644 index 8563597fa1..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.cubic.cc +++ /dev/null @@ -1,11983 +0,0 @@ -//---------------------------- fe_lib.cubic.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.cubic.cc --------------------------- - - -#include -#include -#include -#include -#include -#include - - -// declare explicit specializations before use: -template <> void FEQ3::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEQ3<1>::FEQ3 () : - FEQ1Mapping<1> (1, 2, 0, 0, 1, - std::vector (1, false)) -{ - initialize_matrices (); -}; - - -template <> -FEQ3<1>::FEQ3 (const int) : - FEQ1Mapping<1> (0, 4, 0, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ3<1>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](0,1) = 0.0; - prolongation[0](0,2) = 0.0; - prolongation[0](0,3) = 0.0; - prolongation[0](1,0) = -1.0/16.0; - prolongation[0](1,1) = -1.0/16.0; - prolongation[0](1,2) = 9.0/16.0; - prolongation[0](1,3) = 9.0/16.0; - prolongation[0](2,0) = 5.0/16.0; - prolongation[0](2,1) = 1.0/16.0; - prolongation[0](2,2) = 15.0/16.0; - prolongation[0](2,3) = -5.0/16.0; - prolongation[0](3,0) = 0.0; - prolongation[0](3,1) = 0.0; - prolongation[0](3,2) = 1.0; - prolongation[0](3,3) = 0.0; - prolongation[1](0,0) = -1.0/16.0; - prolongation[1](0,1) = -1.0/16.0; - prolongation[1](0,2) = 9.0/16.0; - prolongation[1](0,3) = 9.0/16.0; - prolongation[1](1,0) = 0.0; - prolongation[1](1,1) = 1.0; - prolongation[1](1,2) = 0.0; - prolongation[1](1,3) = 0.0; - prolongation[1](2,0) = 0.0; - prolongation[1](2,1) = 0.0; - prolongation[1](2,2) = 0.0; - prolongation[1](2,3) = 1.0; - prolongation[1](3,0) = 1.0/16.0; - prolongation[1](3,1) = 5.0/16.0; - prolongation[1](3,2) = -5.0/16.0; - prolongation[1](3,3) = 15.0/16.0; - - restriction[0](0,0) = 1.0; - restriction[0](0,1) = 0.0; - restriction[0](0,2) = 0.0; - restriction[0](0,3) = 0.0; - restriction[0](1,0) = 0.0; - restriction[0](1,1) = 0.0; - restriction[0](1,2) = 0.0; - restriction[0](1,3) = 0.0; - restriction[0](2,0) = 0.0; - restriction[0](2,1) = 0.0; - restriction[0](2,2) = 0.0; - restriction[0](2,3) = 1.0; - restriction[0](3,0) = 0.0; - restriction[0](3,1) = 0.0; - restriction[0](3,2) = 0.0; - restriction[0](3,3) = 0.0; - restriction[1](0,0) = 0.0; - restriction[1](0,1) = 0.0; - restriction[1](0,2) = 0.0; - restriction[1](0,3) = 0.0; - restriction[1](1,0) = 0.0; - restriction[1](1,1) = 1.0; - restriction[1](1,2) = 0.0; - restriction[1](1,3) = 0.0; - restriction[1](2,0) = 0.0; - restriction[1](2,1) = 0.0; - restriction[1](2,2) = 0.0; - restriction[1](2,3) = 0.0; - restriction[1](3,0) = 0.0; - restriction[1](3,1) = 0.0; - restriction[1](3,2) = 1.0; - restriction[1](3,3) = 0.0; -}; - - -template <> -double -FEQ3<1>::shape_value (const unsigned int i, - const Point<1> &p) const -{ - Assert((i -Tensor<1,1> -FEQ3<1>::shape_grad (const unsigned int i, - const Point<1> &p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-27.0/2.0*xi*xi+18.0*xi-11.0/2.0); - case 1: return Point<1>(27.0/2.0*xi*xi-9.0*xi+1.0); - case 2: return Point<1>(81.0/2.0*xi*xi-45.0*xi+9.0); - case 3: return Point<1>(-81.0/2.0*xi*xi+36.0*xi-9.0/2.0); - } - return Point<1>(); -}; - - -template <> -Tensor<2,1> -FEQ3<1>::shape_grad_grad (const unsigned int i, - const Point<1> &p) const -{ - Assert (i return_value; - switch (i) - { - case 0: return_value[0][0] = -27.0*xi+18.0; - case 1: return_value[0][0] = 27.0*xi-9.0; - case 2: return_value[0][0] = 81.0*xi-45.0; - case 3: return_value[0][0] = -81.0*xi+36.0; - }; - - return return_value; -}; - - -template <> -void FEQ3<1>::get_unit_support_points (std::vector > &unit_points) const { - FiniteElement<1>::get_unit_support_points (unit_points); -}; - - -template <> -void FEQ3<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const { - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEQ3<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ3<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double h = cell->vertex(1)(0) - cell->vertex(0)(0); - Assert (h>0, ExcJacobiDeterminantHasWrongSign()); - - const double t1 = 8.0/105.0*h; - const double t2 = 19.0/1680.0*h; - const double t3 = 33.0/560.0*h; - const double t4 = 3.0/140.0*h; - const double t5 = 27.0/70.0*h; - const double t6 = 27.0/560.0*h; - local_mass_matrix(0,0) = t1; - local_mass_matrix(0,1) = t2; - local_mass_matrix(0,2) = t3; - local_mass_matrix(0,3) = -t4; - local_mass_matrix(1,0) = t2; - local_mass_matrix(1,1) = t1; - local_mass_matrix(1,2) = -t4; - local_mass_matrix(1,3) = t3; - local_mass_matrix(2,0) = t3; - local_mass_matrix(2,1) = -t4; - local_mass_matrix(2,2) = t5; - local_mass_matrix(2,3) = -t6; - local_mass_matrix(3,0) = -t4; - local_mass_matrix(3,1) = t3; - local_mass_matrix(3,2) = -t6; - local_mass_matrix(3,3) = t5; -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEQ3<2>::FEQ3 () : - FEQ1Mapping<2> (1, 2, 4, 0, 1, - std::vector (1, false)) -{ - interface_constraints(0,0) = -1.0/16.0; - interface_constraints(0,1) = -1.0/16.0; - interface_constraints(0,2) = 9.0/16.0; - interface_constraints(0,3) = 9.0/16.0; - interface_constraints(1,0) = 5.0/16.0; - interface_constraints(1,1) = 1.0/16.0; - interface_constraints(1,2) = 15.0/16.0; - interface_constraints(1,3) = -5.0/16.0; - interface_constraints(2,2) = 1.0; - interface_constraints(3,3) = 1.0; - interface_constraints(4,0) = 1.0/16.0; - interface_constraints(4,1) = 5.0/16.0; - interface_constraints(4,2) = -5.0/16.0; - interface_constraints(4,3) = 15.0/16.0; - - initialize_matrices (); -}; - - -template <> -FEQ3<2>::FEQ3 (const int) : - FEQ1Mapping<2> (0, 0, 16, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ3<2>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = -1.0/16.0; - prolongation[0](1,1) = -1.0/16.0; - prolongation[0](1,4) = 9.0/16.0; - prolongation[0](1,5) = 9.0/16.0; - prolongation[0](2,0) = 1.0/256.0; - prolongation[0](2,1) = 1.0/256.0; - prolongation[0](2,2) = 1.0/256.0; - prolongation[0](2,3) = 1.0/256.0; - prolongation[0](2,4) = -9.0/256.0; - prolongation[0](2,5) = -9.0/256.0; - prolongation[0](2,6) = -9.0/256.0; - prolongation[0](2,7) = -9.0/256.0; - prolongation[0](2,8) = -9.0/256.0; - prolongation[0](2,9) = -9.0/256.0; - prolongation[0](2,10) = -9.0/256.0; - prolongation[0](2,11) = -9.0/256.0; - prolongation[0](2,12) = 81.0/256.0; - prolongation[0](2,13) = 81.0/256.0; - prolongation[0](2,14) = 81.0/256.0; - prolongation[0](2,15) = 81.0/256.0; - prolongation[0](3,0) = -1.0/16.0; - prolongation[0](3,3) = -1.0/16.0; - prolongation[0](3,10) = 9.0/16.0; - prolongation[0](3,11) = 9.0/16.0; - prolongation[0](4,0) = 5.0/16.0; - prolongation[0](4,1) = 1.0/16.0; - prolongation[0](4,4) = 15.0/16.0; - prolongation[0](4,5) = -5.0/16.0; - prolongation[0](5,4) = 1.0; - prolongation[0](6,0) = -5.0/256.0; - prolongation[0](6,1) = -5.0/256.0; - prolongation[0](6,2) = -1.0/256.0; - prolongation[0](6,3) = -1.0/256.0; - prolongation[0](6,4) = 45.0/256.0; - prolongation[0](6,5) = 45.0/256.0; - prolongation[0](6,6) = -15.0/256.0; - prolongation[0](6,7) = 5.0/256.0; - prolongation[0](6,8) = 9.0/256.0; - prolongation[0](6,9) = 9.0/256.0; - prolongation[0](6,10) = -15.0/256.0; - prolongation[0](6,11) = 5.0/256.0; - prolongation[0](6,12) = 135.0/256.0; - prolongation[0](6,13) = 135.0/256.0; - prolongation[0](6,14) = -45.0/256.0; - prolongation[0](6,15) = -45.0/256.0; - prolongation[0](7,6) = -1.0/16.0; - prolongation[0](7,10) = -1.0/16.0; - prolongation[0](7,12) = 9.0/16.0; - prolongation[0](7,13) = 9.0/16.0; - prolongation[0](8,0) = -5.0/256.0; - prolongation[0](8,1) = -1.0/256.0; - prolongation[0](8,2) = -1.0/256.0; - prolongation[0](8,3) = -5.0/256.0; - prolongation[0](8,4) = -15.0/256.0; - prolongation[0](8,5) = 5.0/256.0; - prolongation[0](8,6) = 9.0/256.0; - prolongation[0](8,7) = 9.0/256.0; - prolongation[0](8,8) = -15.0/256.0; - prolongation[0](8,9) = 5.0/256.0; - prolongation[0](8,10) = 45.0/256.0; - prolongation[0](8,11) = 45.0/256.0; - prolongation[0](8,12) = 135.0/256.0; - prolongation[0](8,13) = -45.0/256.0; - prolongation[0](8,14) = -45.0/256.0; - prolongation[0](8,15) = 135.0/256.0; - prolongation[0](9,4) = -1.0/16.0; - prolongation[0](9,8) = -1.0/16.0; - prolongation[0](9,12) = 9.0/16.0; - prolongation[0](9,15) = 9.0/16.0; - prolongation[0](10,0) = 5.0/16.0; - prolongation[0](10,3) = 1.0/16.0; - prolongation[0](10,10) = 15.0/16.0; - prolongation[0](10,11) = -5.0/16.0; - prolongation[0](11,10) = 1.0; - prolongation[0](12,0) = 25.0/256.0; - prolongation[0](12,1) = 5.0/256.0; - prolongation[0](12,2) = 1.0/256.0; - prolongation[0](12,3) = 5.0/256.0; - prolongation[0](12,4) = 75.0/256.0; - prolongation[0](12,5) = -25.0/256.0; - prolongation[0](12,6) = 15.0/256.0; - prolongation[0](12,7) = -5.0/256.0; - prolongation[0](12,8) = 15.0/256.0; - prolongation[0](12,9) = -5.0/256.0; - prolongation[0](12,10) = 75.0/256.0; - prolongation[0](12,11) = -25.0/256.0; - prolongation[0](12,12) = 225.0/256.0; - prolongation[0](12,13) = -75.0/256.0; - prolongation[0](12,14) = 25.0/256.0; - prolongation[0](12,15) = -75.0/256.0; - prolongation[0](13,4) = 5.0/16.0; - prolongation[0](13,8) = 1.0/16.0; - prolongation[0](13,12) = 15.0/16.0; - prolongation[0](13,15) = -5.0/16.0; - prolongation[0](14,12) = 1.0; - prolongation[0](15,6) = 1.0/16.0; - prolongation[0](15,10) = 5.0/16.0; - prolongation[0](15,12) = 15.0/16.0; - prolongation[0](15,13) = -5.0/16.0; - prolongation[1](0,0) = -1.0/16.0; - prolongation[1](0,1) = -1.0/16.0; - prolongation[1](0,4) = 9.0/16.0; - prolongation[1](0,5) = 9.0/16.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,1) = -1.0/16.0; - prolongation[1](2,2) = -1.0/16.0; - prolongation[1](2,6) = 9.0/16.0; - prolongation[1](2,7) = 9.0/16.0; - prolongation[1](3,0) = 1.0/256.0; - prolongation[1](3,1) = 1.0/256.0; - prolongation[1](3,2) = 1.0/256.0; - prolongation[1](3,3) = 1.0/256.0; - prolongation[1](3,4) = -9.0/256.0; - prolongation[1](3,5) = -9.0/256.0; - prolongation[1](3,6) = -9.0/256.0; - prolongation[1](3,7) = -9.0/256.0; - prolongation[1](3,8) = -9.0/256.0; - prolongation[1](3,9) = -9.0/256.0; - prolongation[1](3,10) = -9.0/256.0; - prolongation[1](3,11) = -9.0/256.0; - prolongation[1](3,12) = 81.0/256.0; - prolongation[1](3,13) = 81.0/256.0; - prolongation[1](3,14) = 81.0/256.0; - prolongation[1](3,15) = 81.0/256.0; - prolongation[1](4,5) = 1.0; - prolongation[1](5,0) = 1.0/16.0; - prolongation[1](5,1) = 5.0/16.0; - prolongation[1](5,4) = -5.0/16.0; - prolongation[1](5,5) = 15.0/16.0; - prolongation[1](6,1) = 5.0/16.0; - prolongation[1](6,2) = 1.0/16.0; - prolongation[1](6,6) = 15.0/16.0; - prolongation[1](6,7) = -5.0/16.0; - prolongation[1](7,6) = 1.0; - prolongation[1](8,5) = -1.0/16.0; - prolongation[1](8,9) = -1.0/16.0; - prolongation[1](8,13) = 9.0/16.0; - prolongation[1](8,14) = 9.0/16.0; - prolongation[1](9,0) = -1.0/256.0; - prolongation[1](9,1) = -5.0/256.0; - prolongation[1](9,2) = -5.0/256.0; - prolongation[1](9,3) = -1.0/256.0; - prolongation[1](9,4) = 5.0/256.0; - prolongation[1](9,5) = -15.0/256.0; - prolongation[1](9,6) = 45.0/256.0; - prolongation[1](9,7) = 45.0/256.0; - prolongation[1](9,8) = 5.0/256.0; - prolongation[1](9,9) = -15.0/256.0; - prolongation[1](9,10) = 9.0/256.0; - prolongation[1](9,11) = 9.0/256.0; - prolongation[1](9,12) = -45.0/256.0; - prolongation[1](9,13) = 135.0/256.0; - prolongation[1](9,14) = 135.0/256.0; - prolongation[1](9,15) = -45.0/256.0; - prolongation[1](10,0) = -5.0/256.0; - prolongation[1](10,1) = -5.0/256.0; - prolongation[1](10,2) = -1.0/256.0; - prolongation[1](10,3) = -1.0/256.0; - prolongation[1](10,4) = 45.0/256.0; - prolongation[1](10,5) = 45.0/256.0; - prolongation[1](10,6) = -15.0/256.0; - prolongation[1](10,7) = 5.0/256.0; - prolongation[1](10,8) = 9.0/256.0; - prolongation[1](10,9) = 9.0/256.0; - prolongation[1](10,10) = -15.0/256.0; - prolongation[1](10,11) = 5.0/256.0; - prolongation[1](10,12) = 135.0/256.0; - prolongation[1](10,13) = 135.0/256.0; - prolongation[1](10,14) = -45.0/256.0; - prolongation[1](10,15) = -45.0/256.0; - prolongation[1](11,6) = -1.0/16.0; - prolongation[1](11,10) = -1.0/16.0; - prolongation[1](11,12) = 9.0/16.0; - prolongation[1](11,13) = 9.0/16.0; - prolongation[1](12,5) = 5.0/16.0; - prolongation[1](12,9) = 1.0/16.0; - prolongation[1](12,13) = 15.0/16.0; - prolongation[1](12,14) = -5.0/16.0; - prolongation[1](13,0) = 5.0/256.0; - prolongation[1](13,1) = 25.0/256.0; - prolongation[1](13,2) = 5.0/256.0; - prolongation[1](13,3) = 1.0/256.0; - prolongation[1](13,4) = -25.0/256.0; - prolongation[1](13,5) = 75.0/256.0; - prolongation[1](13,6) = 75.0/256.0; - prolongation[1](13,7) = -25.0/256.0; - prolongation[1](13,8) = -5.0/256.0; - prolongation[1](13,9) = 15.0/256.0; - prolongation[1](13,10) = 15.0/256.0; - prolongation[1](13,11) = -5.0/256.0; - prolongation[1](13,12) = -75.0/256.0; - prolongation[1](13,13) = 225.0/256.0; - prolongation[1](13,14) = -75.0/256.0; - prolongation[1](13,15) = 25.0/256.0; - prolongation[1](14,6) = 5.0/16.0; - prolongation[1](14,10) = 1.0/16.0; - prolongation[1](14,12) = -5.0/16.0; - prolongation[1](14,13) = 15.0/16.0; - prolongation[1](15,13) = 1.0; - prolongation[2](0,0) = 1.0/256.0; - prolongation[2](0,1) = 1.0/256.0; - prolongation[2](0,2) = 1.0/256.0; - prolongation[2](0,3) = 1.0/256.0; - prolongation[2](0,4) = -9.0/256.0; - prolongation[2](0,5) = -9.0/256.0; - prolongation[2](0,6) = -9.0/256.0; - prolongation[2](0,7) = -9.0/256.0; - prolongation[2](0,8) = -9.0/256.0; - prolongation[2](0,9) = -9.0/256.0; - prolongation[2](0,10) = -9.0/256.0; - prolongation[2](0,11) = -9.0/256.0; - prolongation[2](0,12) = 81.0/256.0; - prolongation[2](0,13) = 81.0/256.0; - prolongation[2](0,14) = 81.0/256.0; - prolongation[2](0,15) = 81.0/256.0; - prolongation[2](1,1) = -1.0/16.0; - prolongation[2](1,2) = -1.0/16.0; - prolongation[2](1,6) = 9.0/16.0; - prolongation[2](1,7) = 9.0/16.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,2) = -1.0/16.0; - prolongation[2](3,3) = -1.0/16.0; - prolongation[2](3,8) = 9.0/16.0; - prolongation[2](3,9) = 9.0/16.0; - prolongation[2](4,5) = -1.0/16.0; - prolongation[2](4,9) = -1.0/16.0; - prolongation[2](4,13) = 9.0/16.0; - prolongation[2](4,14) = 9.0/16.0; - prolongation[2](5,0) = -1.0/256.0; - prolongation[2](5,1) = -5.0/256.0; - prolongation[2](5,2) = -5.0/256.0; - prolongation[2](5,3) = -1.0/256.0; - prolongation[2](5,4) = 5.0/256.0; - prolongation[2](5,5) = -15.0/256.0; - prolongation[2](5,6) = 45.0/256.0; - prolongation[2](5,7) = 45.0/256.0; - prolongation[2](5,8) = 5.0/256.0; - prolongation[2](5,9) = -15.0/256.0; - prolongation[2](5,10) = 9.0/256.0; - prolongation[2](5,11) = 9.0/256.0; - prolongation[2](5,12) = -45.0/256.0; - prolongation[2](5,13) = 135.0/256.0; - prolongation[2](5,14) = 135.0/256.0; - prolongation[2](5,15) = -45.0/256.0; - prolongation[2](6,7) = 1.0; - prolongation[2](7,1) = 1.0/16.0; - prolongation[2](7,2) = 5.0/16.0; - prolongation[2](7,6) = -5.0/16.0; - prolongation[2](7,7) = 15.0/16.0; - prolongation[2](8,9) = 1.0; - prolongation[2](9,2) = 5.0/16.0; - prolongation[2](9,3) = 1.0/16.0; - prolongation[2](9,8) = -5.0/16.0; - prolongation[2](9,9) = 15.0/16.0; - prolongation[2](10,7) = -1.0/16.0; - prolongation[2](10,11) = -1.0/16.0; - prolongation[2](10,14) = 9.0/16.0; - prolongation[2](10,15) = 9.0/16.0; - prolongation[2](11,0) = -1.0/256.0; - prolongation[2](11,1) = -1.0/256.0; - prolongation[2](11,2) = -5.0/256.0; - prolongation[2](11,3) = -5.0/256.0; - prolongation[2](11,4) = 9.0/256.0; - prolongation[2](11,5) = 9.0/256.0; - prolongation[2](11,6) = 5.0/256.0; - prolongation[2](11,7) = -15.0/256.0; - prolongation[2](11,8) = 45.0/256.0; - prolongation[2](11,9) = 45.0/256.0; - prolongation[2](11,10) = 5.0/256.0; - prolongation[2](11,11) = -15.0/256.0; - prolongation[2](11,12) = -45.0/256.0; - prolongation[2](11,13) = -45.0/256.0; - prolongation[2](11,14) = 135.0/256.0; - prolongation[2](11,15) = 135.0/256.0; - prolongation[2](12,14) = 1.0; - prolongation[2](13,7) = 5.0/16.0; - prolongation[2](13,11) = 1.0/16.0; - prolongation[2](13,14) = 15.0/16.0; - prolongation[2](13,15) = -5.0/16.0; - prolongation[2](14,0) = 1.0/256.0; - prolongation[2](14,1) = 5.0/256.0; - prolongation[2](14,2) = 25.0/256.0; - prolongation[2](14,3) = 5.0/256.0; - prolongation[2](14,4) = -5.0/256.0; - prolongation[2](14,5) = 15.0/256.0; - prolongation[2](14,6) = -25.0/256.0; - prolongation[2](14,7) = 75.0/256.0; - prolongation[2](14,8) = -25.0/256.0; - prolongation[2](14,9) = 75.0/256.0; - prolongation[2](14,10) = -5.0/256.0; - prolongation[2](14,11) = 15.0/256.0; - prolongation[2](14,12) = 25.0/256.0; - prolongation[2](14,13) = -75.0/256.0; - prolongation[2](14,14) = 225.0/256.0; - prolongation[2](14,15) = -75.0/256.0; - prolongation[2](15,5) = 1.0/16.0; - prolongation[2](15,9) = 5.0/16.0; - prolongation[2](15,13) = -5.0/16.0; - prolongation[2](15,14) = 15.0/16.0; - prolongation[3](0,0) = -1.0/16.0; - prolongation[3](0,3) = -1.0/16.0; - prolongation[3](0,10) = 9.0/16.0; - prolongation[3](0,11) = 9.0/16.0; - prolongation[3](1,0) = 1.0/256.0; - prolongation[3](1,1) = 1.0/256.0; - prolongation[3](1,2) = 1.0/256.0; - prolongation[3](1,3) = 1.0/256.0; - prolongation[3](1,4) = -9.0/256.0; - prolongation[3](1,5) = -9.0/256.0; - prolongation[3](1,6) = -9.0/256.0; - prolongation[3](1,7) = -9.0/256.0; - prolongation[3](1,8) = -9.0/256.0; - prolongation[3](1,9) = -9.0/256.0; - prolongation[3](1,10) = -9.0/256.0; - prolongation[3](1,11) = -9.0/256.0; - prolongation[3](1,12) = 81.0/256.0; - prolongation[3](1,13) = 81.0/256.0; - prolongation[3](1,14) = 81.0/256.0; - prolongation[3](1,15) = 81.0/256.0; - prolongation[3](2,2) = -1.0/16.0; - prolongation[3](2,3) = -1.0/16.0; - prolongation[3](2,8) = 9.0/16.0; - prolongation[3](2,9) = 9.0/16.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,0) = -5.0/256.0; - prolongation[3](4,1) = -1.0/256.0; - prolongation[3](4,2) = -1.0/256.0; - prolongation[3](4,3) = -5.0/256.0; - prolongation[3](4,4) = -15.0/256.0; - prolongation[3](4,5) = 5.0/256.0; - prolongation[3](4,6) = 9.0/256.0; - prolongation[3](4,7) = 9.0/256.0; - prolongation[3](4,8) = -15.0/256.0; - prolongation[3](4,9) = 5.0/256.0; - prolongation[3](4,10) = 45.0/256.0; - prolongation[3](4,11) = 45.0/256.0; - prolongation[3](4,12) = 135.0/256.0; - prolongation[3](4,13) = -45.0/256.0; - prolongation[3](4,14) = -45.0/256.0; - prolongation[3](4,15) = 135.0/256.0; - prolongation[3](5,4) = -1.0/16.0; - prolongation[3](5,8) = -1.0/16.0; - prolongation[3](5,12) = 9.0/16.0; - prolongation[3](5,15) = 9.0/16.0; - prolongation[3](6,7) = -1.0/16.0; - prolongation[3](6,11) = -1.0/16.0; - prolongation[3](6,14) = 9.0/16.0; - prolongation[3](6,15) = 9.0/16.0; - prolongation[3](7,0) = -1.0/256.0; - prolongation[3](7,1) = -1.0/256.0; - prolongation[3](7,2) = -5.0/256.0; - prolongation[3](7,3) = -5.0/256.0; - prolongation[3](7,4) = 9.0/256.0; - prolongation[3](7,5) = 9.0/256.0; - prolongation[3](7,6) = 5.0/256.0; - prolongation[3](7,7) = -15.0/256.0; - prolongation[3](7,8) = 45.0/256.0; - prolongation[3](7,9) = 45.0/256.0; - prolongation[3](7,10) = 5.0/256.0; - prolongation[3](7,11) = -15.0/256.0; - prolongation[3](7,12) = -45.0/256.0; - prolongation[3](7,13) = -45.0/256.0; - prolongation[3](7,14) = 135.0/256.0; - prolongation[3](7,15) = 135.0/256.0; - prolongation[3](8,2) = 1.0/16.0; - prolongation[3](8,3) = 5.0/16.0; - prolongation[3](8,8) = 15.0/16.0; - prolongation[3](8,9) = -5.0/16.0; - prolongation[3](9,8) = 1.0; - prolongation[3](10,11) = 1.0; - prolongation[3](11,0) = 1.0/16.0; - prolongation[3](11,3) = 5.0/16.0; - prolongation[3](11,10) = -5.0/16.0; - prolongation[3](11,11) = 15.0/16.0; - prolongation[3](12,7) = 1.0/16.0; - prolongation[3](12,11) = 5.0/16.0; - prolongation[3](12,14) = -5.0/16.0; - prolongation[3](12,15) = 15.0/16.0; - prolongation[3](13,15) = 1.0; - prolongation[3](14,4) = 1.0/16.0; - prolongation[3](14,8) = 5.0/16.0; - prolongation[3](14,12) = -5.0/16.0; - prolongation[3](14,15) = 15.0/16.0; - prolongation[3](15,0) = 5.0/256.0; - prolongation[3](15,1) = 1.0/256.0; - prolongation[3](15,2) = 5.0/256.0; - prolongation[3](15,3) = 25.0/256.0; - prolongation[3](15,4) = 15.0/256.0; - prolongation[3](15,5) = -5.0/256.0; - prolongation[3](15,6) = -5.0/256.0; - prolongation[3](15,7) = 15.0/256.0; - prolongation[3](15,8) = 75.0/256.0; - prolongation[3](15,9) = -25.0/256.0; - prolongation[3](15,10) = -25.0/256.0; - prolongation[3](15,11) = 75.0/256.0; - prolongation[3](15,12) = -75.0/256.0; - prolongation[3](15,13) = 25.0/256.0; - prolongation[3](15,14) = -75.0/256.0; - prolongation[3](15,15) = 225.0/256.0; - - restriction[0](0,0) = 1.0; - restriction[0](4,5) = 1.0; - restriction[0](10,11) = 1.0; - restriction[0](12,14) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](5,4) = 1.0; - restriction[1](6,7) = 1.0; - restriction[1](13,15) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](7,6) = 1.0; - restriction[2](9,8) = 1.0; - restriction[2](14,12) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](8,9) = 1.0; - restriction[3](11,10) = 1.0; - restriction[3](15,13) = 1.0; -}; - - -template <> -double -FEQ3<2>::shape_value (const unsigned int i, - const Point<2> &p) const -{ - Assert (i -Tensor<1,2> -FEQ3<2>::shape_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2>(-11.0/2.0+18.0*xi-27.0/2.0*xi*xi+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta*eta, - -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta); - case 1: return Point<2>(1.0-9.0*xi+27.0/2.0*xi*xi+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(9.0-81.0*xi+243.0/2.0*xi*xi)*eta*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta*eta, - -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta); - case 2: return Point<2>((1.0-9.0*xi+27.0/2.0*xi*xi)*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta*eta, - xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta); - case 3: return Point<2>((-11.0/2.0+18.0*xi-27.0/2.0*xi*xi)*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta*eta, - 1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta); - case 4: return Point<2>(9.0-45.0*xi+81.0/2.0*xi*xi+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(81.0-405.0*xi+729.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta, - -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta); - case 5: return Point<2>(-9.0/2.0+36.0*xi-81.0/2.0*xi*xi+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta*eta, - 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta); - case 6: return Point<2>((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta*eta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta, - 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta); - case 7: return Point<2>((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(18.0-162.0*xi+243.0*xi*xi)*eta*eta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta, - -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta); - case 8: return Point<2>((9.0-45.0*xi+81.0/2.0*xi*xi)*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta, - 9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta); - case 9: return Point<2>((-9.0/2.0+36.0*xi-81.0/2.0*xi*xi)*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta*eta, - -9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta); - case 10: return Point<2>((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta*eta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta*eta, - 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta); - case 11: return Point<2>((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-99.0+324.0*xi-243.0*xi*xi)*eta*eta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta*eta, - -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta); - case 12: return Point<2>((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta*eta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta, - 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta); - case 13: return Point<2>((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta, - -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta); - case 14: return Point<2>((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-81.0+648.0*xi-729.0*xi*xi)*eta*eta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta, - 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta); - case 15: return Point<2>((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(162.0-810.0*xi+729.0*xi*xi)*eta*eta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta, - -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta); - }; - return Point<2> (); -}; - - -template <> -Tensor<2,2> -FEQ3<2>::shape_grad_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i return_value; - - switch (i) - { - case 0: - return_value[0][0] = 18.0-27.0*xi+(-99.0+297.0/2.0*xi)*eta+(162.0-243.0*xi)*eta*eta+(-81.0+243.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+6.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta; - break; - case 1: - return_value[0][0] = -9.0+27.0*xi+(99.0/2.0-297.0/2.0*xi)*eta+(-81.0+243.0*xi)*eta*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+6.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta; - break; - case 2: - return_value[0][0] = (-9.0+27.0*xi)*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta+(-81.0/2.0+243.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -9.0*xi+81.0/2.0*xi*xi-81.0/2.0*xi*xi*xi+6.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta; - break; - case 3: - return_value[0][0] = (18.0-27.0*xi)*eta+(-81.0+243.0/2.0*xi)*eta*eta+(81.0-243.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -9.0+99.0/2.0*xi-81.0*xi*xi+81.0/2.0*xi*xi*xi+6.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta; - break; - case 4: - return_value[0][0] = -45.0+81.0*xi+(495.0/2.0-891.0/2.0*xi)*eta+(-405.0+729.0*xi)*eta*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+6.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta; - break; - case 5: - return_value[0][0] = 36.0-81.0*xi+(-198.0+891.0/2.0*xi)*eta+(324.0-729.0*xi)*eta*eta+(-162.0+729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+6.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta; - break; - case 6: - return_value[0][0] = (-81.0+243.0*xi)*eta+(405.0/2.0-1215.0/2.0*xi)*eta*eta+(-243.0/2.0+729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -45.0*xi+405.0/2.0*xi*xi-405.0/2.0*xi*xi*xi+6.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta; - break; - case 7: - return_value[0][0] = (81.0/2.0-243.0/2.0*xi)*eta+(-162.0+486.0*xi)*eta*eta+(243.0/2.0-729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 36.0*xi-162.0*xi*xi+162.0*xi*xi*xi+6.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta; - break; - case 8: - return_value[0][0] = (-45.0+81.0*xi)*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta+(-405.0/2.0+729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -81.0*xi+405.0/2.0*xi*xi-243.0/2.0*xi*xi*xi+6.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta; - break; - case 9: - return_value[0][0] = (36.0-81.0*xi)*eta+(-162.0+729.0/2.0*xi)*eta*eta+(162.0-729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 81.0/2.0*xi-162.0*xi*xi+243.0/2.0*xi*xi*xi+6.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (162.0-243.0*xi)*eta+(-405.0+1215.0/2.0*xi)*eta*eta+(243.0-729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -45.0+495.0/2.0*xi-405.0*xi*xi+405.0/2.0*xi*xi*xi+6.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (-81.0+243.0/2.0*xi)*eta+(324.0-486.0*xi)*eta*eta+(-243.0+729.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 36.0-198.0*xi+324.0*xi*xi-162.0*xi*xi*xi+6.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (-405.0+729.0*xi)*eta+(2025.0/2.0-3645.0/2.0*xi)*eta*eta+(-1215.0/2.0+2187.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -405.0*xi+2025.0/2.0*xi*xi-1215.0/2.0*xi*xi*xi+6.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (324.0-729.0*xi)*eta+(-810.0+3645.0/2.0*xi)*eta*eta+(486.0-2187.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 405.0/2.0*xi-810.0*xi*xi+1215.0/2.0*xi*xi*xi+6.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (-162.0+729.0/2.0*xi)*eta+(648.0-1458.0*xi)*eta*eta+(-486.0+2187.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = -162.0*xi+648.0*xi*xi-486.0*xi*xi*xi+6.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta; - return_value[0][0] = (405.0/2.0-729.0/2.0*xi)*eta+(-810.0+1458.0*xi)*eta*eta+(1215.0/2.0-2187.0/2.0*xi)*eta*eta*eta; - return_value[0][1] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta; - return_value[1][0] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta; - return_value[1][1] = 324.0*xi-810.0*xi*xi+486.0*xi*xi*xi+6.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta; - break; - }; - return return_value; -}; - - -template <> -void FEQ3<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - -/* check that the Jacobi determinant - - t0 = (-x[0]*(1.0-eta)+x[1]*(1.0-eta)+x[2]*eta-x[3]*eta) * - (-y[0]*(1.0-xi)-y[1]*xi+y[2]*xi+y[3]*(1.0-xi)) - - (-x[0]*(1.0-xi)-x[1]*xi+x[2]*xi+x[3]*(1.0-xi)) * - (-y[0]*(1.0-eta)+y[1]*(1.0-eta)+y[2]*eta-y[3]*eta) - - has the right sign. - - We do not attempt to check its (hopefully) positive sign at all points - on the unit cell, but we check that it is positive in the four corners, - which is sufficient since $det J$ is a bilinear function. -*/ - Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]), // xi=eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]), // xi=0, eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]), // xi=eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]), // xi=1, eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - - const double t1 = x[0]-x[1]+x[2]-x[3]; - const double t2 = -y[0]+y[1]; - const double t3 = t1*t2; - const double t4 = 19.0/44100.0*t3; - const double t5 = -x[0]+x[1]; - const double t6 = y[0]-y[1]+y[2]-y[3]; - const double t7 = t5*t6; - const double t8 = 19.0/44100.0*t7; - const double t9 = -x[0]+x[3]; - const double t10 = t9*t6; - const double t11 = 19.0/44100.0*t10; - const double t12 = t9*t2; - const double t13 = 64.0/11025.0*t12; - const double t14 = -y[0]+y[3]; - const double t15 = t1*t14; - const double t16 = 19.0/44100.0*t15; - const double t17 = t5*t14; - const double t18 = 64.0/11025.0*t17; - const double t20 = 361.0/5644800.0*t10; - const double t21 = 19.0/22050.0*t12; - const double t22 = 361.0/5644800.0*t15; - const double t23 = 19.0/22050.0*t17; - const double t24 = -t4+t8-t20-t21+t22+t23; - const double t25 = 361.0/5644800.0*t3; - const double t26 = 361.0/5644800.0*t7; - const double t29 = -t25+t26-t20-361.0/2822400.0*t12+t22+361.0/2822400.0*t17; - const double t30 = -t25+t26-t11-t21+t16+t23; - const double t31 = t3/4900.0; - const double t32 = t7/4900.0; - const double t33 = 209.0/627200.0*t10; - const double t34 = 11.0/2450.0*t12; - const double t35 = 209.0/627200.0*t15; - const double t36 = 11.0/2450.0*t17; - const double t37 = -t31+t32-t33-t34+t35+t36; - const double t38 = 19.0/156800.0*t10; - const double t39 = 2.0/1225.0*t12; - const double t40 = 19.0/156800.0*t15; - const double t41 = 2.0/1225.0*t17; - const double t42 = -t31+t32+t38+t39-t40-t41; - const double t43 = 209.0/627200.0*t3; - const double t44 = 209.0/627200.0*t7; - const double t45 = 19.0/627200.0*t10; - const double t46 = 209.0/313600.0*t12; - const double t47 = 19.0/627200.0*t15; - const double t48 = 209.0/313600.0*t17; - const double t49 = -t43+t44-t45-t46+t47+t48; - const double t50 = 19.0/156800.0*t3; - const double t51 = 19.0/156800.0*t7; - const double t52 = 19.0/78400.0*t12; - const double t53 = 19.0/78400.0*t17; - const double t54 = t50-t51-t45+t52+t47-t53; - const double t55 = 19.0/627200.0*t3; - const double t56 = 19.0/627200.0*t7; - const double t57 = -t55+t56-t33-t46+t35+t48; - const double t58 = -t55+t56+t38+t52-t40-t53; - const double t59 = t10/4900.0; - const double t60 = t15/4900.0; - const double t61 = -t43+t44-t59-t34+t60+t36; - const double t62 = t50-t51-t59+t39+t60-t41; - const double t63 = 99.0/627200.0*t3; - const double t64 = 99.0/627200.0*t7; - const double t65 = 99.0/627200.0*t10; - const double t66 = 1089.0/313600.0*t12; - const double t67 = 99.0/627200.0*t15; - const double t68 = 1089.0/313600.0*t17; - const double t69 = -t63+t64-t65-t66+t67+t68; - const double t70 = 9.0/156800.0*t10; - const double t71 = 99.0/78400.0*t12; - const double t72 = 9.0/156800.0*t15; - const double t73 = 99.0/78400.0*t17; - const double t74 = -t63+t64+t70+t71-t72-t73; - const double t75 = 9.0/156800.0*t3; - const double t76 = 9.0/156800.0*t7; - const double t77 = 9.0/19600.0*t12; - const double t78 = 9.0/19600.0*t17; - const double t79 = t75-t76+t70-t77-t72+t78; - const double t80 = t75-t76-t65+t71+t67-t73; - const double t81 = 79.0/14700.0*t3; - const double t82 = 79.0/14700.0*t7; - const double t86 = -1501.0/1881600.0*t3+1501.0/1881600.0*t7-t11-t21+t16+t23; - const double t87 = 9.0/4900.0*t3; - const double t88 = 9.0/4900.0*t7; - const double t89 = t87-t88+t38+t39-t40-t41; - const double t90 = 3.0/700.0*t3; - const double t91 = 3.0/700.0*t7; - const double t92 = -t90+t91-t33-t34+t35+t36; - const double t93 = 2607.0/627200.0*t3; - const double t94 = 2607.0/627200.0*t7; - const double t95 = -t93+t94-t59-t34+t60+t36; - const double t96 = 237.0/156800.0*t3; - const double t97 = 237.0/156800.0*t7; - const double t98 = t96-t97-t59+t39+t60-t41; - const double t99 = 171.0/627200.0*t3; - const double t100 = 171.0/627200.0*t7; - const double t101 = t99-t100+t38+t52-t40-t53; - const double t104 = -57.0/89600.0*t3+57.0/89600.0*t7-t33-t46+t35+t48; - const double t105 = 891.0/627200.0*t3; - const double t106 = 891.0/627200.0*t7; - const double t107 = t105-t106+t70+t71-t72-t73; - const double t108 = 297.0/89600.0*t3; - const double t109 = 297.0/89600.0*t7; - const double t110 = -t108+t109-t65-t66+t67+t68; - const double t111 = 27.0/22400.0*t3; - const double t112 = 27.0/22400.0*t7; - const double t113 = t111-t112-t65+t71+t67-t73; - const double t114 = 81.0/156800.0*t3; - const double t115 = 81.0/156800.0*t7; - const double t116 = -t114+t115+t70-t77-t72+t78; - const double t117 = 79.0/14700.0*t10; - const double t118 = 79.0/14700.0*t15; - const double t122 = -t4+t8-1501.0/1881600.0*t10-t21+1501.0/1881600.0*t15+t23; - const double t123 = 9.0/4900.0*t10; - const double t124 = 9.0/4900.0*t15; - const double t125 = t96-t97+t123+t39-t124-t41; - const double t126 = 3.0/700.0*t10; - const double t127 = 3.0/700.0*t15; - const double t128 = -t93+t94-t126-t34+t127+t36; - const double t129 = 237.0/156800.0*t10; - const double t130 = 237.0/156800.0*t15; - const double t131 = t87-t88+t129+t39-t130-t41; - const double t132 = 2607.0/627200.0*t10; - const double t133 = 2607.0/627200.0*t15; - const double t134 = -t90+t91-t132-t34+t133+t36; - const double t135 = 171.0/627200.0*t10; - const double t136 = 171.0/627200.0*t15; - const double t137 = t50-t51+t135+t52-t136-t53; - const double t140 = -t43+t44-57.0/89600.0*t10-t46+57.0/89600.0*t15+t48; - const double t141 = 81.0/156800.0*t10; - const double t142 = 81.0/156800.0*t15; - const double t143 = -t114+t115-t141-t77+t142+t78; - const double t144 = 891.0/627200.0*t10; - const double t145 = 891.0/627200.0*t15; - const double t146 = t111-t112+t144+t71-t145-t73; - const double t147 = 297.0/89600.0*t10; - const double t148 = 297.0/89600.0*t15; - const double t149 = -t108+t109-t147-t66+t148+t68; - const double t150 = 27.0/22400.0*t10; - const double t151 = 27.0/22400.0*t15; - const double t152 = t105-t106+t150+t71-t151-t73; - const double t154 = -t31+t32-t132-t34+t133+t36; - const double t155 = -t31+t32+t129+t39-t130-t41; - const double t156 = t50-t51+t123+t39-t124-t41; - const double t157 = -t43+t44-t126-t34+t127+t36; - const double t158 = t75-t76+t144+t71-t145-t73; - const double t159 = t75-t76-t141-t77+t142+t78; - const double t160 = -t63+t64+t150+t71-t151-t73; - const double t161 = -t63+t64-t147-t66+t148+t68; - const double t162 = 9.0/980.0*t3; - const double t163 = 9.0/980.0*t7; - const double t164 = 171.0/78400.0*t10; - const double t165 = 36.0/1225.0*t12; - const double t166 = 171.0/78400.0*t15; - const double t167 = 36.0/1225.0*t17; - const double t169 = 9.0/2450.0*t12; - const double t170 = 9.0/2450.0*t17; - const double t171 = t87-t88+t135+t169-t136-t170; - const double t174 = 171.0/39200.0*t12; - const double t175 = 171.0/39200.0*t17; - const double t176 = -171.0/125440.0*t3+171.0/125440.0*t7-t164-t174+t166+t175; - const double t179 = t99-t100+t135+171.0/313600.0*t12-t136-171.0/313600.0*t17; - const double t180 = 891.0/125440.0*t3; - const double t181 = 891.0/125440.0*t7; - const double t182 = 81.0/78400.0*t10; - const double t183 = 891.0/39200.0*t12; - const double t184 = 81.0/78400.0*t15; - const double t185 = 891.0/39200.0*t17; - const double t186 = -t180+t181-t182-t183+t184+t185; - const double t187 = 81.0/627200.0*t10; - const double t188 = 891.0/313600.0*t12; - const double t189 = 81.0/627200.0*t15; - const double t190 = 891.0/313600.0*t17; - const double t191 = t105-t106+t187+t188-t189-t190; - const double t192 = 81.0/78400.0*t12; - const double t193 = 81.0/78400.0*t17; - const double t194 = -t114+t115+t187-t192-t189+t193; - const double t195 = 81.0/31360.0*t3; - const double t196 = 81.0/31360.0*t7; - const double t197 = 81.0/9800.0*t12; - const double t198 = 81.0/9800.0*t17; - const double t199 = t195-t196-t182+t197+t184-t198; - const double t200 = 99.0/4900.0*t3; - const double t201 = 99.0/4900.0*t7; - const double t205 = -1881.0/627200.0*t3+1881.0/627200.0*t7-t164-t174+t166+t175; - const double t206 = 9801.0/627200.0*t3; - const double t207 = 9801.0/627200.0*t7; - const double t208 = -t206+t207-t182-t183+t184+t185; - const double t209 = 891.0/156800.0*t3; - const double t210 = 891.0/156800.0*t7; - const double t211 = t209-t210-t182+t197+t184-t198; - const double t212 = 2133.0/78400.0*t3; - const double t213 = 2133.0/78400.0*t7; - const double t214 = 9.0/980.0*t10; - const double t215 = 9.0/980.0*t15; - const double t219 = 2133.0/627200.0*t3-2133.0/627200.0*t7+t123+t169-t124-t170; - const double t220 = 171.0/78400.0*t3; - const double t221 = 171.0/78400.0*t7; - const double t224 = -t220+t221-171.0/125440.0*t10-t174+171.0/125440.0*t15+t175; - const double t225 = 729.0/78400.0*t3; - const double t226 = 729.0/78400.0*t7; - const double t227 = 81.0/31360.0*t10; - const double t228 = 81.0/31360.0*t15; - const double t229 = t225-t226+t227+t197-t228-t198; - const double t230 = 243.0/11200.0*t3; - const double t231 = 243.0/11200.0*t7; - const double t232 = 891.0/125440.0*t10; - const double t233 = 891.0/125440.0*t15; - const double t234 = -t230+t231-t232-t183+t233+t185; - const double t237 = 243.0/89600.0*t3-243.0/89600.0*t7+t144+t188-t145-t190; - const double t238 = 729.0/627200.0*t3; - const double t239 = 729.0/627200.0*t7; - const double t240 = -t238+t239-t141-t192+t142+t193; - const double t241 = 99.0/4900.0*t10; - const double t242 = 99.0/4900.0*t15; - const double t246 = -t220+t221-1881.0/627200.0*t10-t174+1881.0/627200.0*t15+t175; - const double t247 = 9801.0/627200.0*t10; - const double t248 = 9801.0/627200.0*t15; - const double t249 = -t230+t231-t247-t183+t248+t185; - const double t250 = 891.0/156800.0*t10; - const double t251 = 891.0/156800.0*t15; - const double t252 = t225-t226+t250+t197-t251-t198; - const double t253 = 2133.0/78400.0*t10; - const double t254 = 2133.0/78400.0*t15; - const double t258 = t87-t88+2133.0/627200.0*t10+t169-2133.0/627200.0*t15-t170; - const double t259 = 729.0/78400.0*t10; - const double t260 = 729.0/78400.0*t15; - const double t261 = t195-t196+t259+t197-t260-t198; - const double t262 = 729.0/627200.0*t10; - const double t263 = 729.0/627200.0*t15; - const double t264 = -t114+t115-t262-t192+t263+t193; - const double t267 = t105-t106+243.0/89600.0*t10+t188-243.0/89600.0*t15-t190; - const double t268 = 243.0/11200.0*t10; - const double t269 = 243.0/11200.0*t15; - const double t270 = -t180+t181-t268-t183+t269+t185; - const double t272 = t209-t210+t259+t197-t260-t198; - const double t273 = -t206+t207-t268-t183+t269+t185; - const double t275 = t99-t100+t123+t169-t124-t170; - const double t276 = 81.0/78400.0*t3; - const double t277 = 81.0/78400.0*t7; - const double t278 = -t276+t277-t232-t183+t233+t185; - const double t279 = -t276+t277+t227+t197-t228-t198; - const double t280 = 81.0/627200.0*t3; - const double t281 = 81.0/627200.0*t7; - const double t282 = t280-t281-t141-t192+t142+t193; - const double t283 = t280-t281+t144+t188-t145-t190; - const double t285 = -t276+t277+t250+t197-t251-t198; - const double t286 = -t276+t277-t247-t183+t248+t185; - const double t287 = 729.0/15680.0*t3; - const double t288 = 729.0/15680.0*t7; - const double t289 = 729.0/15680.0*t10; - const double t290 = 729.0/4900.0*t12; - const double t291 = 729.0/15680.0*t15; - const double t292 = 729.0/4900.0*t17; - const double t295 = 729.0/39200.0*t12; - const double t297 = 729.0/39200.0*t17; - const double t298 = t225-t226+729.0/125440.0*t10+t295-729.0/125440.0*t15-t297; - const double t301 = -t238+t239-t262-729.0/313600.0*t12+t263+729.0/313600.0*t17; - const double t304 = 729.0/125440.0*t3-729.0/125440.0*t7+t259+t295-t260-t297; - const double t305 = 8019.0/78400.0*t3; - const double t306 = 8019.0/78400.0*t7; - const double t310 = 8019.0/627200.0*t3-8019.0/627200.0*t7+t259+t295-t260-t297; - const double t311 = 8019.0/78400.0*t10; - const double t312 = 8019.0/78400.0*t15; - const double t316 = t225-t226+8019.0/627200.0*t10+t295-8019.0/627200.0*t15-t297; - local_mass_matrix(0,0) = -t4+t8-t11-t13+t16+t18; - local_mass_matrix(0,1) = t24; - local_mass_matrix(0,2) = t29; - local_mass_matrix(0,3) = t30; - local_mass_matrix(0,4) = t37; - local_mass_matrix(0,5) = t42; - local_mass_matrix(0,6) = t49; - local_mass_matrix(0,7) = t54; - local_mass_matrix(0,8) = t57; - local_mass_matrix(0,9) = t58; - local_mass_matrix(0,10) = t61; - local_mass_matrix(0,11) = t62; - local_mass_matrix(0,12) = t69; - local_mass_matrix(0,13) = t74; - local_mass_matrix(0,14) = t79; - local_mass_matrix(0,15) = t80; - local_mass_matrix(1,0) = t24; - local_mass_matrix(1,1) = -t81+t82-t11-t13+t16+t18; - local_mass_matrix(1,2) = t86; - local_mass_matrix(1,3) = t29; - local_mass_matrix(1,4) = t89; - local_mass_matrix(1,5) = t92; - local_mass_matrix(1,6) = t95; - local_mass_matrix(1,7) = t98; - local_mass_matrix(1,8) = t101; - local_mass_matrix(1,9) = t104; - local_mass_matrix(1,10) = t49; - local_mass_matrix(1,11) = t54; - local_mass_matrix(1,12) = t107; - local_mass_matrix(1,13) = t110; - local_mass_matrix(1,14) = t113; - local_mass_matrix(1,15) = t116; - local_mass_matrix(2,0) = t29; - local_mass_matrix(2,1) = t86; - local_mass_matrix(2,2) = -t81+t82-t117-t13+t118+t18; - local_mass_matrix(2,3) = t122; - local_mass_matrix(2,4) = t101; - local_mass_matrix(2,5) = t104; - local_mass_matrix(2,6) = t125; - local_mass_matrix(2,7) = t128; - local_mass_matrix(2,8) = t131; - local_mass_matrix(2,9) = t134; - local_mass_matrix(2,10) = t137; - local_mass_matrix(2,11) = t140; - local_mass_matrix(2,12) = t143; - local_mass_matrix(2,13) = t146; - local_mass_matrix(2,14) = t149; - local_mass_matrix(2,15) = t152; - local_mass_matrix(3,0) = t30; - local_mass_matrix(3,1) = t29; - local_mass_matrix(3,2) = t122; - local_mass_matrix(3,3) = -t4+t8-t117-t13+t118+t18; - local_mass_matrix(3,4) = t57; - local_mass_matrix(3,5) = t58; - local_mass_matrix(3,6) = t137; - local_mass_matrix(3,7) = t140; - local_mass_matrix(3,8) = t154; - local_mass_matrix(3,9) = t155; - local_mass_matrix(3,10) = t156; - local_mass_matrix(3,11) = t157; - local_mass_matrix(3,12) = t158; - local_mass_matrix(3,13) = t159; - local_mass_matrix(3,14) = t160; - local_mass_matrix(3,15) = t161; - local_mass_matrix(4,0) = t37; - local_mass_matrix(4,1) = t89; - local_mass_matrix(4,2) = t101; - local_mass_matrix(4,3) = t57; - local_mass_matrix(4,4) = -t162+t163-t164-t165+t166+t167; - local_mass_matrix(4,5) = t171; - local_mass_matrix(4,6) = t107; - local_mass_matrix(4,7) = t116; - local_mass_matrix(4,8) = t176; - local_mass_matrix(4,9) = t179; - local_mass_matrix(4,10) = t69; - local_mass_matrix(4,11) = t80; - local_mass_matrix(4,12) = t186; - local_mass_matrix(4,13) = t191; - local_mass_matrix(4,14) = t194; - local_mass_matrix(4,15) = t199; - local_mass_matrix(5,0) = t42; - local_mass_matrix(5,1) = t92; - local_mass_matrix(5,2) = t104; - local_mass_matrix(5,3) = t58; - local_mass_matrix(5,4) = t171; - local_mass_matrix(5,5) = -t200+t201-t164-t165+t166+t167; - local_mass_matrix(5,6) = t110; - local_mass_matrix(5,7) = t113; - local_mass_matrix(5,8) = t179; - local_mass_matrix(5,9) = t205; - local_mass_matrix(5,10) = t74; - local_mass_matrix(5,11) = t79; - local_mass_matrix(5,12) = t191; - local_mass_matrix(5,13) = t208; - local_mass_matrix(5,14) = t211; - local_mass_matrix(5,15) = t194; - local_mass_matrix(6,0) = t49; - local_mass_matrix(6,1) = t95; - local_mass_matrix(6,2) = t125; - local_mass_matrix(6,3) = t137; - local_mass_matrix(6,4) = t107; - local_mass_matrix(6,5) = t110; - local_mass_matrix(6,6) = -t212+t213-t214-t165+t215+t167; - local_mass_matrix(6,7) = t219; - local_mass_matrix(6,8) = t143; - local_mass_matrix(6,9) = t146; - local_mass_matrix(6,10) = t224; - local_mass_matrix(6,11) = t179; - local_mass_matrix(6,12) = t229; - local_mass_matrix(6,13) = t234; - local_mass_matrix(6,14) = t237; - local_mass_matrix(6,15) = t240; - local_mass_matrix(7,0) = t54; - local_mass_matrix(7,1) = t98; - local_mass_matrix(7,2) = t128; - local_mass_matrix(7,3) = t140; - local_mass_matrix(7,4) = t116; - local_mass_matrix(7,5) = t113; - local_mass_matrix(7,6) = t219; - local_mass_matrix(7,7) = -t212+t213-t241-t165+t242+t167; - local_mass_matrix(7,8) = t152; - local_mass_matrix(7,9) = t149; - local_mass_matrix(7,10) = t179; - local_mass_matrix(7,11) = t246; - local_mass_matrix(7,12) = t240; - local_mass_matrix(7,13) = t237; - local_mass_matrix(7,14) = t249; - local_mass_matrix(7,15) = t252; - local_mass_matrix(8,0) = t57; - local_mass_matrix(8,1) = t101; - local_mass_matrix(8,2) = t131; - local_mass_matrix(8,3) = t154; - local_mass_matrix(8,4) = t176; - local_mass_matrix(8,5) = t179; - local_mass_matrix(8,6) = t143; - local_mass_matrix(8,7) = t152; - local_mass_matrix(8,8) = -t162+t163-t253-t165+t254+t167; - local_mass_matrix(8,9) = t258; - local_mass_matrix(8,10) = t158; - local_mass_matrix(8,11) = t161; - local_mass_matrix(8,12) = t261; - local_mass_matrix(8,13) = t264; - local_mass_matrix(8,14) = t267; - local_mass_matrix(8,15) = t270; - local_mass_matrix(9,0) = t58; - local_mass_matrix(9,1) = t104; - local_mass_matrix(9,2) = t134; - local_mass_matrix(9,3) = t155; - local_mass_matrix(9,4) = t179; - local_mass_matrix(9,5) = t205; - local_mass_matrix(9,6) = t146; - local_mass_matrix(9,7) = t149; - local_mass_matrix(9,8) = t258; - local_mass_matrix(9,9) = -t200+t201-t253-t165+t254+t167; - local_mass_matrix(9,10) = t159; - local_mass_matrix(9,11) = t160; - local_mass_matrix(9,12) = t264; - local_mass_matrix(9,13) = t272; - local_mass_matrix(9,14) = t273; - local_mass_matrix(9,15) = t267; - local_mass_matrix(10,0) = t61; - local_mass_matrix(10,1) = t49; - local_mass_matrix(10,2) = t137; - local_mass_matrix(10,3) = t156; - local_mass_matrix(10,4) = t69; - local_mass_matrix(10,5) = t74; - local_mass_matrix(10,6) = t224; - local_mass_matrix(10,7) = t179; - local_mass_matrix(10,8) = t158; - local_mass_matrix(10,9) = t159; - local_mass_matrix(10,10) = -t220+t221-t214-t165+t215+t167; - local_mass_matrix(10,11) = t275; - local_mass_matrix(10,12) = t278; - local_mass_matrix(10,13) = t279; - local_mass_matrix(10,14) = t282; - local_mass_matrix(10,15) = t283; - local_mass_matrix(11,0) = t62; - local_mass_matrix(11,1) = t54; - local_mass_matrix(11,2) = t140; - local_mass_matrix(11,3) = t157; - local_mass_matrix(11,4) = t80; - local_mass_matrix(11,5) = t79; - local_mass_matrix(11,6) = t179; - local_mass_matrix(11,7) = t246; - local_mass_matrix(11,8) = t161; - local_mass_matrix(11,9) = t160; - local_mass_matrix(11,10) = t275; - local_mass_matrix(11,11) = -t220+t221-t241-t165+t242+t167; - local_mass_matrix(11,12) = t283; - local_mass_matrix(11,13) = t282; - local_mass_matrix(11,14) = t285; - local_mass_matrix(11,15) = t286; - local_mass_matrix(12,0) = t69; - local_mass_matrix(12,1) = t107; - local_mass_matrix(12,2) = t143; - local_mass_matrix(12,3) = t158; - local_mass_matrix(12,4) = t186; - local_mass_matrix(12,5) = t191; - local_mass_matrix(12,6) = t229; - local_mass_matrix(12,7) = t240; - local_mass_matrix(12,8) = t261; - local_mass_matrix(12,9) = t264; - local_mass_matrix(12,10) = t278; - local_mass_matrix(12,11) = t283; - local_mass_matrix(12,12) = -t287+t288-t289-t290+t291+t292; - local_mass_matrix(12,13) = t298; - local_mass_matrix(12,14) = t301; - local_mass_matrix(12,15) = t304; - local_mass_matrix(13,0) = t74; - local_mass_matrix(13,1) = t110; - local_mass_matrix(13,2) = t146; - local_mass_matrix(13,3) = t159; - local_mass_matrix(13,4) = t191; - local_mass_matrix(13,5) = t208; - local_mass_matrix(13,6) = t234; - local_mass_matrix(13,7) = t237; - local_mass_matrix(13,8) = t264; - local_mass_matrix(13,9) = t272; - local_mass_matrix(13,10) = t279; - local_mass_matrix(13,11) = t282; - local_mass_matrix(13,12) = t298; - local_mass_matrix(13,13) = -t305+t306-t289-t290+t291+t292; - local_mass_matrix(13,14) = t310; - local_mass_matrix(13,15) = t301; - local_mass_matrix(14,0) = t79; - local_mass_matrix(14,1) = t113; - local_mass_matrix(14,2) = t149; - local_mass_matrix(14,3) = t160; - local_mass_matrix(14,4) = t194; - local_mass_matrix(14,5) = t211; - local_mass_matrix(14,6) = t237; - local_mass_matrix(14,7) = t249; - local_mass_matrix(14,8) = t267; - local_mass_matrix(14,9) = t273; - local_mass_matrix(14,10) = t282; - local_mass_matrix(14,11) = t285; - local_mass_matrix(14,12) = t301; - local_mass_matrix(14,13) = t310; - local_mass_matrix(14,14) = -t305+t306-t311-t290+t312+t292; - local_mass_matrix(14,15) = t316; - local_mass_matrix(15,0) = t80; - local_mass_matrix(15,1) = t116; - local_mass_matrix(15,2) = t152; - local_mass_matrix(15,3) = t161; - local_mass_matrix(15,4) = t199; - local_mass_matrix(15,5) = t194; - local_mass_matrix(15,6) = t240; - local_mass_matrix(15,7) = t252; - local_mass_matrix(15,8) = t270; - local_mass_matrix(15,9) = t267; - local_mass_matrix(15,10) = t283; - local_mass_matrix(15,11) = t286; - local_mass_matrix(15,12) = t304; - local_mass_matrix(15,13) = t301; - local_mass_matrix(15,14) = t316; - local_mass_matrix(15,15) = -t287+t288-t311-t290+t312+t292; -}; - - -template <> -void FEQ3<2>::get_unit_support_points (std::vector > &unit_points) const { - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell)); - - unit_points[0] = Point<2>(0,0); - unit_points[1] = Point<2>(1,0); - unit_points[2] = Point<2>(1,1); - unit_points[3] = Point<2>(0,1); - unit_points[4] = Point<2>(1./3,0); - unit_points[5] = Point<2>(2./3,0); - unit_points[6] = Point<2>(1,1./3); - unit_points[7] = Point<2>(1,2./3); - unit_points[8] = Point<2>(1./3,1); - unit_points[9] = Point<2>(2./3,1); - unit_points[10]= Point<2>(0,1./3); - unit_points[11]= Point<2>(0,2./3); - unit_points[12]= Point<2>(1./3,1./3); - unit_points[13]= Point<2>(2./3,1./3); - unit_points[14]= Point<2>(2./3,2./3); - unit_points[15]= Point<2>(1./3,2./3); -}; - - -template <> -void FEQ3<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell, - std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), dofs_per_cell)); - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - const double t1 = 2.0/3.0*x[0]; - const double t2 = x[1]/3.0; - const double t4 = 2.0/3.0*y[0]; - const double t5 = y[1]/3.0; - const double t7 = x[0]/3.0; - const double t8 = 2.0/3.0*x[1]; - const double t10 = y[0]/3.0; - const double t11 = 2.0/3.0*y[1]; - const double t13 = x[2]/3.0; - const double t15 = y[2]/3.0; - const double t17 = 2.0/3.0*x[2]; - const double t19 = 2.0/3.0*y[2]; - const double t21 = 2.0/3.0*x[3]; - const double t23 = 2.0/3.0*y[3]; - const double t25 = x[3]/3.0; - const double t27 = y[3]/3.0; - const double t34 = 2.0/9.0*x[1]; - const double t36 = 2.0/9.0*x[3]; - const double t39 = 2.0/9.0*y[1]; - const double t41 = 2.0/9.0*y[3]; - const double t43 = 2.0/9.0*x[0]; - const double t45 = 2.0/9.0*x[2]; - const double t48 = 2.0/9.0*y[0]; - const double t50 = 2.0/9.0*y[2]; - support_points[0](0) = x[0]; - support_points[0](1) = y[0]; - support_points[1](0) = x[1]; - support_points[1](1) = y[1]; - support_points[2](0) = x[2]; - support_points[2](1) = y[2]; - support_points[3](0) = x[3]; - support_points[3](1) = y[3]; - support_points[4](0) = t1+t2; - support_points[4](1) = t4+t5; - support_points[5](0) = t7+t8; - support_points[5](1) = t10+t11; - support_points[6](0) = t8+t13; - support_points[6](1) = t11+t15; - support_points[7](0) = t2+t17; - support_points[7](1) = t5+t19; - support_points[8](0) = t13+t21; - support_points[8](1) = t15+t23; - support_points[9](0) = t17+t25; - support_points[9](1) = t19+t27; - support_points[10](0) = t1+t25; - support_points[10](1) = t4+t27; - support_points[11](0) = t7+t21; - support_points[11](1) = t10+t23; - support_points[12](0) = 4.0/9.0*x[0]+t34+x[2]/9.0+t36; - support_points[12](1) = 4.0/9.0*y[0]+t39+y[2]/9.0+t41; - support_points[13](0) = t43+4.0/9.0*x[1]+t45+x[3]/9.0; - support_points[13](1) = t48+4.0/9.0*y[1]+t50+y[3]/9.0; - support_points[14](0) = x[0]/9.0+t34+4.0/9.0*x[2]+t36; - support_points[14](1) = y[0]/9.0+t39+4.0/9.0*y[2]+t41; - support_points[15](0) = t43+x[1]/9.0+t45+4.0/9.0*x[3]; - support_points[15](1) = t48+y[1]/9.0+t50+4.0/9.0*y[3]; -}; - - -template <> -void FEQ3<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face, - std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_face, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), dofs_per_face)); - - for (unsigned int vertex=0; vertex<2; ++vertex) - support_points[vertex] = face->vertex(vertex); - support_points[2] = (2*support_points[0] + support_points[1]) / 3; - support_points[3] = (support_points[0] + 2*support_points[1]) / 3; -}; - - -#endif - - -#if deal_II_dimension == 3 - -// ignore the following, since it doesn't compile properly. it simply -// is too large. instead, in the `else' branch of the `if 0', we -// provide dummy implementations. - -#if 0 - -template <> -FEQ3<3>::FEQ3 () : - FEQ1Mapping<3> (1, 2, 4, 8, 1, - std::vector (1, false)) -{ - interface_constraints(0,0) = 1.0/256.0; - interface_constraints(0,1) = 1.0/256.0; - interface_constraints(0,2) = 1.0/256.0; - interface_constraints(0,3) = 1.0/256.0; - interface_constraints(0,4) = -9.0/256.0; - interface_constraints(0,5) = -9.0/256.0; - interface_constraints(0,6) = -9.0/256.0; - interface_constraints(0,7) = -9.0/256.0; - interface_constraints(0,8) = -9.0/256.0; - interface_constraints(0,9) = -9.0/256.0; - interface_constraints(0,10) = -9.0/256.0; - interface_constraints(0,11) = -9.0/256.0; - interface_constraints(0,12) = 81.0/256.0; - interface_constraints(0,13) = 81.0/256.0; - interface_constraints(0,14) = 81.0/256.0; - interface_constraints(0,15) = 81.0/256.0; - interface_constraints(1,0) = -1.0/16.0; - interface_constraints(1,1) = -1.0/16.0; - interface_constraints(1,4) = 9.0/16.0; - interface_constraints(1,5) = 9.0/16.0; - interface_constraints(2,1) = -1.0/16.0; - interface_constraints(2,2) = -1.0/16.0; - interface_constraints(2,6) = 9.0/16.0; - interface_constraints(2,7) = 9.0/16.0; - interface_constraints(3,2) = -1.0/16.0; - interface_constraints(3,3) = -1.0/16.0; - interface_constraints(3,8) = 9.0/16.0; - interface_constraints(3,9) = 9.0/16.0; - interface_constraints(4,0) = -1.0/16.0; - interface_constraints(4,3) = -1.0/16.0; - interface_constraints(4,10) = 9.0/16.0; - interface_constraints(4,11) = 9.0/16.0; - interface_constraints(5,0) = -5.0/256.0; - interface_constraints(5,1) = -5.0/256.0; - interface_constraints(5,2) = -1.0/256.0; - interface_constraints(5,3) = -1.0/256.0; - interface_constraints(5,4) = 45.0/256.0; - interface_constraints(5,5) = 45.0/256.0; - interface_constraints(5,6) = -15.0/256.0; - interface_constraints(5,7) = 5.0/256.0; - interface_constraints(5,8) = 9.0/256.0; - interface_constraints(5,9) = 9.0/256.0; - interface_constraints(5,10) = -15.0/256.0; - interface_constraints(5,11) = 5.0/256.0; - interface_constraints(5,12) = 135.0/256.0; - interface_constraints(5,13) = 135.0/256.0; - interface_constraints(5,14) = -45.0/256.0; - interface_constraints(5,15) = -45.0/256.0; - interface_constraints(6,6) = -1.0/16.0; - interface_constraints(6,10) = -1.0/16.0; - interface_constraints(6,12) = 9.0/16.0; - interface_constraints(6,13) = 9.0/16.0; - interface_constraints(7,5) = -1.0/16.0; - interface_constraints(7,9) = -1.0/16.0; - interface_constraints(7,13) = 9.0/16.0; - interface_constraints(7,15) = 9.0/16.0; - interface_constraints(8,0) = -1.0/256.0; - interface_constraints(8,1) = -5.0/256.0; - interface_constraints(8,2) = -5.0/256.0; - interface_constraints(8,3) = -1.0/256.0; - interface_constraints(8,4) = 5.0/256.0; - interface_constraints(8,5) = -15.0/256.0; - interface_constraints(8,6) = 45.0/256.0; - interface_constraints(8,7) = 45.0/256.0; - interface_constraints(8,8) = 5.0/256.0; - interface_constraints(8,9) = -15.0/256.0; - interface_constraints(8,10) = 9.0/256.0; - interface_constraints(8,11) = 9.0/256.0; - interface_constraints(8,12) = -45.0/256.0; - interface_constraints(8,13) = 135.0/256.0; - interface_constraints(8,14) = -45.0/256.0; - interface_constraints(8,15) = 135.0/256.0; - interface_constraints(9,7) = -1.0/16.0; - interface_constraints(9,11) = -1.0/16.0; - interface_constraints(9,14) = 9.0/16.0; - interface_constraints(9,15) = 9.0/16.0; - interface_constraints(10,0) = -1.0/256.0; - interface_constraints(10,1) = -1.0/256.0; - interface_constraints(10,2) = -5.0/256.0; - interface_constraints(10,3) = -5.0/256.0; - interface_constraints(10,4) = 9.0/256.0; - interface_constraints(10,5) = 9.0/256.0; - interface_constraints(10,6) = 5.0/256.0; - interface_constraints(10,7) = -15.0/256.0; - interface_constraints(10,8) = 45.0/256.0; - interface_constraints(10,9) = 45.0/256.0; - interface_constraints(10,10) = 5.0/256.0; - interface_constraints(10,11) = -15.0/256.0; - interface_constraints(10,12) = -45.0/256.0; - interface_constraints(10,13) = -45.0/256.0; - interface_constraints(10,14) = 135.0/256.0; - interface_constraints(10,15) = 135.0/256.0; - interface_constraints(11,0) = -5.0/256.0; - interface_constraints(11,1) = -1.0/256.0; - interface_constraints(11,2) = -1.0/256.0; - interface_constraints(11,3) = -5.0/256.0; - interface_constraints(11,4) = -15.0/256.0; - interface_constraints(11,5) = 5.0/256.0; - interface_constraints(11,6) = 9.0/256.0; - interface_constraints(11,7) = 9.0/256.0; - interface_constraints(11,8) = -15.0/256.0; - interface_constraints(11,9) = 5.0/256.0; - interface_constraints(11,10) = 45.0/256.0; - interface_constraints(11,11) = 45.0/256.0; - interface_constraints(11,12) = 135.0/256.0; - interface_constraints(11,13) = -45.0/256.0; - interface_constraints(11,14) = 135.0/256.0; - interface_constraints(11,15) = -45.0/256.0; - interface_constraints(12,4) = -1.0/16.0; - interface_constraints(12,8) = -1.0/16.0; - interface_constraints(12,12) = 9.0/16.0; - interface_constraints(12,14) = 9.0/16.0; - interface_constraints(13,0) = 5.0/16.0; - interface_constraints(13,1) = 1.0/16.0; - interface_constraints(13,4) = 15.0/16.0; - interface_constraints(13,5) = -5.0/16.0; - interface_constraints(14,4) = 1.0; - interface_constraints(15,5) = 1.0; - interface_constraints(16,0) = 1.0/16.0; - interface_constraints(16,1) = 5.0/16.0; - interface_constraints(16,4) = -5.0/16.0; - interface_constraints(16,5) = 15.0/16.0; - interface_constraints(17,1) = 5.0/16.0; - interface_constraints(17,2) = 1.0/16.0; - interface_constraints(17,6) = 15.0/16.0; - interface_constraints(17,7) = -5.0/16.0; - interface_constraints(18,6) = 1.0; - interface_constraints(19,7) = 1.0; - interface_constraints(20,1) = 1.0/16.0; - interface_constraints(20,2) = 5.0/16.0; - interface_constraints(20,6) = -5.0/16.0; - interface_constraints(20,7) = 15.0/16.0; - interface_constraints(21,2) = 1.0/16.0; - interface_constraints(21,3) = 5.0/16.0; - interface_constraints(21,8) = 15.0/16.0; - interface_constraints(21,9) = -5.0/16.0; - interface_constraints(22,8) = 1.0; - interface_constraints(23,9) = 1.0; - interface_constraints(24,2) = 5.0/16.0; - interface_constraints(24,3) = 1.0/16.0; - interface_constraints(24,8) = -5.0/16.0; - interface_constraints(24,9) = 15.0/16.0; - interface_constraints(25,0) = 5.0/16.0; - interface_constraints(25,3) = 1.0/16.0; - interface_constraints(25,10) = 15.0/16.0; - interface_constraints(25,11) = -5.0/16.0; - interface_constraints(26,10) = 1.0; - interface_constraints(27,11) = 1.0; - interface_constraints(28,0) = 1.0/16.0; - interface_constraints(28,3) = 5.0/16.0; - interface_constraints(28,10) = -5.0/16.0; - interface_constraints(28,11) = 15.0/16.0; - interface_constraints(29,0) = 25.0/256.0; - interface_constraints(29,1) = 5.0/256.0; - interface_constraints(29,2) = 1.0/256.0; - interface_constraints(29,3) = 5.0/256.0; - interface_constraints(29,4) = 75.0/256.0; - interface_constraints(29,5) = -25.0/256.0; - interface_constraints(29,6) = 15.0/256.0; - interface_constraints(29,7) = -5.0/256.0; - interface_constraints(29,8) = 15.0/256.0; - interface_constraints(29,9) = -5.0/256.0; - interface_constraints(29,10) = 75.0/256.0; - interface_constraints(29,11) = -25.0/256.0; - interface_constraints(29,12) = 225.0/256.0; - interface_constraints(29,13) = -75.0/256.0; - interface_constraints(29,14) = -75.0/256.0; - interface_constraints(29,15) = 25.0/256.0; - interface_constraints(30,4) = 5.0/16.0; - interface_constraints(30,8) = 1.0/16.0; - interface_constraints(30,12) = 15.0/16.0; - interface_constraints(30,14) = -5.0/16.0; - interface_constraints(31,6) = 1.0/16.0; - interface_constraints(31,10) = 5.0/16.0; - interface_constraints(31,12) = 15.0/16.0; - interface_constraints(31,13) = -5.0/16.0; - interface_constraints(32,12) = 1.0; - interface_constraints(33,5) = 5.0/16.0; - interface_constraints(33,9) = 1.0/16.0; - interface_constraints(33,13) = 15.0/16.0; - interface_constraints(33,15) = -5.0/16.0; - interface_constraints(34,0) = 5.0/256.0; - interface_constraints(34,1) = 25.0/256.0; - interface_constraints(34,2) = 5.0/256.0; - interface_constraints(34,3) = 1.0/256.0; - interface_constraints(34,4) = -25.0/256.0; - interface_constraints(34,5) = 75.0/256.0; - interface_constraints(34,6) = 75.0/256.0; - interface_constraints(34,7) = -25.0/256.0; - interface_constraints(34,8) = -5.0/256.0; - interface_constraints(34,9) = 15.0/256.0; - interface_constraints(34,10) = 15.0/256.0; - interface_constraints(34,11) = -5.0/256.0; - interface_constraints(34,12) = -75.0/256.0; - interface_constraints(34,13) = 225.0/256.0; - interface_constraints(34,14) = 25.0/256.0; - interface_constraints(34,15) = -75.0/256.0; - interface_constraints(35,13) = 1.0; - interface_constraints(36,6) = 5.0/16.0; - interface_constraints(36,10) = 1.0/16.0; - interface_constraints(36,12) = -5.0/16.0; - interface_constraints(36,13) = 15.0/16.0; - interface_constraints(37,15) = 1.0; - interface_constraints(38,7) = 5.0/16.0; - interface_constraints(38,11) = 1.0/16.0; - interface_constraints(38,14) = -5.0/16.0; - interface_constraints(38,15) = 15.0/16.0; - interface_constraints(39,5) = 1.0/16.0; - interface_constraints(39,9) = 5.0/16.0; - interface_constraints(39,13) = -5.0/16.0; - interface_constraints(39,15) = 15.0/16.0; - interface_constraints(40,0) = 1.0/256.0; - interface_constraints(40,1) = 5.0/256.0; - interface_constraints(40,2) = 25.0/256.0; - interface_constraints(40,3) = 5.0/256.0; - interface_constraints(40,4) = -5.0/256.0; - interface_constraints(40,5) = 15.0/256.0; - interface_constraints(40,6) = -25.0/256.0; - interface_constraints(40,7) = 75.0/256.0; - interface_constraints(40,8) = -25.0/256.0; - interface_constraints(40,9) = 75.0/256.0; - interface_constraints(40,10) = -5.0/256.0; - interface_constraints(40,11) = 15.0/256.0; - interface_constraints(40,12) = 25.0/256.0; - interface_constraints(40,13) = -75.0/256.0; - interface_constraints(40,14) = -75.0/256.0; - interface_constraints(40,15) = 225.0/256.0; - interface_constraints(41,7) = 1.0/16.0; - interface_constraints(41,11) = 5.0/16.0; - interface_constraints(41,14) = 15.0/16.0; - interface_constraints(41,15) = -5.0/16.0; - interface_constraints(42,14) = 1.0; - interface_constraints(43,0) = 5.0/256.0; - interface_constraints(43,1) = 1.0/256.0; - interface_constraints(43,2) = 5.0/256.0; - interface_constraints(43,3) = 25.0/256.0; - interface_constraints(43,4) = 15.0/256.0; - interface_constraints(43,5) = -5.0/256.0; - interface_constraints(43,6) = -5.0/256.0; - interface_constraints(43,7) = 15.0/256.0; - interface_constraints(43,8) = 75.0/256.0; - interface_constraints(43,9) = -25.0/256.0; - interface_constraints(43,10) = -25.0/256.0; - interface_constraints(43,11) = 75.0/256.0; - interface_constraints(43,12) = -75.0/256.0; - interface_constraints(43,13) = 25.0/256.0; - interface_constraints(43,14) = 225.0/256.0; - interface_constraints(43,15) = -75.0/256.0; - interface_constraints(44,4) = 1.0/16.0; - interface_constraints(44,8) = 5.0/16.0; - interface_constraints(44,12) = -5.0/16.0; - interface_constraints(44,14) = 15.0/16.0; - - initialize_matrices (); -}; - - -template <> -FEQ3<3>::FEQ3 (const int) : - FEQ1Mapping<3> (0, 0, 0, 64, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ3<3>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = -1.0/16.0; - prolongation[0](1,1) = -1.0/16.0; - prolongation[0](1,8) = 9.0/16.0; - prolongation[0](1,9) = 9.0/16.0; - prolongation[0](2,0) = 1.0/256.0; - prolongation[0](2,1) = 1.0/256.0; - prolongation[0](2,2) = 1.0/256.0; - prolongation[0](2,3) = 1.0/256.0; - prolongation[0](2,8) = -9.0/256.0; - prolongation[0](2,9) = -9.0/256.0; - prolongation[0](2,10) = -9.0/256.0; - prolongation[0](2,11) = -9.0/256.0; - prolongation[0](2,12) = -9.0/256.0; - prolongation[0](2,13) = -9.0/256.0; - prolongation[0](2,14) = -9.0/256.0; - prolongation[0](2,15) = -9.0/256.0; - prolongation[0](2,32) = 81.0/256.0; - prolongation[0](2,33) = 81.0/256.0; - prolongation[0](2,34) = 81.0/256.0; - prolongation[0](2,35) = 81.0/256.0; - prolongation[0](3,0) = -1.0/16.0; - prolongation[0](3,3) = -1.0/16.0; - prolongation[0](3,14) = 9.0/16.0; - prolongation[0](3,15) = 9.0/16.0; - prolongation[0](4,0) = -1.0/16.0; - prolongation[0](4,4) = -1.0/16.0; - prolongation[0](4,24) = 9.0/16.0; - prolongation[0](4,25) = 9.0/16.0; - prolongation[0](5,0) = 1.0/256.0; - prolongation[0](5,1) = 1.0/256.0; - prolongation[0](5,4) = 1.0/256.0; - prolongation[0](5,5) = 1.0/256.0; - prolongation[0](5,8) = -9.0/256.0; - prolongation[0](5,9) = -9.0/256.0; - prolongation[0](5,16) = -9.0/256.0; - prolongation[0](5,17) = -9.0/256.0; - prolongation[0](5,24) = -9.0/256.0; - prolongation[0](5,25) = -9.0/256.0; - prolongation[0](5,26) = -9.0/256.0; - prolongation[0](5,27) = -9.0/256.0; - prolongation[0](5,40) = 81.0/256.0; - prolongation[0](5,41) = 81.0/256.0; - prolongation[0](5,42) = 81.0/256.0; - prolongation[0](5,43) = 81.0/256.0; - prolongation[0](6,0) = -1.0/4096.0; - prolongation[0](6,1) = -1.0/4096.0; - prolongation[0](6,2) = -1.0/4096.0; - prolongation[0](6,3) = -1.0/4096.0; - prolongation[0](6,4) = -1.0/4096.0; - prolongation[0](6,5) = -1.0/4096.0; - prolongation[0](6,6) = -1.0/4096.0; - prolongation[0](6,7) = -1.0/4096.0; - prolongation[0](6,8) = 9.0/4096.0; - prolongation[0](6,9) = 9.0/4096.0; - prolongation[0](6,10) = 9.0/4096.0; - prolongation[0](6,11) = 9.0/4096.0; - prolongation[0](6,12) = 9.0/4096.0; - prolongation[0](6,13) = 9.0/4096.0; - prolongation[0](6,14) = 9.0/4096.0; - prolongation[0](6,15) = 9.0/4096.0; - prolongation[0](6,16) = 9.0/4096.0; - prolongation[0](6,17) = 9.0/4096.0; - prolongation[0](6,18) = 9.0/4096.0; - prolongation[0](6,19) = 9.0/4096.0; - prolongation[0](6,20) = 9.0/4096.0; - prolongation[0](6,21) = 9.0/4096.0; - prolongation[0](6,22) = 9.0/4096.0; - prolongation[0](6,23) = 9.0/4096.0; - prolongation[0](6,24) = 9.0/4096.0; - prolongation[0](6,25) = 9.0/4096.0; - prolongation[0](6,26) = 9.0/4096.0; - prolongation[0](6,27) = 9.0/4096.0; - prolongation[0](6,28) = 9.0/4096.0; - prolongation[0](6,29) = 9.0/4096.0; - prolongation[0](6,30) = 9.0/4096.0; - prolongation[0](6,31) = 9.0/4096.0; - prolongation[0](6,32) = -81.0/4096.0; - prolongation[0](6,33) = -81.0/4096.0; - prolongation[0](6,34) = -81.0/4096.0; - prolongation[0](6,35) = -81.0/4096.0; - prolongation[0](6,36) = -81.0/4096.0; - prolongation[0](6,37) = -81.0/4096.0; - prolongation[0](6,38) = -81.0/4096.0; - prolongation[0](6,39) = -81.0/4096.0; - prolongation[0](6,40) = -81.0/4096.0; - prolongation[0](6,41) = -81.0/4096.0; - prolongation[0](6,42) = -81.0/4096.0; - prolongation[0](6,43) = -81.0/4096.0; - prolongation[0](6,44) = -81.0/4096.0; - prolongation[0](6,45) = -81.0/4096.0; - prolongation[0](6,46) = -81.0/4096.0; - prolongation[0](6,47) = -81.0/4096.0; - prolongation[0](6,48) = -81.0/4096.0; - prolongation[0](6,49) = -81.0/4096.0; - prolongation[0](6,50) = -81.0/4096.0; - prolongation[0](6,51) = -81.0/4096.0; - prolongation[0](6,52) = -81.0/4096.0; - prolongation[0](6,53) = -81.0/4096.0; - prolongation[0](6,54) = -81.0/4096.0; - prolongation[0](6,55) = -81.0/4096.0; - prolongation[0](6,56) = 729.0/4096.0; - prolongation[0](6,57) = 729.0/4096.0; - prolongation[0](6,58) = 729.0/4096.0; - prolongation[0](6,59) = 729.0/4096.0; - prolongation[0](6,60) = 729.0/4096.0; - prolongation[0](6,61) = 729.0/4096.0; - prolongation[0](6,62) = 729.0/4096.0; - prolongation[0](6,63) = 729.0/4096.0; - prolongation[0](7,0) = 1.0/256.0; - prolongation[0](7,3) = 1.0/256.0; - prolongation[0](7,4) = 1.0/256.0; - prolongation[0](7,7) = 1.0/256.0; - prolongation[0](7,14) = -9.0/256.0; - prolongation[0](7,15) = -9.0/256.0; - prolongation[0](7,22) = -9.0/256.0; - prolongation[0](7,23) = -9.0/256.0; - prolongation[0](7,24) = -9.0/256.0; - prolongation[0](7,25) = -9.0/256.0; - prolongation[0](7,30) = -9.0/256.0; - prolongation[0](7,31) = -9.0/256.0; - prolongation[0](7,52) = 81.0/256.0; - prolongation[0](7,53) = 81.0/256.0; - prolongation[0](7,54) = 81.0/256.0; - prolongation[0](7,55) = 81.0/256.0; - prolongation[0](8,0) = 5.0/16.0; - prolongation[0](8,1) = 1.0/16.0; - prolongation[0](8,8) = 15.0/16.0; - prolongation[0](8,9) = -5.0/16.0; - prolongation[0](9,8) = 1.0; - prolongation[0](10,0) = -5.0/256.0; - prolongation[0](10,1) = -5.0/256.0; - prolongation[0](10,2) = -1.0/256.0; - prolongation[0](10,3) = -1.0/256.0; - prolongation[0](10,8) = 45.0/256.0; - prolongation[0](10,9) = 45.0/256.0; - prolongation[0](10,10) = -15.0/256.0; - prolongation[0](10,11) = 5.0/256.0; - prolongation[0](10,12) = 9.0/256.0; - prolongation[0](10,13) = 9.0/256.0; - prolongation[0](10,14) = -15.0/256.0; - prolongation[0](10,15) = 5.0/256.0; - prolongation[0](10,32) = 135.0/256.0; - prolongation[0](10,33) = 135.0/256.0; - prolongation[0](10,34) = -45.0/256.0; - prolongation[0](10,35) = -45.0/256.0; - prolongation[0](11,10) = -1.0/16.0; - prolongation[0](11,14) = -1.0/16.0; - prolongation[0](11,32) = 9.0/16.0; - prolongation[0](11,33) = 9.0/16.0; - prolongation[0](12,0) = -5.0/256.0; - prolongation[0](12,1) = -1.0/256.0; - prolongation[0](12,2) = -1.0/256.0; - prolongation[0](12,3) = -5.0/256.0; - prolongation[0](12,8) = -15.0/256.0; - prolongation[0](12,9) = 5.0/256.0; - prolongation[0](12,10) = 9.0/256.0; - prolongation[0](12,11) = 9.0/256.0; - prolongation[0](12,12) = -15.0/256.0; - prolongation[0](12,13) = 5.0/256.0; - prolongation[0](12,14) = 45.0/256.0; - prolongation[0](12,15) = 45.0/256.0; - prolongation[0](12,32) = 135.0/256.0; - prolongation[0](12,33) = -45.0/256.0; - prolongation[0](12,34) = 135.0/256.0; - prolongation[0](12,35) = -45.0/256.0; - prolongation[0](13,8) = -1.0/16.0; - prolongation[0](13,12) = -1.0/16.0; - prolongation[0](13,32) = 9.0/16.0; - prolongation[0](13,34) = 9.0/16.0; - prolongation[0](14,0) = 5.0/16.0; - prolongation[0](14,3) = 1.0/16.0; - prolongation[0](14,14) = 15.0/16.0; - prolongation[0](14,15) = -5.0/16.0; - prolongation[0](15,14) = 1.0; - prolongation[0](16,0) = -5.0/256.0; - prolongation[0](16,1) = -1.0/256.0; - prolongation[0](16,4) = -5.0/256.0; - prolongation[0](16,5) = -1.0/256.0; - prolongation[0](16,8) = -15.0/256.0; - prolongation[0](16,9) = 5.0/256.0; - prolongation[0](16,16) = -15.0/256.0; - prolongation[0](16,17) = 5.0/256.0; - prolongation[0](16,24) = 45.0/256.0; - prolongation[0](16,25) = 45.0/256.0; - prolongation[0](16,26) = 9.0/256.0; - prolongation[0](16,27) = 9.0/256.0; - prolongation[0](16,40) = 135.0/256.0; - prolongation[0](16,41) = -45.0/256.0; - prolongation[0](16,42) = 135.0/256.0; - prolongation[0](16,43) = -45.0/256.0; - prolongation[0](17,8) = -1.0/16.0; - prolongation[0](17,16) = -1.0/16.0; - prolongation[0](17,40) = 9.0/16.0; - prolongation[0](17,42) = 9.0/16.0; - prolongation[0](18,0) = 5.0/4096.0; - prolongation[0](18,1) = 5.0/4096.0; - prolongation[0](18,2) = 1.0/4096.0; - prolongation[0](18,3) = 1.0/4096.0; - prolongation[0](18,4) = 5.0/4096.0; - prolongation[0](18,5) = 5.0/4096.0; - prolongation[0](18,6) = 1.0/4096.0; - prolongation[0](18,7) = 1.0/4096.0; - prolongation[0](18,8) = -45.0/4096.0; - prolongation[0](18,9) = -45.0/4096.0; - prolongation[0](18,10) = 15.0/4096.0; - prolongation[0](18,11) = -5.0/4096.0; - prolongation[0](18,12) = -9.0/4096.0; - prolongation[0](18,13) = -9.0/4096.0; - prolongation[0](18,14) = 15.0/4096.0; - prolongation[0](18,15) = -5.0/4096.0; - prolongation[0](18,16) = -45.0/4096.0; - prolongation[0](18,17) = -45.0/4096.0; - prolongation[0](18,18) = 15.0/4096.0; - prolongation[0](18,19) = -5.0/4096.0; - prolongation[0](18,20) = -9.0/4096.0; - prolongation[0](18,21) = -9.0/4096.0; - prolongation[0](18,22) = 15.0/4096.0; - prolongation[0](18,23) = -5.0/4096.0; - prolongation[0](18,24) = -45.0/4096.0; - prolongation[0](18,25) = -45.0/4096.0; - prolongation[0](18,26) = -45.0/4096.0; - prolongation[0](18,27) = -45.0/4096.0; - prolongation[0](18,28) = -9.0/4096.0; - prolongation[0](18,29) = -9.0/4096.0; - prolongation[0](18,30) = -9.0/4096.0; - prolongation[0](18,31) = -9.0/4096.0; - prolongation[0](18,32) = -135.0/4096.0; - prolongation[0](18,33) = -135.0/4096.0; - prolongation[0](18,34) = 45.0/4096.0; - prolongation[0](18,35) = 45.0/4096.0; - prolongation[0](18,36) = -135.0/4096.0; - prolongation[0](18,37) = -135.0/4096.0; - prolongation[0](18,38) = 45.0/4096.0; - prolongation[0](18,39) = 45.0/4096.0; - prolongation[0](18,40) = 405.0/4096.0; - prolongation[0](18,41) = 405.0/4096.0; - prolongation[0](18,42) = 405.0/4096.0; - prolongation[0](18,43) = 405.0/4096.0; - prolongation[0](18,44) = -135.0/4096.0; - prolongation[0](18,45) = -135.0/4096.0; - prolongation[0](18,46) = 45.0/4096.0; - prolongation[0](18,47) = 45.0/4096.0; - prolongation[0](18,48) = 81.0/4096.0; - prolongation[0](18,49) = 81.0/4096.0; - prolongation[0](18,50) = 81.0/4096.0; - prolongation[0](18,51) = 81.0/4096.0; - prolongation[0](18,52) = -135.0/4096.0; - prolongation[0](18,53) = -135.0/4096.0; - prolongation[0](18,54) = 45.0/4096.0; - prolongation[0](18,55) = 45.0/4096.0; - prolongation[0](18,56) = 1215.0/4096.0; - prolongation[0](18,57) = 1215.0/4096.0; - prolongation[0](18,58) = 1215.0/4096.0; - prolongation[0](18,59) = 1215.0/4096.0; - prolongation[0](18,60) = -405.0/4096.0; - prolongation[0](18,61) = -405.0/4096.0; - prolongation[0](18,62) = -405.0/4096.0; - prolongation[0](18,63) = -405.0/4096.0; - prolongation[0](19,10) = 1.0/256.0; - prolongation[0](19,14) = 1.0/256.0; - prolongation[0](19,18) = 1.0/256.0; - prolongation[0](19,22) = 1.0/256.0; - prolongation[0](19,32) = -9.0/256.0; - prolongation[0](19,33) = -9.0/256.0; - prolongation[0](19,36) = -9.0/256.0; - prolongation[0](19,37) = -9.0/256.0; - prolongation[0](19,44) = -9.0/256.0; - prolongation[0](19,45) = -9.0/256.0; - prolongation[0](19,52) = -9.0/256.0; - prolongation[0](19,53) = -9.0/256.0; - prolongation[0](19,56) = 81.0/256.0; - prolongation[0](19,57) = 81.0/256.0; - prolongation[0](19,58) = 81.0/256.0; - prolongation[0](19,59) = 81.0/256.0; - prolongation[0](20,0) = 5.0/4096.0; - prolongation[0](20,1) = 1.0/4096.0; - prolongation[0](20,2) = 1.0/4096.0; - prolongation[0](20,3) = 5.0/4096.0; - prolongation[0](20,4) = 5.0/4096.0; - prolongation[0](20,5) = 1.0/4096.0; - prolongation[0](20,6) = 1.0/4096.0; - prolongation[0](20,7) = 5.0/4096.0; - prolongation[0](20,8) = 15.0/4096.0; - prolongation[0](20,9) = -5.0/4096.0; - prolongation[0](20,10) = -9.0/4096.0; - prolongation[0](20,11) = -9.0/4096.0; - prolongation[0](20,12) = 15.0/4096.0; - prolongation[0](20,13) = -5.0/4096.0; - prolongation[0](20,14) = -45.0/4096.0; - prolongation[0](20,15) = -45.0/4096.0; - prolongation[0](20,16) = 15.0/4096.0; - prolongation[0](20,17) = -5.0/4096.0; - prolongation[0](20,18) = -9.0/4096.0; - prolongation[0](20,19) = -9.0/4096.0; - prolongation[0](20,20) = 15.0/4096.0; - prolongation[0](20,21) = -5.0/4096.0; - prolongation[0](20,22) = -45.0/4096.0; - prolongation[0](20,23) = -45.0/4096.0; - prolongation[0](20,24) = -45.0/4096.0; - prolongation[0](20,25) = -45.0/4096.0; - prolongation[0](20,26) = -9.0/4096.0; - prolongation[0](20,27) = -9.0/4096.0; - prolongation[0](20,28) = -9.0/4096.0; - prolongation[0](20,29) = -9.0/4096.0; - prolongation[0](20,30) = -45.0/4096.0; - prolongation[0](20,31) = -45.0/4096.0; - prolongation[0](20,32) = -135.0/4096.0; - prolongation[0](20,33) = 45.0/4096.0; - prolongation[0](20,34) = -135.0/4096.0; - prolongation[0](20,35) = 45.0/4096.0; - prolongation[0](20,36) = -135.0/4096.0; - prolongation[0](20,37) = 45.0/4096.0; - prolongation[0](20,38) = -135.0/4096.0; - prolongation[0](20,39) = 45.0/4096.0; - prolongation[0](20,40) = -135.0/4096.0; - prolongation[0](20,41) = 45.0/4096.0; - prolongation[0](20,42) = -135.0/4096.0; - prolongation[0](20,43) = 45.0/4096.0; - prolongation[0](20,44) = 81.0/4096.0; - prolongation[0](20,45) = 81.0/4096.0; - prolongation[0](20,46) = 81.0/4096.0; - prolongation[0](20,47) = 81.0/4096.0; - prolongation[0](20,48) = -135.0/4096.0; - prolongation[0](20,49) = 45.0/4096.0; - prolongation[0](20,50) = -135.0/4096.0; - prolongation[0](20,51) = 45.0/4096.0; - prolongation[0](20,52) = 405.0/4096.0; - prolongation[0](20,53) = 405.0/4096.0; - prolongation[0](20,54) = 405.0/4096.0; - prolongation[0](20,55) = 405.0/4096.0; - prolongation[0](20,56) = 1215.0/4096.0; - prolongation[0](20,57) = -405.0/4096.0; - prolongation[0](20,58) = 1215.0/4096.0; - prolongation[0](20,59) = -405.0/4096.0; - prolongation[0](20,60) = 1215.0/4096.0; - prolongation[0](20,61) = -405.0/4096.0; - prolongation[0](20,62) = 1215.0/4096.0; - prolongation[0](20,63) = -405.0/4096.0; - prolongation[0](21,8) = 1.0/256.0; - prolongation[0](21,12) = 1.0/256.0; - prolongation[0](21,16) = 1.0/256.0; - prolongation[0](21,20) = 1.0/256.0; - prolongation[0](21,32) = -9.0/256.0; - prolongation[0](21,34) = -9.0/256.0; - prolongation[0](21,36) = -9.0/256.0; - prolongation[0](21,38) = -9.0/256.0; - prolongation[0](21,40) = -9.0/256.0; - prolongation[0](21,42) = -9.0/256.0; - prolongation[0](21,48) = -9.0/256.0; - prolongation[0](21,50) = -9.0/256.0; - prolongation[0](21,56) = 81.0/256.0; - prolongation[0](21,58) = 81.0/256.0; - prolongation[0](21,60) = 81.0/256.0; - prolongation[0](21,62) = 81.0/256.0; - prolongation[0](22,0) = -5.0/256.0; - prolongation[0](22,3) = -1.0/256.0; - prolongation[0](22,4) = -5.0/256.0; - prolongation[0](22,7) = -1.0/256.0; - prolongation[0](22,14) = -15.0/256.0; - prolongation[0](22,15) = 5.0/256.0; - prolongation[0](22,22) = -15.0/256.0; - prolongation[0](22,23) = 5.0/256.0; - prolongation[0](22,24) = 45.0/256.0; - prolongation[0](22,25) = 45.0/256.0; - prolongation[0](22,30) = 9.0/256.0; - prolongation[0](22,31) = 9.0/256.0; - prolongation[0](22,52) = 135.0/256.0; - prolongation[0](22,53) = 135.0/256.0; - prolongation[0](22,54) = -45.0/256.0; - prolongation[0](22,55) = -45.0/256.0; - prolongation[0](23,14) = -1.0/16.0; - prolongation[0](23,22) = -1.0/16.0; - prolongation[0](23,52) = 9.0/16.0; - prolongation[0](23,53) = 9.0/16.0; - prolongation[0](24,0) = 5.0/16.0; - prolongation[0](24,4) = 1.0/16.0; - prolongation[0](24,24) = 15.0/16.0; - prolongation[0](24,25) = -5.0/16.0; - prolongation[0](25,24) = 1.0; - prolongation[0](26,0) = -5.0/256.0; - prolongation[0](26,1) = -5.0/256.0; - prolongation[0](26,4) = -1.0/256.0; - prolongation[0](26,5) = -1.0/256.0; - prolongation[0](26,8) = 45.0/256.0; - prolongation[0](26,9) = 45.0/256.0; - prolongation[0](26,16) = 9.0/256.0; - prolongation[0](26,17) = 9.0/256.0; - prolongation[0](26,24) = -15.0/256.0; - prolongation[0](26,25) = 5.0/256.0; - prolongation[0](26,26) = -15.0/256.0; - prolongation[0](26,27) = 5.0/256.0; - prolongation[0](26,40) = 135.0/256.0; - prolongation[0](26,41) = 135.0/256.0; - prolongation[0](26,42) = -45.0/256.0; - prolongation[0](26,43) = -45.0/256.0; - prolongation[0](27,24) = -1.0/16.0; - prolongation[0](27,26) = -1.0/16.0; - prolongation[0](27,40) = 9.0/16.0; - prolongation[0](27,41) = 9.0/16.0; - prolongation[0](28,0) = 5.0/4096.0; - prolongation[0](28,1) = 5.0/4096.0; - prolongation[0](28,2) = 5.0/4096.0; - prolongation[0](28,3) = 5.0/4096.0; - prolongation[0](28,4) = 1.0/4096.0; - prolongation[0](28,5) = 1.0/4096.0; - prolongation[0](28,6) = 1.0/4096.0; - prolongation[0](28,7) = 1.0/4096.0; - prolongation[0](28,8) = -45.0/4096.0; - prolongation[0](28,9) = -45.0/4096.0; - prolongation[0](28,10) = -45.0/4096.0; - prolongation[0](28,11) = -45.0/4096.0; - prolongation[0](28,12) = -45.0/4096.0; - prolongation[0](28,13) = -45.0/4096.0; - prolongation[0](28,14) = -45.0/4096.0; - prolongation[0](28,15) = -45.0/4096.0; - prolongation[0](28,16) = -9.0/4096.0; - prolongation[0](28,17) = -9.0/4096.0; - prolongation[0](28,18) = -9.0/4096.0; - prolongation[0](28,19) = -9.0/4096.0; - prolongation[0](28,20) = -9.0/4096.0; - prolongation[0](28,21) = -9.0/4096.0; - prolongation[0](28,22) = -9.0/4096.0; - prolongation[0](28,23) = -9.0/4096.0; - prolongation[0](28,24) = 15.0/4096.0; - prolongation[0](28,25) = -5.0/4096.0; - prolongation[0](28,26) = 15.0/4096.0; - prolongation[0](28,27) = -5.0/4096.0; - prolongation[0](28,28) = 15.0/4096.0; - prolongation[0](28,29) = -5.0/4096.0; - prolongation[0](28,30) = 15.0/4096.0; - prolongation[0](28,31) = -5.0/4096.0; - prolongation[0](28,32) = 405.0/4096.0; - prolongation[0](28,33) = 405.0/4096.0; - prolongation[0](28,34) = 405.0/4096.0; - prolongation[0](28,35) = 405.0/4096.0; - prolongation[0](28,36) = 81.0/4096.0; - prolongation[0](28,37) = 81.0/4096.0; - prolongation[0](28,38) = 81.0/4096.0; - prolongation[0](28,39) = 81.0/4096.0; - prolongation[0](28,40) = -135.0/4096.0; - prolongation[0](28,41) = -135.0/4096.0; - prolongation[0](28,42) = 45.0/4096.0; - prolongation[0](28,43) = 45.0/4096.0; - prolongation[0](28,44) = -135.0/4096.0; - prolongation[0](28,45) = 45.0/4096.0; - prolongation[0](28,46) = -135.0/4096.0; - prolongation[0](28,47) = 45.0/4096.0; - prolongation[0](28,48) = -135.0/4096.0; - prolongation[0](28,49) = -135.0/4096.0; - prolongation[0](28,50) = 45.0/4096.0; - prolongation[0](28,51) = 45.0/4096.0; - prolongation[0](28,52) = -135.0/4096.0; - prolongation[0](28,53) = 45.0/4096.0; - prolongation[0](28,54) = -135.0/4096.0; - prolongation[0](28,55) = 45.0/4096.0; - prolongation[0](28,56) = 1215.0/4096.0; - prolongation[0](28,57) = 1215.0/4096.0; - prolongation[0](28,58) = -405.0/4096.0; - prolongation[0](28,59) = -405.0/4096.0; - prolongation[0](28,60) = 1215.0/4096.0; - prolongation[0](28,61) = 1215.0/4096.0; - prolongation[0](28,62) = -405.0/4096.0; - prolongation[0](28,63) = -405.0/4096.0; - prolongation[0](29,24) = 1.0/256.0; - prolongation[0](29,26) = 1.0/256.0; - prolongation[0](29,28) = 1.0/256.0; - prolongation[0](29,30) = 1.0/256.0; - prolongation[0](29,40) = -9.0/256.0; - prolongation[0](29,41) = -9.0/256.0; - prolongation[0](29,44) = -9.0/256.0; - prolongation[0](29,46) = -9.0/256.0; - prolongation[0](29,48) = -9.0/256.0; - prolongation[0](29,49) = -9.0/256.0; - prolongation[0](29,52) = -9.0/256.0; - prolongation[0](29,54) = -9.0/256.0; - prolongation[0](29,56) = 81.0/256.0; - prolongation[0](29,57) = 81.0/256.0; - prolongation[0](29,60) = 81.0/256.0; - prolongation[0](29,61) = 81.0/256.0; - prolongation[0](30,0) = -5.0/256.0; - prolongation[0](30,3) = -5.0/256.0; - prolongation[0](30,4) = -1.0/256.0; - prolongation[0](30,7) = -1.0/256.0; - prolongation[0](30,14) = 45.0/256.0; - prolongation[0](30,15) = 45.0/256.0; - prolongation[0](30,22) = 9.0/256.0; - prolongation[0](30,23) = 9.0/256.0; - prolongation[0](30,24) = -15.0/256.0; - prolongation[0](30,25) = 5.0/256.0; - prolongation[0](30,30) = -15.0/256.0; - prolongation[0](30,31) = 5.0/256.0; - prolongation[0](30,52) = 135.0/256.0; - prolongation[0](30,53) = -45.0/256.0; - prolongation[0](30,54) = 135.0/256.0; - prolongation[0](30,55) = -45.0/256.0; - prolongation[0](31,24) = -1.0/16.0; - prolongation[0](31,30) = -1.0/16.0; - prolongation[0](31,52) = 9.0/16.0; - prolongation[0](31,54) = 9.0/16.0; - prolongation[0](32,0) = 25.0/256.0; - prolongation[0](32,1) = 5.0/256.0; - prolongation[0](32,2) = 1.0/256.0; - prolongation[0](32,3) = 5.0/256.0; - prolongation[0](32,8) = 75.0/256.0; - prolongation[0](32,9) = -25.0/256.0; - prolongation[0](32,10) = 15.0/256.0; - prolongation[0](32,11) = -5.0/256.0; - prolongation[0](32,12) = 15.0/256.0; - prolongation[0](32,13) = -5.0/256.0; - prolongation[0](32,14) = 75.0/256.0; - prolongation[0](32,15) = -25.0/256.0; - prolongation[0](32,32) = 225.0/256.0; - prolongation[0](32,33) = -75.0/256.0; - prolongation[0](32,34) = -75.0/256.0; - prolongation[0](32,35) = 25.0/256.0; - prolongation[0](33,8) = 5.0/16.0; - prolongation[0](33,12) = 1.0/16.0; - prolongation[0](33,32) = 15.0/16.0; - prolongation[0](33,34) = -5.0/16.0; - prolongation[0](34,10) = 1.0/16.0; - prolongation[0](34,14) = 5.0/16.0; - prolongation[0](34,32) = 15.0/16.0; - prolongation[0](34,33) = -5.0/16.0; - prolongation[0](35,32) = 1.0; - prolongation[0](36,0) = -25.0/4096.0; - prolongation[0](36,1) = -5.0/4096.0; - prolongation[0](36,2) = -1.0/4096.0; - prolongation[0](36,3) = -5.0/4096.0; - prolongation[0](36,4) = -25.0/4096.0; - prolongation[0](36,5) = -5.0/4096.0; - prolongation[0](36,6) = -1.0/4096.0; - prolongation[0](36,7) = -5.0/4096.0; - prolongation[0](36,8) = -75.0/4096.0; - prolongation[0](36,9) = 25.0/4096.0; - prolongation[0](36,10) = -15.0/4096.0; - prolongation[0](36,11) = 5.0/4096.0; - prolongation[0](36,12) = -15.0/4096.0; - prolongation[0](36,13) = 5.0/4096.0; - prolongation[0](36,14) = -75.0/4096.0; - prolongation[0](36,15) = 25.0/4096.0; - prolongation[0](36,16) = -75.0/4096.0; - prolongation[0](36,17) = 25.0/4096.0; - prolongation[0](36,18) = -15.0/4096.0; - prolongation[0](36,19) = 5.0/4096.0; - prolongation[0](36,20) = -15.0/4096.0; - prolongation[0](36,21) = 5.0/4096.0; - prolongation[0](36,22) = -75.0/4096.0; - prolongation[0](36,23) = 25.0/4096.0; - prolongation[0](36,24) = 225.0/4096.0; - prolongation[0](36,25) = 225.0/4096.0; - prolongation[0](36,26) = 45.0/4096.0; - prolongation[0](36,27) = 45.0/4096.0; - prolongation[0](36,28) = 9.0/4096.0; - prolongation[0](36,29) = 9.0/4096.0; - prolongation[0](36,30) = 45.0/4096.0; - prolongation[0](36,31) = 45.0/4096.0; - prolongation[0](36,32) = -225.0/4096.0; - prolongation[0](36,33) = 75.0/4096.0; - prolongation[0](36,34) = 75.0/4096.0; - prolongation[0](36,35) = -25.0/4096.0; - prolongation[0](36,36) = -225.0/4096.0; - prolongation[0](36,37) = 75.0/4096.0; - prolongation[0](36,38) = 75.0/4096.0; - prolongation[0](36,39) = -25.0/4096.0; - prolongation[0](36,40) = 675.0/4096.0; - prolongation[0](36,41) = -225.0/4096.0; - prolongation[0](36,42) = 675.0/4096.0; - prolongation[0](36,43) = -225.0/4096.0; - prolongation[0](36,44) = 135.0/4096.0; - prolongation[0](36,45) = 135.0/4096.0; - prolongation[0](36,46) = -45.0/4096.0; - prolongation[0](36,47) = -45.0/4096.0; - prolongation[0](36,48) = 135.0/4096.0; - prolongation[0](36,49) = -45.0/4096.0; - prolongation[0](36,50) = 135.0/4096.0; - prolongation[0](36,51) = -45.0/4096.0; - prolongation[0](36,52) = 675.0/4096.0; - prolongation[0](36,53) = 675.0/4096.0; - prolongation[0](36,54) = -225.0/4096.0; - prolongation[0](36,55) = -225.0/4096.0; - prolongation[0](36,56) = 2025.0/4096.0; - prolongation[0](36,57) = -675.0/4096.0; - prolongation[0](36,58) = 2025.0/4096.0; - prolongation[0](36,59) = -675.0/4096.0; - prolongation[0](36,60) = -675.0/4096.0; - prolongation[0](36,61) = 225.0/4096.0; - prolongation[0](36,62) = -675.0/4096.0; - prolongation[0](36,63) = 225.0/4096.0; - prolongation[0](37,8) = -5.0/256.0; - prolongation[0](37,12) = -1.0/256.0; - prolongation[0](37,16) = -5.0/256.0; - prolongation[0](37,20) = -1.0/256.0; - prolongation[0](37,32) = -15.0/256.0; - prolongation[0](37,34) = 5.0/256.0; - prolongation[0](37,36) = -15.0/256.0; - prolongation[0](37,38) = 5.0/256.0; - prolongation[0](37,40) = 45.0/256.0; - prolongation[0](37,42) = 45.0/256.0; - prolongation[0](37,48) = 9.0/256.0; - prolongation[0](37,50) = 9.0/256.0; - prolongation[0](37,56) = 135.0/256.0; - prolongation[0](37,58) = 135.0/256.0; - prolongation[0](37,60) = -45.0/256.0; - prolongation[0](37,62) = -45.0/256.0; - prolongation[0](38,10) = -1.0/256.0; - prolongation[0](38,14) = -5.0/256.0; - prolongation[0](38,18) = -1.0/256.0; - prolongation[0](38,22) = -5.0/256.0; - prolongation[0](38,32) = -15.0/256.0; - prolongation[0](38,33) = 5.0/256.0; - prolongation[0](38,36) = -15.0/256.0; - prolongation[0](38,37) = 5.0/256.0; - prolongation[0](38,44) = 9.0/256.0; - prolongation[0](38,45) = 9.0/256.0; - prolongation[0](38,52) = 45.0/256.0; - prolongation[0](38,53) = 45.0/256.0; - prolongation[0](38,56) = 135.0/256.0; - prolongation[0](38,57) = -45.0/256.0; - prolongation[0](38,58) = 135.0/256.0; - prolongation[0](38,59) = -45.0/256.0; - prolongation[0](39,32) = -1.0/16.0; - prolongation[0](39,36) = -1.0/16.0; - prolongation[0](39,56) = 9.0/16.0; - prolongation[0](39,58) = 9.0/16.0; - prolongation[0](40,0) = 25.0/256.0; - prolongation[0](40,1) = 5.0/256.0; - prolongation[0](40,4) = 5.0/256.0; - prolongation[0](40,5) = 1.0/256.0; - prolongation[0](40,8) = 75.0/256.0; - prolongation[0](40,9) = -25.0/256.0; - prolongation[0](40,16) = 15.0/256.0; - prolongation[0](40,17) = -5.0/256.0; - prolongation[0](40,24) = 75.0/256.0; - prolongation[0](40,25) = -25.0/256.0; - prolongation[0](40,26) = 15.0/256.0; - prolongation[0](40,27) = -5.0/256.0; - prolongation[0](40,40) = 225.0/256.0; - prolongation[0](40,41) = -75.0/256.0; - prolongation[0](40,42) = -75.0/256.0; - prolongation[0](40,43) = 25.0/256.0; - prolongation[0](41,8) = 5.0/16.0; - prolongation[0](41,16) = 1.0/16.0; - prolongation[0](41,40) = 15.0/16.0; - prolongation[0](41,42) = -5.0/16.0; - prolongation[0](42,24) = 5.0/16.0; - prolongation[0](42,26) = 1.0/16.0; - prolongation[0](42,40) = 15.0/16.0; - prolongation[0](42,41) = -5.0/16.0; - prolongation[0](43,40) = 1.0; - prolongation[0](44,0) = -25.0/4096.0; - prolongation[0](44,1) = -25.0/4096.0; - prolongation[0](44,2) = -5.0/4096.0; - prolongation[0](44,3) = -5.0/4096.0; - prolongation[0](44,4) = -5.0/4096.0; - prolongation[0](44,5) = -5.0/4096.0; - prolongation[0](44,6) = -1.0/4096.0; - prolongation[0](44,7) = -1.0/4096.0; - prolongation[0](44,8) = 225.0/4096.0; - prolongation[0](44,9) = 225.0/4096.0; - prolongation[0](44,10) = -75.0/4096.0; - prolongation[0](44,11) = 25.0/4096.0; - prolongation[0](44,12) = 45.0/4096.0; - prolongation[0](44,13) = 45.0/4096.0; - prolongation[0](44,14) = -75.0/4096.0; - prolongation[0](44,15) = 25.0/4096.0; - prolongation[0](44,16) = 45.0/4096.0; - prolongation[0](44,17) = 45.0/4096.0; - prolongation[0](44,18) = -15.0/4096.0; - prolongation[0](44,19) = 5.0/4096.0; - prolongation[0](44,20) = 9.0/4096.0; - prolongation[0](44,21) = 9.0/4096.0; - prolongation[0](44,22) = -15.0/4096.0; - prolongation[0](44,23) = 5.0/4096.0; - prolongation[0](44,24) = -75.0/4096.0; - prolongation[0](44,25) = 25.0/4096.0; - prolongation[0](44,26) = -75.0/4096.0; - prolongation[0](44,27) = 25.0/4096.0; - prolongation[0](44,28) = -15.0/4096.0; - prolongation[0](44,29) = 5.0/4096.0; - prolongation[0](44,30) = -15.0/4096.0; - prolongation[0](44,31) = 5.0/4096.0; - prolongation[0](44,32) = 675.0/4096.0; - prolongation[0](44,33) = 675.0/4096.0; - prolongation[0](44,34) = -225.0/4096.0; - prolongation[0](44,35) = -225.0/4096.0; - prolongation[0](44,36) = 135.0/4096.0; - prolongation[0](44,37) = 135.0/4096.0; - prolongation[0](44,38) = -45.0/4096.0; - prolongation[0](44,39) = -45.0/4096.0; - prolongation[0](44,40) = 675.0/4096.0; - prolongation[0](44,41) = 675.0/4096.0; - prolongation[0](44,42) = -225.0/4096.0; - prolongation[0](44,43) = -225.0/4096.0; - prolongation[0](44,44) = -225.0/4096.0; - prolongation[0](44,45) = 75.0/4096.0; - prolongation[0](44,46) = 75.0/4096.0; - prolongation[0](44,47) = -25.0/4096.0; - prolongation[0](44,48) = 135.0/4096.0; - prolongation[0](44,49) = 135.0/4096.0; - prolongation[0](44,50) = -45.0/4096.0; - prolongation[0](44,51) = -45.0/4096.0; - prolongation[0](44,52) = -225.0/4096.0; - prolongation[0](44,53) = 75.0/4096.0; - prolongation[0](44,54) = 75.0/4096.0; - prolongation[0](44,55) = -25.0/4096.0; - prolongation[0](44,56) = 2025.0/4096.0; - prolongation[0](44,57) = 2025.0/4096.0; - prolongation[0](44,58) = -675.0/4096.0; - prolongation[0](44,59) = -675.0/4096.0; - prolongation[0](44,60) = -675.0/4096.0; - prolongation[0](44,61) = -675.0/4096.0; - prolongation[0](44,62) = 225.0/4096.0; - prolongation[0](44,63) = 225.0/4096.0; - prolongation[0](45,24) = -5.0/256.0; - prolongation[0](45,26) = -5.0/256.0; - prolongation[0](45,28) = -1.0/256.0; - prolongation[0](45,30) = -1.0/256.0; - prolongation[0](45,40) = 45.0/256.0; - prolongation[0](45,41) = 45.0/256.0; - prolongation[0](45,44) = -15.0/256.0; - prolongation[0](45,46) = 5.0/256.0; - prolongation[0](45,48) = 9.0/256.0; - prolongation[0](45,49) = 9.0/256.0; - prolongation[0](45,52) = -15.0/256.0; - prolongation[0](45,54) = 5.0/256.0; - prolongation[0](45,56) = 135.0/256.0; - prolongation[0](45,57) = 135.0/256.0; - prolongation[0](45,60) = -45.0/256.0; - prolongation[0](45,61) = -45.0/256.0; - prolongation[0](46,10) = -5.0/256.0; - prolongation[0](46,14) = -5.0/256.0; - prolongation[0](46,18) = -1.0/256.0; - prolongation[0](46,22) = -1.0/256.0; - prolongation[0](46,32) = 45.0/256.0; - prolongation[0](46,33) = 45.0/256.0; - prolongation[0](46,36) = 9.0/256.0; - prolongation[0](46,37) = 9.0/256.0; - prolongation[0](46,44) = -15.0/256.0; - prolongation[0](46,45) = 5.0/256.0; - prolongation[0](46,52) = -15.0/256.0; - prolongation[0](46,53) = 5.0/256.0; - prolongation[0](46,56) = 135.0/256.0; - prolongation[0](46,57) = 135.0/256.0; - prolongation[0](46,58) = -45.0/256.0; - prolongation[0](46,59) = -45.0/256.0; - prolongation[0](47,44) = -1.0/16.0; - prolongation[0](47,52) = -1.0/16.0; - prolongation[0](47,56) = 9.0/16.0; - prolongation[0](47,57) = 9.0/16.0; - prolongation[0](48,0) = -25.0/4096.0; - prolongation[0](48,1) = -5.0/4096.0; - prolongation[0](48,2) = -5.0/4096.0; - prolongation[0](48,3) = -25.0/4096.0; - prolongation[0](48,4) = -5.0/4096.0; - prolongation[0](48,5) = -1.0/4096.0; - prolongation[0](48,6) = -1.0/4096.0; - prolongation[0](48,7) = -5.0/4096.0; - prolongation[0](48,8) = -75.0/4096.0; - prolongation[0](48,9) = 25.0/4096.0; - prolongation[0](48,10) = 45.0/4096.0; - prolongation[0](48,11) = 45.0/4096.0; - prolongation[0](48,12) = -75.0/4096.0; - prolongation[0](48,13) = 25.0/4096.0; - prolongation[0](48,14) = 225.0/4096.0; - prolongation[0](48,15) = 225.0/4096.0; - prolongation[0](48,16) = -15.0/4096.0; - prolongation[0](48,17) = 5.0/4096.0; - prolongation[0](48,18) = 9.0/4096.0; - prolongation[0](48,19) = 9.0/4096.0; - prolongation[0](48,20) = -15.0/4096.0; - prolongation[0](48,21) = 5.0/4096.0; - prolongation[0](48,22) = 45.0/4096.0; - prolongation[0](48,23) = 45.0/4096.0; - prolongation[0](48,24) = -75.0/4096.0; - prolongation[0](48,25) = 25.0/4096.0; - prolongation[0](48,26) = -15.0/4096.0; - prolongation[0](48,27) = 5.0/4096.0; - prolongation[0](48,28) = -15.0/4096.0; - prolongation[0](48,29) = 5.0/4096.0; - prolongation[0](48,30) = -75.0/4096.0; - prolongation[0](48,31) = 25.0/4096.0; - prolongation[0](48,32) = 675.0/4096.0; - prolongation[0](48,33) = -225.0/4096.0; - prolongation[0](48,34) = 675.0/4096.0; - prolongation[0](48,35) = -225.0/4096.0; - prolongation[0](48,36) = 135.0/4096.0; - prolongation[0](48,37) = -45.0/4096.0; - prolongation[0](48,38) = 135.0/4096.0; - prolongation[0](48,39) = -45.0/4096.0; - prolongation[0](48,40) = -225.0/4096.0; - prolongation[0](48,41) = 75.0/4096.0; - prolongation[0](48,42) = 75.0/4096.0; - prolongation[0](48,43) = -25.0/4096.0; - prolongation[0](48,44) = 135.0/4096.0; - prolongation[0](48,45) = -45.0/4096.0; - prolongation[0](48,46) = 135.0/4096.0; - prolongation[0](48,47) = -45.0/4096.0; - prolongation[0](48,48) = -225.0/4096.0; - prolongation[0](48,49) = 75.0/4096.0; - prolongation[0](48,50) = 75.0/4096.0; - prolongation[0](48,51) = -25.0/4096.0; - prolongation[0](48,52) = 675.0/4096.0; - prolongation[0](48,53) = -225.0/4096.0; - prolongation[0](48,54) = 675.0/4096.0; - prolongation[0](48,55) = -225.0/4096.0; - prolongation[0](48,56) = 2025.0/4096.0; - prolongation[0](48,57) = -675.0/4096.0; - prolongation[0](48,58) = -675.0/4096.0; - prolongation[0](48,59) = 225.0/4096.0; - prolongation[0](48,60) = 2025.0/4096.0; - prolongation[0](48,61) = -675.0/4096.0; - prolongation[0](48,62) = -675.0/4096.0; - prolongation[0](48,63) = 225.0/4096.0; - prolongation[0](49,8) = -5.0/256.0; - prolongation[0](49,12) = -5.0/256.0; - prolongation[0](49,16) = -1.0/256.0; - prolongation[0](49,20) = -1.0/256.0; - prolongation[0](49,32) = 45.0/256.0; - prolongation[0](49,34) = 45.0/256.0; - prolongation[0](49,36) = 9.0/256.0; - prolongation[0](49,38) = 9.0/256.0; - prolongation[0](49,40) = -15.0/256.0; - prolongation[0](49,42) = 5.0/256.0; - prolongation[0](49,48) = -15.0/256.0; - prolongation[0](49,50) = 5.0/256.0; - prolongation[0](49,56) = 135.0/256.0; - prolongation[0](49,58) = -45.0/256.0; - prolongation[0](49,60) = 135.0/256.0; - prolongation[0](49,62) = -45.0/256.0; - prolongation[0](50,24) = -5.0/256.0; - prolongation[0](50,26) = -1.0/256.0; - prolongation[0](50,28) = -1.0/256.0; - prolongation[0](50,30) = -5.0/256.0; - prolongation[0](50,40) = -15.0/256.0; - prolongation[0](50,41) = 5.0/256.0; - prolongation[0](50,44) = 9.0/256.0; - prolongation[0](50,46) = 9.0/256.0; - prolongation[0](50,48) = -15.0/256.0; - prolongation[0](50,49) = 5.0/256.0; - prolongation[0](50,52) = 45.0/256.0; - prolongation[0](50,54) = 45.0/256.0; - prolongation[0](50,56) = 135.0/256.0; - prolongation[0](50,57) = -45.0/256.0; - prolongation[0](50,60) = 135.0/256.0; - prolongation[0](50,61) = -45.0/256.0; - prolongation[0](51,40) = -1.0/16.0; - prolongation[0](51,48) = -1.0/16.0; - prolongation[0](51,56) = 9.0/16.0; - prolongation[0](51,60) = 9.0/16.0; - prolongation[0](52,0) = 25.0/256.0; - prolongation[0](52,3) = 5.0/256.0; - prolongation[0](52,4) = 5.0/256.0; - prolongation[0](52,7) = 1.0/256.0; - prolongation[0](52,14) = 75.0/256.0; - prolongation[0](52,15) = -25.0/256.0; - prolongation[0](52,22) = 15.0/256.0; - prolongation[0](52,23) = -5.0/256.0; - prolongation[0](52,24) = 75.0/256.0; - prolongation[0](52,25) = -25.0/256.0; - prolongation[0](52,30) = 15.0/256.0; - prolongation[0](52,31) = -5.0/256.0; - prolongation[0](52,52) = 225.0/256.0; - prolongation[0](52,53) = -75.0/256.0; - prolongation[0](52,54) = -75.0/256.0; - prolongation[0](52,55) = 25.0/256.0; - prolongation[0](53,24) = 5.0/16.0; - prolongation[0](53,30) = 1.0/16.0; - prolongation[0](53,52) = 15.0/16.0; - prolongation[0](53,54) = -5.0/16.0; - prolongation[0](54,14) = 5.0/16.0; - prolongation[0](54,22) = 1.0/16.0; - prolongation[0](54,52) = 15.0/16.0; - prolongation[0](54,53) = -5.0/16.0; - prolongation[0](55,52) = 1.0; - prolongation[0](56,0) = 125.0/4096.0; - prolongation[0](56,1) = 25.0/4096.0; - prolongation[0](56,2) = 5.0/4096.0; - prolongation[0](56,3) = 25.0/4096.0; - prolongation[0](56,4) = 25.0/4096.0; - prolongation[0](56,5) = 5.0/4096.0; - prolongation[0](56,6) = 1.0/4096.0; - prolongation[0](56,7) = 5.0/4096.0; - prolongation[0](56,8) = 375.0/4096.0; - prolongation[0](56,9) = -125.0/4096.0; - prolongation[0](56,10) = 75.0/4096.0; - prolongation[0](56,11) = -25.0/4096.0; - prolongation[0](56,12) = 75.0/4096.0; - prolongation[0](56,13) = -25.0/4096.0; - prolongation[0](56,14) = 375.0/4096.0; - prolongation[0](56,15) = -125.0/4096.0; - prolongation[0](56,16) = 75.0/4096.0; - prolongation[0](56,17) = -25.0/4096.0; - prolongation[0](56,18) = 15.0/4096.0; - prolongation[0](56,19) = -5.0/4096.0; - prolongation[0](56,20) = 15.0/4096.0; - prolongation[0](56,21) = -5.0/4096.0; - prolongation[0](56,22) = 75.0/4096.0; - prolongation[0](56,23) = -25.0/4096.0; - prolongation[0](56,24) = 375.0/4096.0; - prolongation[0](56,25) = -125.0/4096.0; - prolongation[0](56,26) = 75.0/4096.0; - prolongation[0](56,27) = -25.0/4096.0; - prolongation[0](56,28) = 15.0/4096.0; - prolongation[0](56,29) = -5.0/4096.0; - prolongation[0](56,30) = 75.0/4096.0; - prolongation[0](56,31) = -25.0/4096.0; - prolongation[0](56,32) = 1125.0/4096.0; - prolongation[0](56,33) = -375.0/4096.0; - prolongation[0](56,34) = -375.0/4096.0; - prolongation[0](56,35) = 125.0/4096.0; - prolongation[0](56,36) = 225.0/4096.0; - prolongation[0](56,37) = -75.0/4096.0; - prolongation[0](56,38) = -75.0/4096.0; - prolongation[0](56,39) = 25.0/4096.0; - prolongation[0](56,40) = 1125.0/4096.0; - prolongation[0](56,41) = -375.0/4096.0; - prolongation[0](56,42) = -375.0/4096.0; - prolongation[0](56,43) = 125.0/4096.0; - prolongation[0](56,44) = 225.0/4096.0; - prolongation[0](56,45) = -75.0/4096.0; - prolongation[0](56,46) = -75.0/4096.0; - prolongation[0](56,47) = 25.0/4096.0; - prolongation[0](56,48) = 225.0/4096.0; - prolongation[0](56,49) = -75.0/4096.0; - prolongation[0](56,50) = -75.0/4096.0; - prolongation[0](56,51) = 25.0/4096.0; - prolongation[0](56,52) = 1125.0/4096.0; - prolongation[0](56,53) = -375.0/4096.0; - prolongation[0](56,54) = -375.0/4096.0; - prolongation[0](56,55) = 125.0/4096.0; - prolongation[0](56,56) = 3375.0/4096.0; - prolongation[0](56,57) = -1125.0/4096.0; - prolongation[0](56,58) = -1125.0/4096.0; - prolongation[0](56,59) = 375.0/4096.0; - prolongation[0](56,60) = -1125.0/4096.0; - prolongation[0](56,61) = 375.0/4096.0; - prolongation[0](56,62) = 375.0/4096.0; - prolongation[0](56,63) = -125.0/4096.0; - prolongation[0](57,8) = 25.0/256.0; - prolongation[0](57,12) = 5.0/256.0; - prolongation[0](57,16) = 5.0/256.0; - prolongation[0](57,20) = 1.0/256.0; - prolongation[0](57,32) = 75.0/256.0; - prolongation[0](57,34) = -25.0/256.0; - prolongation[0](57,36) = 15.0/256.0; - prolongation[0](57,38) = -5.0/256.0; - prolongation[0](57,40) = 75.0/256.0; - prolongation[0](57,42) = -25.0/256.0; - prolongation[0](57,48) = 15.0/256.0; - prolongation[0](57,50) = -5.0/256.0; - prolongation[0](57,56) = 225.0/256.0; - prolongation[0](57,58) = -75.0/256.0; - prolongation[0](57,60) = -75.0/256.0; - prolongation[0](57,62) = 25.0/256.0; - prolongation[0](58,24) = 25.0/256.0; - prolongation[0](58,26) = 5.0/256.0; - prolongation[0](58,28) = 1.0/256.0; - prolongation[0](58,30) = 5.0/256.0; - prolongation[0](58,40) = 75.0/256.0; - prolongation[0](58,41) = -25.0/256.0; - prolongation[0](58,44) = 15.0/256.0; - prolongation[0](58,46) = -5.0/256.0; - prolongation[0](58,48) = 15.0/256.0; - prolongation[0](58,49) = -5.0/256.0; - prolongation[0](58,52) = 75.0/256.0; - prolongation[0](58,54) = -25.0/256.0; - prolongation[0](58,56) = 225.0/256.0; - prolongation[0](58,57) = -75.0/256.0; - prolongation[0](58,60) = -75.0/256.0; - prolongation[0](58,61) = 25.0/256.0; - prolongation[0](59,40) = 5.0/16.0; - prolongation[0](59,48) = 1.0/16.0; - prolongation[0](59,56) = 15.0/16.0; - prolongation[0](59,60) = -5.0/16.0; - prolongation[0](60,10) = 5.0/256.0; - prolongation[0](60,14) = 25.0/256.0; - prolongation[0](60,18) = 1.0/256.0; - prolongation[0](60,22) = 5.0/256.0; - prolongation[0](60,32) = 75.0/256.0; - prolongation[0](60,33) = -25.0/256.0; - prolongation[0](60,36) = 15.0/256.0; - prolongation[0](60,37) = -5.0/256.0; - prolongation[0](60,44) = 15.0/256.0; - prolongation[0](60,45) = -5.0/256.0; - prolongation[0](60,52) = 75.0/256.0; - prolongation[0](60,53) = -25.0/256.0; - prolongation[0](60,56) = 225.0/256.0; - prolongation[0](60,57) = -75.0/256.0; - prolongation[0](60,58) = -75.0/256.0; - prolongation[0](60,59) = 25.0/256.0; - prolongation[0](61,32) = 5.0/16.0; - prolongation[0](61,36) = 1.0/16.0; - prolongation[0](61,56) = 15.0/16.0; - prolongation[0](61,58) = -5.0/16.0; - prolongation[0](62,44) = 1.0/16.0; - prolongation[0](62,52) = 5.0/16.0; - prolongation[0](62,56) = 15.0/16.0; - prolongation[0](62,57) = -5.0/16.0; - prolongation[0](63,56) = 1.0; - prolongation[1](0,0) = -1.0/16.0; - prolongation[1](0,1) = -1.0/16.0; - prolongation[1](0,8) = 9.0/16.0; - prolongation[1](0,9) = 9.0/16.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,1) = -1.0/16.0; - prolongation[1](2,2) = -1.0/16.0; - prolongation[1](2,10) = 9.0/16.0; - prolongation[1](2,11) = 9.0/16.0; - prolongation[1](3,0) = 1.0/256.0; - prolongation[1](3,1) = 1.0/256.0; - prolongation[1](3,2) = 1.0/256.0; - prolongation[1](3,3) = 1.0/256.0; - prolongation[1](3,8) = -9.0/256.0; - prolongation[1](3,9) = -9.0/256.0; - prolongation[1](3,10) = -9.0/256.0; - prolongation[1](3,11) = -9.0/256.0; - prolongation[1](3,12) = -9.0/256.0; - prolongation[1](3,13) = -9.0/256.0; - prolongation[1](3,14) = -9.0/256.0; - prolongation[1](3,15) = -9.0/256.0; - prolongation[1](3,32) = 81.0/256.0; - prolongation[1](3,33) = 81.0/256.0; - prolongation[1](3,34) = 81.0/256.0; - prolongation[1](3,35) = 81.0/256.0; - prolongation[1](4,0) = 1.0/256.0; - prolongation[1](4,1) = 1.0/256.0; - prolongation[1](4,4) = 1.0/256.0; - prolongation[1](4,5) = 1.0/256.0; - prolongation[1](4,8) = -9.0/256.0; - prolongation[1](4,9) = -9.0/256.0; - prolongation[1](4,16) = -9.0/256.0; - prolongation[1](4,17) = -9.0/256.0; - prolongation[1](4,24) = -9.0/256.0; - prolongation[1](4,25) = -9.0/256.0; - prolongation[1](4,26) = -9.0/256.0; - prolongation[1](4,27) = -9.0/256.0; - prolongation[1](4,40) = 81.0/256.0; - prolongation[1](4,41) = 81.0/256.0; - prolongation[1](4,42) = 81.0/256.0; - prolongation[1](4,43) = 81.0/256.0; - prolongation[1](5,1) = -1.0/16.0; - prolongation[1](5,5) = -1.0/16.0; - prolongation[1](5,26) = 9.0/16.0; - prolongation[1](5,27) = 9.0/16.0; - prolongation[1](6,1) = 1.0/256.0; - prolongation[1](6,2) = 1.0/256.0; - prolongation[1](6,5) = 1.0/256.0; - prolongation[1](6,6) = 1.0/256.0; - prolongation[1](6,10) = -9.0/256.0; - prolongation[1](6,11) = -9.0/256.0; - prolongation[1](6,18) = -9.0/256.0; - prolongation[1](6,19) = -9.0/256.0; - prolongation[1](6,26) = -9.0/256.0; - prolongation[1](6,27) = -9.0/256.0; - prolongation[1](6,28) = -9.0/256.0; - prolongation[1](6,29) = -9.0/256.0; - prolongation[1](6,44) = 81.0/256.0; - prolongation[1](6,45) = 81.0/256.0; - prolongation[1](6,46) = 81.0/256.0; - prolongation[1](6,47) = 81.0/256.0; - prolongation[1](7,0) = -1.0/4096.0; - prolongation[1](7,1) = -1.0/4096.0; - prolongation[1](7,2) = -1.0/4096.0; - prolongation[1](7,3) = -1.0/4096.0; - prolongation[1](7,4) = -1.0/4096.0; - prolongation[1](7,5) = -1.0/4096.0; - prolongation[1](7,6) = -1.0/4096.0; - prolongation[1](7,7) = -1.0/4096.0; - prolongation[1](7,8) = 9.0/4096.0; - prolongation[1](7,9) = 9.0/4096.0; - prolongation[1](7,10) = 9.0/4096.0; - prolongation[1](7,11) = 9.0/4096.0; - prolongation[1](7,12) = 9.0/4096.0; - prolongation[1](7,13) = 9.0/4096.0; - prolongation[1](7,14) = 9.0/4096.0; - prolongation[1](7,15) = 9.0/4096.0; - prolongation[1](7,16) = 9.0/4096.0; - prolongation[1](7,17) = 9.0/4096.0; - prolongation[1](7,18) = 9.0/4096.0; - prolongation[1](7,19) = 9.0/4096.0; - prolongation[1](7,20) = 9.0/4096.0; - prolongation[1](7,21) = 9.0/4096.0; - prolongation[1](7,22) = 9.0/4096.0; - prolongation[1](7,23) = 9.0/4096.0; - prolongation[1](7,24) = 9.0/4096.0; - prolongation[1](7,25) = 9.0/4096.0; - prolongation[1](7,26) = 9.0/4096.0; - prolongation[1](7,27) = 9.0/4096.0; - prolongation[1](7,28) = 9.0/4096.0; - prolongation[1](7,29) = 9.0/4096.0; - prolongation[1](7,30) = 9.0/4096.0; - prolongation[1](7,31) = 9.0/4096.0; - prolongation[1](7,32) = -81.0/4096.0; - prolongation[1](7,33) = -81.0/4096.0; - prolongation[1](7,34) = -81.0/4096.0; - prolongation[1](7,35) = -81.0/4096.0; - prolongation[1](7,36) = -81.0/4096.0; - prolongation[1](7,37) = -81.0/4096.0; - prolongation[1](7,38) = -81.0/4096.0; - prolongation[1](7,39) = -81.0/4096.0; - prolongation[1](7,40) = -81.0/4096.0; - prolongation[1](7,41) = -81.0/4096.0; - prolongation[1](7,42) = -81.0/4096.0; - prolongation[1](7,43) = -81.0/4096.0; - prolongation[1](7,44) = -81.0/4096.0; - prolongation[1](7,45) = -81.0/4096.0; - prolongation[1](7,46) = -81.0/4096.0; - prolongation[1](7,47) = -81.0/4096.0; - prolongation[1](7,48) = -81.0/4096.0; - prolongation[1](7,49) = -81.0/4096.0; - prolongation[1](7,50) = -81.0/4096.0; - prolongation[1](7,51) = -81.0/4096.0; - prolongation[1](7,52) = -81.0/4096.0; - prolongation[1](7,53) = -81.0/4096.0; - prolongation[1](7,54) = -81.0/4096.0; - prolongation[1](7,55) = -81.0/4096.0; - prolongation[1](7,56) = 729.0/4096.0; - prolongation[1](7,57) = 729.0/4096.0; - prolongation[1](7,58) = 729.0/4096.0; - prolongation[1](7,59) = 729.0/4096.0; - prolongation[1](7,60) = 729.0/4096.0; - prolongation[1](7,61) = 729.0/4096.0; - prolongation[1](7,62) = 729.0/4096.0; - prolongation[1](7,63) = 729.0/4096.0; - prolongation[1](8,9) = 1.0; - prolongation[1](9,0) = 1.0/16.0; - prolongation[1](9,1) = 5.0/16.0; - prolongation[1](9,8) = -5.0/16.0; - prolongation[1](9,9) = 15.0/16.0; - prolongation[1](10,1) = 5.0/16.0; - prolongation[1](10,2) = 1.0/16.0; - prolongation[1](10,10) = 15.0/16.0; - prolongation[1](10,11) = -5.0/16.0; - prolongation[1](11,10) = 1.0; - prolongation[1](12,9) = -1.0/16.0; - prolongation[1](12,13) = -1.0/16.0; - prolongation[1](12,33) = 9.0/16.0; - prolongation[1](12,35) = 9.0/16.0; - prolongation[1](13,0) = -1.0/256.0; - prolongation[1](13,1) = -5.0/256.0; - prolongation[1](13,2) = -5.0/256.0; - prolongation[1](13,3) = -1.0/256.0; - prolongation[1](13,8) = 5.0/256.0; - prolongation[1](13,9) = -15.0/256.0; - prolongation[1](13,10) = 45.0/256.0; - prolongation[1](13,11) = 45.0/256.0; - prolongation[1](13,12) = 5.0/256.0; - prolongation[1](13,13) = -15.0/256.0; - prolongation[1](13,14) = 9.0/256.0; - prolongation[1](13,15) = 9.0/256.0; - prolongation[1](13,32) = -45.0/256.0; - prolongation[1](13,33) = 135.0/256.0; - prolongation[1](13,34) = -45.0/256.0; - prolongation[1](13,35) = 135.0/256.0; - prolongation[1](14,0) = -5.0/256.0; - prolongation[1](14,1) = -5.0/256.0; - prolongation[1](14,2) = -1.0/256.0; - prolongation[1](14,3) = -1.0/256.0; - prolongation[1](14,8) = 45.0/256.0; - prolongation[1](14,9) = 45.0/256.0; - prolongation[1](14,10) = -15.0/256.0; - prolongation[1](14,11) = 5.0/256.0; - prolongation[1](14,12) = 9.0/256.0; - prolongation[1](14,13) = 9.0/256.0; - prolongation[1](14,14) = -15.0/256.0; - prolongation[1](14,15) = 5.0/256.0; - prolongation[1](14,32) = 135.0/256.0; - prolongation[1](14,33) = 135.0/256.0; - prolongation[1](14,34) = -45.0/256.0; - prolongation[1](14,35) = -45.0/256.0; - prolongation[1](15,10) = -1.0/16.0; - prolongation[1](15,14) = -1.0/16.0; - prolongation[1](15,32) = 9.0/16.0; - prolongation[1](15,33) = 9.0/16.0; - prolongation[1](16,9) = -1.0/16.0; - prolongation[1](16,17) = -1.0/16.0; - prolongation[1](16,41) = 9.0/16.0; - prolongation[1](16,43) = 9.0/16.0; - prolongation[1](17,0) = -1.0/256.0; - prolongation[1](17,1) = -5.0/256.0; - prolongation[1](17,4) = -1.0/256.0; - prolongation[1](17,5) = -5.0/256.0; - prolongation[1](17,8) = 5.0/256.0; - prolongation[1](17,9) = -15.0/256.0; - prolongation[1](17,16) = 5.0/256.0; - prolongation[1](17,17) = -15.0/256.0; - prolongation[1](17,24) = 9.0/256.0; - prolongation[1](17,25) = 9.0/256.0; - prolongation[1](17,26) = 45.0/256.0; - prolongation[1](17,27) = 45.0/256.0; - prolongation[1](17,40) = -45.0/256.0; - prolongation[1](17,41) = 135.0/256.0; - prolongation[1](17,42) = -45.0/256.0; - prolongation[1](17,43) = 135.0/256.0; - prolongation[1](18,1) = -5.0/256.0; - prolongation[1](18,2) = -1.0/256.0; - prolongation[1](18,5) = -5.0/256.0; - prolongation[1](18,6) = -1.0/256.0; - prolongation[1](18,10) = -15.0/256.0; - prolongation[1](18,11) = 5.0/256.0; - prolongation[1](18,18) = -15.0/256.0; - prolongation[1](18,19) = 5.0/256.0; - prolongation[1](18,26) = 45.0/256.0; - prolongation[1](18,27) = 45.0/256.0; - prolongation[1](18,28) = 9.0/256.0; - prolongation[1](18,29) = 9.0/256.0; - prolongation[1](18,44) = 135.0/256.0; - prolongation[1](18,45) = 135.0/256.0; - prolongation[1](18,46) = -45.0/256.0; - prolongation[1](18,47) = -45.0/256.0; - prolongation[1](19,10) = -1.0/16.0; - prolongation[1](19,18) = -1.0/16.0; - prolongation[1](19,44) = 9.0/16.0; - prolongation[1](19,45) = 9.0/16.0; - prolongation[1](20,9) = 1.0/256.0; - prolongation[1](20,13) = 1.0/256.0; - prolongation[1](20,17) = 1.0/256.0; - prolongation[1](20,21) = 1.0/256.0; - prolongation[1](20,33) = -9.0/256.0; - prolongation[1](20,35) = -9.0/256.0; - prolongation[1](20,37) = -9.0/256.0; - prolongation[1](20,39) = -9.0/256.0; - prolongation[1](20,41) = -9.0/256.0; - prolongation[1](20,43) = -9.0/256.0; - prolongation[1](20,49) = -9.0/256.0; - prolongation[1](20,51) = -9.0/256.0; - prolongation[1](20,57) = 81.0/256.0; - prolongation[1](20,59) = 81.0/256.0; - prolongation[1](20,61) = 81.0/256.0; - prolongation[1](20,63) = 81.0/256.0; - prolongation[1](21,0) = 1.0/4096.0; - prolongation[1](21,1) = 5.0/4096.0; - prolongation[1](21,2) = 5.0/4096.0; - prolongation[1](21,3) = 1.0/4096.0; - prolongation[1](21,4) = 1.0/4096.0; - prolongation[1](21,5) = 5.0/4096.0; - prolongation[1](21,6) = 5.0/4096.0; - prolongation[1](21,7) = 1.0/4096.0; - prolongation[1](21,8) = -5.0/4096.0; - prolongation[1](21,9) = 15.0/4096.0; - prolongation[1](21,10) = -45.0/4096.0; - prolongation[1](21,11) = -45.0/4096.0; - prolongation[1](21,12) = -5.0/4096.0; - prolongation[1](21,13) = 15.0/4096.0; - prolongation[1](21,14) = -9.0/4096.0; - prolongation[1](21,15) = -9.0/4096.0; - prolongation[1](21,16) = -5.0/4096.0; - prolongation[1](21,17) = 15.0/4096.0; - prolongation[1](21,18) = -45.0/4096.0; - prolongation[1](21,19) = -45.0/4096.0; - prolongation[1](21,20) = -5.0/4096.0; - prolongation[1](21,21) = 15.0/4096.0; - prolongation[1](21,22) = -9.0/4096.0; - prolongation[1](21,23) = -9.0/4096.0; - prolongation[1](21,24) = -9.0/4096.0; - prolongation[1](21,25) = -9.0/4096.0; - prolongation[1](21,26) = -45.0/4096.0; - prolongation[1](21,27) = -45.0/4096.0; - prolongation[1](21,28) = -45.0/4096.0; - prolongation[1](21,29) = -45.0/4096.0; - prolongation[1](21,30) = -9.0/4096.0; - prolongation[1](21,31) = -9.0/4096.0; - prolongation[1](21,32) = 45.0/4096.0; - prolongation[1](21,33) = -135.0/4096.0; - prolongation[1](21,34) = 45.0/4096.0; - prolongation[1](21,35) = -135.0/4096.0; - prolongation[1](21,36) = 45.0/4096.0; - prolongation[1](21,37) = -135.0/4096.0; - prolongation[1](21,38) = 45.0/4096.0; - prolongation[1](21,39) = -135.0/4096.0; - prolongation[1](21,40) = 45.0/4096.0; - prolongation[1](21,41) = -135.0/4096.0; - prolongation[1](21,42) = 45.0/4096.0; - prolongation[1](21,43) = -135.0/4096.0; - prolongation[1](21,44) = 405.0/4096.0; - prolongation[1](21,45) = 405.0/4096.0; - prolongation[1](21,46) = 405.0/4096.0; - prolongation[1](21,47) = 405.0/4096.0; - prolongation[1](21,48) = 45.0/4096.0; - prolongation[1](21,49) = -135.0/4096.0; - prolongation[1](21,50) = 45.0/4096.0; - prolongation[1](21,51) = -135.0/4096.0; - prolongation[1](21,52) = 81.0/4096.0; - prolongation[1](21,53) = 81.0/4096.0; - prolongation[1](21,54) = 81.0/4096.0; - prolongation[1](21,55) = 81.0/4096.0; - prolongation[1](21,56) = -405.0/4096.0; - prolongation[1](21,57) = 1215.0/4096.0; - prolongation[1](21,58) = -405.0/4096.0; - prolongation[1](21,59) = 1215.0/4096.0; - prolongation[1](21,60) = -405.0/4096.0; - prolongation[1](21,61) = 1215.0/4096.0; - prolongation[1](21,62) = -405.0/4096.0; - prolongation[1](21,63) = 1215.0/4096.0; - prolongation[1](22,0) = 5.0/4096.0; - prolongation[1](22,1) = 5.0/4096.0; - prolongation[1](22,2) = 1.0/4096.0; - prolongation[1](22,3) = 1.0/4096.0; - prolongation[1](22,4) = 5.0/4096.0; - prolongation[1](22,5) = 5.0/4096.0; - prolongation[1](22,6) = 1.0/4096.0; - prolongation[1](22,7) = 1.0/4096.0; - prolongation[1](22,8) = -45.0/4096.0; - prolongation[1](22,9) = -45.0/4096.0; - prolongation[1](22,10) = 15.0/4096.0; - prolongation[1](22,11) = -5.0/4096.0; - prolongation[1](22,12) = -9.0/4096.0; - prolongation[1](22,13) = -9.0/4096.0; - prolongation[1](22,14) = 15.0/4096.0; - prolongation[1](22,15) = -5.0/4096.0; - prolongation[1](22,16) = -45.0/4096.0; - prolongation[1](22,17) = -45.0/4096.0; - prolongation[1](22,18) = 15.0/4096.0; - prolongation[1](22,19) = -5.0/4096.0; - prolongation[1](22,20) = -9.0/4096.0; - prolongation[1](22,21) = -9.0/4096.0; - prolongation[1](22,22) = 15.0/4096.0; - prolongation[1](22,23) = -5.0/4096.0; - prolongation[1](22,24) = -45.0/4096.0; - prolongation[1](22,25) = -45.0/4096.0; - prolongation[1](22,26) = -45.0/4096.0; - prolongation[1](22,27) = -45.0/4096.0; - prolongation[1](22,28) = -9.0/4096.0; - prolongation[1](22,29) = -9.0/4096.0; - prolongation[1](22,30) = -9.0/4096.0; - prolongation[1](22,31) = -9.0/4096.0; - prolongation[1](22,32) = -135.0/4096.0; - prolongation[1](22,33) = -135.0/4096.0; - prolongation[1](22,34) = 45.0/4096.0; - prolongation[1](22,35) = 45.0/4096.0; - prolongation[1](22,36) = -135.0/4096.0; - prolongation[1](22,37) = -135.0/4096.0; - prolongation[1](22,38) = 45.0/4096.0; - prolongation[1](22,39) = 45.0/4096.0; - prolongation[1](22,40) = 405.0/4096.0; - prolongation[1](22,41) = 405.0/4096.0; - prolongation[1](22,42) = 405.0/4096.0; - prolongation[1](22,43) = 405.0/4096.0; - prolongation[1](22,44) = -135.0/4096.0; - prolongation[1](22,45) = -135.0/4096.0; - prolongation[1](22,46) = 45.0/4096.0; - prolongation[1](22,47) = 45.0/4096.0; - prolongation[1](22,48) = 81.0/4096.0; - prolongation[1](22,49) = 81.0/4096.0; - prolongation[1](22,50) = 81.0/4096.0; - prolongation[1](22,51) = 81.0/4096.0; - prolongation[1](22,52) = -135.0/4096.0; - prolongation[1](22,53) = -135.0/4096.0; - prolongation[1](22,54) = 45.0/4096.0; - prolongation[1](22,55) = 45.0/4096.0; - prolongation[1](22,56) = 1215.0/4096.0; - prolongation[1](22,57) = 1215.0/4096.0; - prolongation[1](22,58) = 1215.0/4096.0; - prolongation[1](22,59) = 1215.0/4096.0; - prolongation[1](22,60) = -405.0/4096.0; - prolongation[1](22,61) = -405.0/4096.0; - prolongation[1](22,62) = -405.0/4096.0; - prolongation[1](22,63) = -405.0/4096.0; - prolongation[1](23,10) = 1.0/256.0; - prolongation[1](23,14) = 1.0/256.0; - prolongation[1](23,18) = 1.0/256.0; - prolongation[1](23,22) = 1.0/256.0; - prolongation[1](23,32) = -9.0/256.0; - prolongation[1](23,33) = -9.0/256.0; - prolongation[1](23,36) = -9.0/256.0; - prolongation[1](23,37) = -9.0/256.0; - prolongation[1](23,44) = -9.0/256.0; - prolongation[1](23,45) = -9.0/256.0; - prolongation[1](23,52) = -9.0/256.0; - prolongation[1](23,53) = -9.0/256.0; - prolongation[1](23,56) = 81.0/256.0; - prolongation[1](23,57) = 81.0/256.0; - prolongation[1](23,58) = 81.0/256.0; - prolongation[1](23,59) = 81.0/256.0; - prolongation[1](24,0) = -5.0/256.0; - prolongation[1](24,1) = -5.0/256.0; - prolongation[1](24,4) = -1.0/256.0; - prolongation[1](24,5) = -1.0/256.0; - prolongation[1](24,8) = 45.0/256.0; - prolongation[1](24,9) = 45.0/256.0; - prolongation[1](24,16) = 9.0/256.0; - prolongation[1](24,17) = 9.0/256.0; - prolongation[1](24,24) = -15.0/256.0; - prolongation[1](24,25) = 5.0/256.0; - prolongation[1](24,26) = -15.0/256.0; - prolongation[1](24,27) = 5.0/256.0; - prolongation[1](24,40) = 135.0/256.0; - prolongation[1](24,41) = 135.0/256.0; - prolongation[1](24,42) = -45.0/256.0; - prolongation[1](24,43) = -45.0/256.0; - prolongation[1](25,24) = -1.0/16.0; - prolongation[1](25,26) = -1.0/16.0; - prolongation[1](25,40) = 9.0/16.0; - prolongation[1](25,41) = 9.0/16.0; - prolongation[1](26,1) = 5.0/16.0; - prolongation[1](26,5) = 1.0/16.0; - prolongation[1](26,26) = 15.0/16.0; - prolongation[1](26,27) = -5.0/16.0; - prolongation[1](27,26) = 1.0; - prolongation[1](28,1) = -5.0/256.0; - prolongation[1](28,2) = -5.0/256.0; - prolongation[1](28,5) = -1.0/256.0; - prolongation[1](28,6) = -1.0/256.0; - prolongation[1](28,10) = 45.0/256.0; - prolongation[1](28,11) = 45.0/256.0; - prolongation[1](28,18) = 9.0/256.0; - prolongation[1](28,19) = 9.0/256.0; - prolongation[1](28,26) = -15.0/256.0; - prolongation[1](28,27) = 5.0/256.0; - prolongation[1](28,28) = -15.0/256.0; - prolongation[1](28,29) = 5.0/256.0; - prolongation[1](28,44) = 135.0/256.0; - prolongation[1](28,45) = -45.0/256.0; - prolongation[1](28,46) = 135.0/256.0; - prolongation[1](28,47) = -45.0/256.0; - prolongation[1](29,26) = -1.0/16.0; - prolongation[1](29,28) = -1.0/16.0; - prolongation[1](29,44) = 9.0/16.0; - prolongation[1](29,46) = 9.0/16.0; - prolongation[1](30,0) = 5.0/4096.0; - prolongation[1](30,1) = 5.0/4096.0; - prolongation[1](30,2) = 5.0/4096.0; - prolongation[1](30,3) = 5.0/4096.0; - prolongation[1](30,4) = 1.0/4096.0; - prolongation[1](30,5) = 1.0/4096.0; - prolongation[1](30,6) = 1.0/4096.0; - prolongation[1](30,7) = 1.0/4096.0; - prolongation[1](30,8) = -45.0/4096.0; - prolongation[1](30,9) = -45.0/4096.0; - prolongation[1](30,10) = -45.0/4096.0; - prolongation[1](30,11) = -45.0/4096.0; - prolongation[1](30,12) = -45.0/4096.0; - prolongation[1](30,13) = -45.0/4096.0; - prolongation[1](30,14) = -45.0/4096.0; - prolongation[1](30,15) = -45.0/4096.0; - prolongation[1](30,16) = -9.0/4096.0; - prolongation[1](30,17) = -9.0/4096.0; - prolongation[1](30,18) = -9.0/4096.0; - prolongation[1](30,19) = -9.0/4096.0; - prolongation[1](30,20) = -9.0/4096.0; - prolongation[1](30,21) = -9.0/4096.0; - prolongation[1](30,22) = -9.0/4096.0; - prolongation[1](30,23) = -9.0/4096.0; - prolongation[1](30,24) = 15.0/4096.0; - prolongation[1](30,25) = -5.0/4096.0; - prolongation[1](30,26) = 15.0/4096.0; - prolongation[1](30,27) = -5.0/4096.0; - prolongation[1](30,28) = 15.0/4096.0; - prolongation[1](30,29) = -5.0/4096.0; - prolongation[1](30,30) = 15.0/4096.0; - prolongation[1](30,31) = -5.0/4096.0; - prolongation[1](30,32) = 405.0/4096.0; - prolongation[1](30,33) = 405.0/4096.0; - prolongation[1](30,34) = 405.0/4096.0; - prolongation[1](30,35) = 405.0/4096.0; - prolongation[1](30,36) = 81.0/4096.0; - prolongation[1](30,37) = 81.0/4096.0; - prolongation[1](30,38) = 81.0/4096.0; - prolongation[1](30,39) = 81.0/4096.0; - prolongation[1](30,40) = -135.0/4096.0; - prolongation[1](30,41) = -135.0/4096.0; - prolongation[1](30,42) = 45.0/4096.0; - prolongation[1](30,43) = 45.0/4096.0; - prolongation[1](30,44) = -135.0/4096.0; - prolongation[1](30,45) = 45.0/4096.0; - prolongation[1](30,46) = -135.0/4096.0; - prolongation[1](30,47) = 45.0/4096.0; - prolongation[1](30,48) = -135.0/4096.0; - prolongation[1](30,49) = -135.0/4096.0; - prolongation[1](30,50) = 45.0/4096.0; - prolongation[1](30,51) = 45.0/4096.0; - prolongation[1](30,52) = -135.0/4096.0; - prolongation[1](30,53) = 45.0/4096.0; - prolongation[1](30,54) = -135.0/4096.0; - prolongation[1](30,55) = 45.0/4096.0; - prolongation[1](30,56) = 1215.0/4096.0; - prolongation[1](30,57) = 1215.0/4096.0; - prolongation[1](30,58) = -405.0/4096.0; - prolongation[1](30,59) = -405.0/4096.0; - prolongation[1](30,60) = 1215.0/4096.0; - prolongation[1](30,61) = 1215.0/4096.0; - prolongation[1](30,62) = -405.0/4096.0; - prolongation[1](30,63) = -405.0/4096.0; - prolongation[1](31,24) = 1.0/256.0; - prolongation[1](31,26) = 1.0/256.0; - prolongation[1](31,28) = 1.0/256.0; - prolongation[1](31,30) = 1.0/256.0; - prolongation[1](31,40) = -9.0/256.0; - prolongation[1](31,41) = -9.0/256.0; - prolongation[1](31,44) = -9.0/256.0; - prolongation[1](31,46) = -9.0/256.0; - prolongation[1](31,48) = -9.0/256.0; - prolongation[1](31,49) = -9.0/256.0; - prolongation[1](31,52) = -9.0/256.0; - prolongation[1](31,54) = -9.0/256.0; - prolongation[1](31,56) = 81.0/256.0; - prolongation[1](31,57) = 81.0/256.0; - prolongation[1](31,60) = 81.0/256.0; - prolongation[1](31,61) = 81.0/256.0; - prolongation[1](32,9) = 5.0/16.0; - prolongation[1](32,13) = 1.0/16.0; - prolongation[1](32,33) = 15.0/16.0; - prolongation[1](32,35) = -5.0/16.0; - prolongation[1](33,0) = 5.0/256.0; - prolongation[1](33,1) = 25.0/256.0; - prolongation[1](33,2) = 5.0/256.0; - prolongation[1](33,3) = 1.0/256.0; - prolongation[1](33,8) = -25.0/256.0; - prolongation[1](33,9) = 75.0/256.0; - prolongation[1](33,10) = 75.0/256.0; - prolongation[1](33,11) = -25.0/256.0; - prolongation[1](33,12) = -5.0/256.0; - prolongation[1](33,13) = 15.0/256.0; - prolongation[1](33,14) = 15.0/256.0; - prolongation[1](33,15) = -5.0/256.0; - prolongation[1](33,32) = -75.0/256.0; - prolongation[1](33,33) = 225.0/256.0; - prolongation[1](33,34) = 25.0/256.0; - prolongation[1](33,35) = -75.0/256.0; - prolongation[1](34,33) = 1.0; - prolongation[1](35,10) = 5.0/16.0; - prolongation[1](35,14) = 1.0/16.0; - prolongation[1](35,32) = -5.0/16.0; - prolongation[1](35,33) = 15.0/16.0; - prolongation[1](36,9) = -5.0/256.0; - prolongation[1](36,13) = -1.0/256.0; - prolongation[1](36,17) = -5.0/256.0; - prolongation[1](36,21) = -1.0/256.0; - prolongation[1](36,33) = -15.0/256.0; - prolongation[1](36,35) = 5.0/256.0; - prolongation[1](36,37) = -15.0/256.0; - prolongation[1](36,39) = 5.0/256.0; - prolongation[1](36,41) = 45.0/256.0; - prolongation[1](36,43) = 45.0/256.0; - prolongation[1](36,49) = 9.0/256.0; - prolongation[1](36,51) = 9.0/256.0; - prolongation[1](36,57) = 135.0/256.0; - prolongation[1](36,59) = 135.0/256.0; - prolongation[1](36,61) = -45.0/256.0; - prolongation[1](36,63) = -45.0/256.0; - prolongation[1](37,0) = -5.0/4096.0; - prolongation[1](37,1) = -25.0/4096.0; - prolongation[1](37,2) = -5.0/4096.0; - prolongation[1](37,3) = -1.0/4096.0; - prolongation[1](37,4) = -5.0/4096.0; - prolongation[1](37,5) = -25.0/4096.0; - prolongation[1](37,6) = -5.0/4096.0; - prolongation[1](37,7) = -1.0/4096.0; - prolongation[1](37,8) = 25.0/4096.0; - prolongation[1](37,9) = -75.0/4096.0; - prolongation[1](37,10) = -75.0/4096.0; - prolongation[1](37,11) = 25.0/4096.0; - prolongation[1](37,12) = 5.0/4096.0; - prolongation[1](37,13) = -15.0/4096.0; - prolongation[1](37,14) = -15.0/4096.0; - prolongation[1](37,15) = 5.0/4096.0; - prolongation[1](37,16) = 25.0/4096.0; - prolongation[1](37,17) = -75.0/4096.0; - prolongation[1](37,18) = -75.0/4096.0; - prolongation[1](37,19) = 25.0/4096.0; - prolongation[1](37,20) = 5.0/4096.0; - prolongation[1](37,21) = -15.0/4096.0; - prolongation[1](37,22) = -15.0/4096.0; - prolongation[1](37,23) = 5.0/4096.0; - prolongation[1](37,24) = 45.0/4096.0; - prolongation[1](37,25) = 45.0/4096.0; - prolongation[1](37,26) = 225.0/4096.0; - prolongation[1](37,27) = 225.0/4096.0; - prolongation[1](37,28) = 45.0/4096.0; - prolongation[1](37,29) = 45.0/4096.0; - prolongation[1](37,30) = 9.0/4096.0; - prolongation[1](37,31) = 9.0/4096.0; - prolongation[1](37,32) = 75.0/4096.0; - prolongation[1](37,33) = -225.0/4096.0; - prolongation[1](37,34) = -25.0/4096.0; - prolongation[1](37,35) = 75.0/4096.0; - prolongation[1](37,36) = 75.0/4096.0; - prolongation[1](37,37) = -225.0/4096.0; - prolongation[1](37,38) = -25.0/4096.0; - prolongation[1](37,39) = 75.0/4096.0; - prolongation[1](37,40) = -225.0/4096.0; - prolongation[1](37,41) = 675.0/4096.0; - prolongation[1](37,42) = -225.0/4096.0; - prolongation[1](37,43) = 675.0/4096.0; - prolongation[1](37,44) = 675.0/4096.0; - prolongation[1](37,45) = 675.0/4096.0; - prolongation[1](37,46) = -225.0/4096.0; - prolongation[1](37,47) = -225.0/4096.0; - prolongation[1](37,48) = -45.0/4096.0; - prolongation[1](37,49) = 135.0/4096.0; - prolongation[1](37,50) = -45.0/4096.0; - prolongation[1](37,51) = 135.0/4096.0; - prolongation[1](37,52) = 135.0/4096.0; - prolongation[1](37,53) = 135.0/4096.0; - prolongation[1](37,54) = -45.0/4096.0; - prolongation[1](37,55) = -45.0/4096.0; - prolongation[1](37,56) = -675.0/4096.0; - prolongation[1](37,57) = 2025.0/4096.0; - prolongation[1](37,58) = -675.0/4096.0; - prolongation[1](37,59) = 2025.0/4096.0; - prolongation[1](37,60) = 225.0/4096.0; - prolongation[1](37,61) = -675.0/4096.0; - prolongation[1](37,62) = 225.0/4096.0; - prolongation[1](37,63) = -675.0/4096.0; - prolongation[1](38,33) = -1.0/16.0; - prolongation[1](38,37) = -1.0/16.0; - prolongation[1](38,57) = 9.0/16.0; - prolongation[1](38,59) = 9.0/16.0; - prolongation[1](39,10) = -5.0/256.0; - prolongation[1](39,14) = -1.0/256.0; - prolongation[1](39,18) = -5.0/256.0; - prolongation[1](39,22) = -1.0/256.0; - prolongation[1](39,32) = 5.0/256.0; - prolongation[1](39,33) = -15.0/256.0; - prolongation[1](39,36) = 5.0/256.0; - prolongation[1](39,37) = -15.0/256.0; - prolongation[1](39,44) = 45.0/256.0; - prolongation[1](39,45) = 45.0/256.0; - prolongation[1](39,52) = 9.0/256.0; - prolongation[1](39,53) = 9.0/256.0; - prolongation[1](39,56) = -45.0/256.0; - prolongation[1](39,57) = 135.0/256.0; - prolongation[1](39,58) = -45.0/256.0; - prolongation[1](39,59) = 135.0/256.0; - prolongation[1](40,9) = 5.0/16.0; - prolongation[1](40,17) = 1.0/16.0; - prolongation[1](40,41) = 15.0/16.0; - prolongation[1](40,43) = -5.0/16.0; - prolongation[1](41,0) = 5.0/256.0; - prolongation[1](41,1) = 25.0/256.0; - prolongation[1](41,4) = 1.0/256.0; - prolongation[1](41,5) = 5.0/256.0; - prolongation[1](41,8) = -25.0/256.0; - prolongation[1](41,9) = 75.0/256.0; - prolongation[1](41,16) = -5.0/256.0; - prolongation[1](41,17) = 15.0/256.0; - prolongation[1](41,24) = 15.0/256.0; - prolongation[1](41,25) = -5.0/256.0; - prolongation[1](41,26) = 75.0/256.0; - prolongation[1](41,27) = -25.0/256.0; - prolongation[1](41,40) = -75.0/256.0; - prolongation[1](41,41) = 225.0/256.0; - prolongation[1](41,42) = 25.0/256.0; - prolongation[1](41,43) = -75.0/256.0; - prolongation[1](42,41) = 1.0; - prolongation[1](43,24) = 1.0/16.0; - prolongation[1](43,26) = 5.0/16.0; - prolongation[1](43,40) = -5.0/16.0; - prolongation[1](43,41) = 15.0/16.0; - prolongation[1](44,1) = 25.0/256.0; - prolongation[1](44,2) = 5.0/256.0; - prolongation[1](44,5) = 5.0/256.0; - prolongation[1](44,6) = 1.0/256.0; - prolongation[1](44,10) = 75.0/256.0; - prolongation[1](44,11) = -25.0/256.0; - prolongation[1](44,18) = 15.0/256.0; - prolongation[1](44,19) = -5.0/256.0; - prolongation[1](44,26) = 75.0/256.0; - prolongation[1](44,27) = -25.0/256.0; - prolongation[1](44,28) = 15.0/256.0; - prolongation[1](44,29) = -5.0/256.0; - prolongation[1](44,44) = 225.0/256.0; - prolongation[1](44,45) = -75.0/256.0; - prolongation[1](44,46) = -75.0/256.0; - prolongation[1](44,47) = 25.0/256.0; - prolongation[1](45,26) = 5.0/16.0; - prolongation[1](45,28) = 1.0/16.0; - prolongation[1](45,44) = 15.0/16.0; - prolongation[1](45,46) = -5.0/16.0; - prolongation[1](46,10) = 5.0/16.0; - prolongation[1](46,18) = 1.0/16.0; - prolongation[1](46,44) = 15.0/16.0; - prolongation[1](46,45) = -5.0/16.0; - prolongation[1](47,44) = 1.0; - prolongation[1](48,9) = -5.0/256.0; - prolongation[1](48,13) = -5.0/256.0; - prolongation[1](48,17) = -1.0/256.0; - prolongation[1](48,21) = -1.0/256.0; - prolongation[1](48,33) = 45.0/256.0; - prolongation[1](48,35) = 45.0/256.0; - prolongation[1](48,37) = 9.0/256.0; - prolongation[1](48,39) = 9.0/256.0; - prolongation[1](48,41) = -15.0/256.0; - prolongation[1](48,43) = 5.0/256.0; - prolongation[1](48,49) = -15.0/256.0; - prolongation[1](48,51) = 5.0/256.0; - prolongation[1](48,57) = 135.0/256.0; - prolongation[1](48,59) = -45.0/256.0; - prolongation[1](48,61) = 135.0/256.0; - prolongation[1](48,63) = -45.0/256.0; - prolongation[1](49,0) = -5.0/4096.0; - prolongation[1](49,1) = -25.0/4096.0; - prolongation[1](49,2) = -25.0/4096.0; - prolongation[1](49,3) = -5.0/4096.0; - prolongation[1](49,4) = -1.0/4096.0; - prolongation[1](49,5) = -5.0/4096.0; - prolongation[1](49,6) = -5.0/4096.0; - prolongation[1](49,7) = -1.0/4096.0; - prolongation[1](49,8) = 25.0/4096.0; - prolongation[1](49,9) = -75.0/4096.0; - prolongation[1](49,10) = 225.0/4096.0; - prolongation[1](49,11) = 225.0/4096.0; - prolongation[1](49,12) = 25.0/4096.0; - prolongation[1](49,13) = -75.0/4096.0; - prolongation[1](49,14) = 45.0/4096.0; - prolongation[1](49,15) = 45.0/4096.0; - prolongation[1](49,16) = 5.0/4096.0; - prolongation[1](49,17) = -15.0/4096.0; - prolongation[1](49,18) = 45.0/4096.0; - prolongation[1](49,19) = 45.0/4096.0; - prolongation[1](49,20) = 5.0/4096.0; - prolongation[1](49,21) = -15.0/4096.0; - prolongation[1](49,22) = 9.0/4096.0; - prolongation[1](49,23) = 9.0/4096.0; - prolongation[1](49,24) = -15.0/4096.0; - prolongation[1](49,25) = 5.0/4096.0; - prolongation[1](49,26) = -75.0/4096.0; - prolongation[1](49,27) = 25.0/4096.0; - prolongation[1](49,28) = -75.0/4096.0; - prolongation[1](49,29) = 25.0/4096.0; - prolongation[1](49,30) = -15.0/4096.0; - prolongation[1](49,31) = 5.0/4096.0; - prolongation[1](49,32) = -225.0/4096.0; - prolongation[1](49,33) = 675.0/4096.0; - prolongation[1](49,34) = -225.0/4096.0; - prolongation[1](49,35) = 675.0/4096.0; - prolongation[1](49,36) = -45.0/4096.0; - prolongation[1](49,37) = 135.0/4096.0; - prolongation[1](49,38) = -45.0/4096.0; - prolongation[1](49,39) = 135.0/4096.0; - prolongation[1](49,40) = 75.0/4096.0; - prolongation[1](49,41) = -225.0/4096.0; - prolongation[1](49,42) = -25.0/4096.0; - prolongation[1](49,43) = 75.0/4096.0; - prolongation[1](49,44) = 675.0/4096.0; - prolongation[1](49,45) = -225.0/4096.0; - prolongation[1](49,46) = 675.0/4096.0; - prolongation[1](49,47) = -225.0/4096.0; - prolongation[1](49,48) = 75.0/4096.0; - prolongation[1](49,49) = -225.0/4096.0; - prolongation[1](49,50) = -25.0/4096.0; - prolongation[1](49,51) = 75.0/4096.0; - prolongation[1](49,52) = 135.0/4096.0; - prolongation[1](49,53) = -45.0/4096.0; - prolongation[1](49,54) = 135.0/4096.0; - prolongation[1](49,55) = -45.0/4096.0; - prolongation[1](49,56) = -675.0/4096.0; - prolongation[1](49,57) = 2025.0/4096.0; - prolongation[1](49,58) = 225.0/4096.0; - prolongation[1](49,59) = -675.0/4096.0; - prolongation[1](49,60) = -675.0/4096.0; - prolongation[1](49,61) = 2025.0/4096.0; - prolongation[1](49,62) = 225.0/4096.0; - prolongation[1](49,63) = -675.0/4096.0; - prolongation[1](50,41) = -1.0/16.0; - prolongation[1](50,49) = -1.0/16.0; - prolongation[1](50,57) = 9.0/16.0; - prolongation[1](50,61) = 9.0/16.0; - prolongation[1](51,24) = -1.0/256.0; - prolongation[1](51,26) = -5.0/256.0; - prolongation[1](51,28) = -5.0/256.0; - prolongation[1](51,30) = -1.0/256.0; - prolongation[1](51,40) = 5.0/256.0; - prolongation[1](51,41) = -15.0/256.0; - prolongation[1](51,44) = 45.0/256.0; - prolongation[1](51,46) = 45.0/256.0; - prolongation[1](51,48) = 5.0/256.0; - prolongation[1](51,49) = -15.0/256.0; - prolongation[1](51,52) = 9.0/256.0; - prolongation[1](51,54) = 9.0/256.0; - prolongation[1](51,56) = -45.0/256.0; - prolongation[1](51,57) = 135.0/256.0; - prolongation[1](51,60) = -45.0/256.0; - prolongation[1](51,61) = 135.0/256.0; - prolongation[1](52,0) = -25.0/4096.0; - prolongation[1](52,1) = -25.0/4096.0; - prolongation[1](52,2) = -5.0/4096.0; - prolongation[1](52,3) = -5.0/4096.0; - prolongation[1](52,4) = -5.0/4096.0; - prolongation[1](52,5) = -5.0/4096.0; - prolongation[1](52,6) = -1.0/4096.0; - prolongation[1](52,7) = -1.0/4096.0; - prolongation[1](52,8) = 225.0/4096.0; - prolongation[1](52,9) = 225.0/4096.0; - prolongation[1](52,10) = -75.0/4096.0; - prolongation[1](52,11) = 25.0/4096.0; - prolongation[1](52,12) = 45.0/4096.0; - prolongation[1](52,13) = 45.0/4096.0; - prolongation[1](52,14) = -75.0/4096.0; - prolongation[1](52,15) = 25.0/4096.0; - prolongation[1](52,16) = 45.0/4096.0; - prolongation[1](52,17) = 45.0/4096.0; - prolongation[1](52,18) = -15.0/4096.0; - prolongation[1](52,19) = 5.0/4096.0; - prolongation[1](52,20) = 9.0/4096.0; - prolongation[1](52,21) = 9.0/4096.0; - prolongation[1](52,22) = -15.0/4096.0; - prolongation[1](52,23) = 5.0/4096.0; - prolongation[1](52,24) = -75.0/4096.0; - prolongation[1](52,25) = 25.0/4096.0; - prolongation[1](52,26) = -75.0/4096.0; - prolongation[1](52,27) = 25.0/4096.0; - prolongation[1](52,28) = -15.0/4096.0; - prolongation[1](52,29) = 5.0/4096.0; - prolongation[1](52,30) = -15.0/4096.0; - prolongation[1](52,31) = 5.0/4096.0; - prolongation[1](52,32) = 675.0/4096.0; - prolongation[1](52,33) = 675.0/4096.0; - prolongation[1](52,34) = -225.0/4096.0; - prolongation[1](52,35) = -225.0/4096.0; - prolongation[1](52,36) = 135.0/4096.0; - prolongation[1](52,37) = 135.0/4096.0; - prolongation[1](52,38) = -45.0/4096.0; - prolongation[1](52,39) = -45.0/4096.0; - prolongation[1](52,40) = 675.0/4096.0; - prolongation[1](52,41) = 675.0/4096.0; - prolongation[1](52,42) = -225.0/4096.0; - prolongation[1](52,43) = -225.0/4096.0; - prolongation[1](52,44) = -225.0/4096.0; - prolongation[1](52,45) = 75.0/4096.0; - prolongation[1](52,46) = 75.0/4096.0; - prolongation[1](52,47) = -25.0/4096.0; - prolongation[1](52,48) = 135.0/4096.0; - prolongation[1](52,49) = 135.0/4096.0; - prolongation[1](52,50) = -45.0/4096.0; - prolongation[1](52,51) = -45.0/4096.0; - prolongation[1](52,52) = -225.0/4096.0; - prolongation[1](52,53) = 75.0/4096.0; - prolongation[1](52,54) = 75.0/4096.0; - prolongation[1](52,55) = -25.0/4096.0; - prolongation[1](52,56) = 2025.0/4096.0; - prolongation[1](52,57) = 2025.0/4096.0; - prolongation[1](52,58) = -675.0/4096.0; - prolongation[1](52,59) = -675.0/4096.0; - prolongation[1](52,60) = -675.0/4096.0; - prolongation[1](52,61) = -675.0/4096.0; - prolongation[1](52,62) = 225.0/4096.0; - prolongation[1](52,63) = 225.0/4096.0; - prolongation[1](53,24) = -5.0/256.0; - prolongation[1](53,26) = -5.0/256.0; - prolongation[1](53,28) = -1.0/256.0; - prolongation[1](53,30) = -1.0/256.0; - prolongation[1](53,40) = 45.0/256.0; - prolongation[1](53,41) = 45.0/256.0; - prolongation[1](53,44) = -15.0/256.0; - prolongation[1](53,46) = 5.0/256.0; - prolongation[1](53,48) = 9.0/256.0; - prolongation[1](53,49) = 9.0/256.0; - prolongation[1](53,52) = -15.0/256.0; - prolongation[1](53,54) = 5.0/256.0; - prolongation[1](53,56) = 135.0/256.0; - prolongation[1](53,57) = 135.0/256.0; - prolongation[1](53,60) = -45.0/256.0; - prolongation[1](53,61) = -45.0/256.0; - prolongation[1](54,10) = -5.0/256.0; - prolongation[1](54,14) = -5.0/256.0; - prolongation[1](54,18) = -1.0/256.0; - prolongation[1](54,22) = -1.0/256.0; - prolongation[1](54,32) = 45.0/256.0; - prolongation[1](54,33) = 45.0/256.0; - prolongation[1](54,36) = 9.0/256.0; - prolongation[1](54,37) = 9.0/256.0; - prolongation[1](54,44) = -15.0/256.0; - prolongation[1](54,45) = 5.0/256.0; - prolongation[1](54,52) = -15.0/256.0; - prolongation[1](54,53) = 5.0/256.0; - prolongation[1](54,56) = 135.0/256.0; - prolongation[1](54,57) = 135.0/256.0; - prolongation[1](54,58) = -45.0/256.0; - prolongation[1](54,59) = -45.0/256.0; - prolongation[1](55,44) = -1.0/16.0; - prolongation[1](55,52) = -1.0/16.0; - prolongation[1](55,56) = 9.0/16.0; - prolongation[1](55,57) = 9.0/16.0; - prolongation[1](56,9) = 25.0/256.0; - prolongation[1](56,13) = 5.0/256.0; - prolongation[1](56,17) = 5.0/256.0; - prolongation[1](56,21) = 1.0/256.0; - prolongation[1](56,33) = 75.0/256.0; - prolongation[1](56,35) = -25.0/256.0; - prolongation[1](56,37) = 15.0/256.0; - prolongation[1](56,39) = -5.0/256.0; - prolongation[1](56,41) = 75.0/256.0; - prolongation[1](56,43) = -25.0/256.0; - prolongation[1](56,49) = 15.0/256.0; - prolongation[1](56,51) = -5.0/256.0; - prolongation[1](56,57) = 225.0/256.0; - prolongation[1](56,59) = -75.0/256.0; - prolongation[1](56,61) = -75.0/256.0; - prolongation[1](56,63) = 25.0/256.0; - prolongation[1](57,0) = 25.0/4096.0; - prolongation[1](57,1) = 125.0/4096.0; - prolongation[1](57,2) = 25.0/4096.0; - prolongation[1](57,3) = 5.0/4096.0; - prolongation[1](57,4) = 5.0/4096.0; - prolongation[1](57,5) = 25.0/4096.0; - prolongation[1](57,6) = 5.0/4096.0; - prolongation[1](57,7) = 1.0/4096.0; - prolongation[1](57,8) = -125.0/4096.0; - prolongation[1](57,9) = 375.0/4096.0; - prolongation[1](57,10) = 375.0/4096.0; - prolongation[1](57,11) = -125.0/4096.0; - prolongation[1](57,12) = -25.0/4096.0; - prolongation[1](57,13) = 75.0/4096.0; - prolongation[1](57,14) = 75.0/4096.0; - prolongation[1](57,15) = -25.0/4096.0; - prolongation[1](57,16) = -25.0/4096.0; - prolongation[1](57,17) = 75.0/4096.0; - prolongation[1](57,18) = 75.0/4096.0; - prolongation[1](57,19) = -25.0/4096.0; - prolongation[1](57,20) = -5.0/4096.0; - prolongation[1](57,21) = 15.0/4096.0; - prolongation[1](57,22) = 15.0/4096.0; - prolongation[1](57,23) = -5.0/4096.0; - prolongation[1](57,24) = 75.0/4096.0; - prolongation[1](57,25) = -25.0/4096.0; - prolongation[1](57,26) = 375.0/4096.0; - prolongation[1](57,27) = -125.0/4096.0; - prolongation[1](57,28) = 75.0/4096.0; - prolongation[1](57,29) = -25.0/4096.0; - prolongation[1](57,30) = 15.0/4096.0; - prolongation[1](57,31) = -5.0/4096.0; - prolongation[1](57,32) = -375.0/4096.0; - prolongation[1](57,33) = 1125.0/4096.0; - prolongation[1](57,34) = 125.0/4096.0; - prolongation[1](57,35) = -375.0/4096.0; - prolongation[1](57,36) = -75.0/4096.0; - prolongation[1](57,37) = 225.0/4096.0; - prolongation[1](57,38) = 25.0/4096.0; - prolongation[1](57,39) = -75.0/4096.0; - prolongation[1](57,40) = -375.0/4096.0; - prolongation[1](57,41) = 1125.0/4096.0; - prolongation[1](57,42) = 125.0/4096.0; - prolongation[1](57,43) = -375.0/4096.0; - prolongation[1](57,44) = 1125.0/4096.0; - prolongation[1](57,45) = -375.0/4096.0; - prolongation[1](57,46) = -375.0/4096.0; - prolongation[1](57,47) = 125.0/4096.0; - prolongation[1](57,48) = -75.0/4096.0; - prolongation[1](57,49) = 225.0/4096.0; - prolongation[1](57,50) = 25.0/4096.0; - prolongation[1](57,51) = -75.0/4096.0; - prolongation[1](57,52) = 225.0/4096.0; - prolongation[1](57,53) = -75.0/4096.0; - prolongation[1](57,54) = -75.0/4096.0; - prolongation[1](57,55) = 25.0/4096.0; - prolongation[1](57,56) = -1125.0/4096.0; - prolongation[1](57,57) = 3375.0/4096.0; - prolongation[1](57,58) = 375.0/4096.0; - prolongation[1](57,59) = -1125.0/4096.0; - prolongation[1](57,60) = 375.0/4096.0; - prolongation[1](57,61) = -1125.0/4096.0; - prolongation[1](57,62) = -125.0/4096.0; - prolongation[1](57,63) = 375.0/4096.0; - prolongation[1](58,41) = 5.0/16.0; - prolongation[1](58,49) = 1.0/16.0; - prolongation[1](58,57) = 15.0/16.0; - prolongation[1](58,61) = -5.0/16.0; - prolongation[1](59,24) = 5.0/256.0; - prolongation[1](59,26) = 25.0/256.0; - prolongation[1](59,28) = 5.0/256.0; - prolongation[1](59,30) = 1.0/256.0; - prolongation[1](59,40) = -25.0/256.0; - prolongation[1](59,41) = 75.0/256.0; - prolongation[1](59,44) = 75.0/256.0; - prolongation[1](59,46) = -25.0/256.0; - prolongation[1](59,48) = -5.0/256.0; - prolongation[1](59,49) = 15.0/256.0; - prolongation[1](59,52) = 15.0/256.0; - prolongation[1](59,54) = -5.0/256.0; - prolongation[1](59,56) = -75.0/256.0; - prolongation[1](59,57) = 225.0/256.0; - prolongation[1](59,60) = 25.0/256.0; - prolongation[1](59,61) = -75.0/256.0; - prolongation[1](60,33) = 5.0/16.0; - prolongation[1](60,37) = 1.0/16.0; - prolongation[1](60,57) = 15.0/16.0; - prolongation[1](60,59) = -5.0/16.0; - prolongation[1](61,10) = 25.0/256.0; - prolongation[1](61,14) = 5.0/256.0; - prolongation[1](61,18) = 5.0/256.0; - prolongation[1](61,22) = 1.0/256.0; - prolongation[1](61,32) = -25.0/256.0; - prolongation[1](61,33) = 75.0/256.0; - prolongation[1](61,36) = -5.0/256.0; - prolongation[1](61,37) = 15.0/256.0; - prolongation[1](61,44) = 75.0/256.0; - prolongation[1](61,45) = -25.0/256.0; - prolongation[1](61,52) = 15.0/256.0; - prolongation[1](61,53) = -5.0/256.0; - prolongation[1](61,56) = -75.0/256.0; - prolongation[1](61,57) = 225.0/256.0; - prolongation[1](61,58) = 25.0/256.0; - prolongation[1](61,59) = -75.0/256.0; - prolongation[1](62,57) = 1.0; - prolongation[1](63,44) = 5.0/16.0; - prolongation[1](63,52) = 1.0/16.0; - prolongation[1](63,56) = -5.0/16.0; - prolongation[1](63,57) = 15.0/16.0; - prolongation[2](0,0) = 1.0/256.0; - prolongation[2](0,1) = 1.0/256.0; - prolongation[2](0,2) = 1.0/256.0; - prolongation[2](0,3) = 1.0/256.0; - prolongation[2](0,8) = -9.0/256.0; - prolongation[2](0,9) = -9.0/256.0; - prolongation[2](0,10) = -9.0/256.0; - prolongation[2](0,11) = -9.0/256.0; - prolongation[2](0,12) = -9.0/256.0; - prolongation[2](0,13) = -9.0/256.0; - prolongation[2](0,14) = -9.0/256.0; - prolongation[2](0,15) = -9.0/256.0; - prolongation[2](0,32) = 81.0/256.0; - prolongation[2](0,33) = 81.0/256.0; - prolongation[2](0,34) = 81.0/256.0; - prolongation[2](0,35) = 81.0/256.0; - prolongation[2](1,1) = -1.0/16.0; - prolongation[2](1,2) = -1.0/16.0; - prolongation[2](1,10) = 9.0/16.0; - prolongation[2](1,11) = 9.0/16.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,2) = -1.0/16.0; - prolongation[2](3,3) = -1.0/16.0; - prolongation[2](3,12) = 9.0/16.0; - prolongation[2](3,13) = 9.0/16.0; - prolongation[2](4,0) = -1.0/4096.0; - prolongation[2](4,1) = -1.0/4096.0; - prolongation[2](4,2) = -1.0/4096.0; - prolongation[2](4,3) = -1.0/4096.0; - prolongation[2](4,4) = -1.0/4096.0; - prolongation[2](4,5) = -1.0/4096.0; - prolongation[2](4,6) = -1.0/4096.0; - prolongation[2](4,7) = -1.0/4096.0; - prolongation[2](4,8) = 9.0/4096.0; - prolongation[2](4,9) = 9.0/4096.0; - prolongation[2](4,10) = 9.0/4096.0; - prolongation[2](4,11) = 9.0/4096.0; - prolongation[2](4,12) = 9.0/4096.0; - prolongation[2](4,13) = 9.0/4096.0; - prolongation[2](4,14) = 9.0/4096.0; - prolongation[2](4,15) = 9.0/4096.0; - prolongation[2](4,16) = 9.0/4096.0; - prolongation[2](4,17) = 9.0/4096.0; - prolongation[2](4,18) = 9.0/4096.0; - prolongation[2](4,19) = 9.0/4096.0; - prolongation[2](4,20) = 9.0/4096.0; - prolongation[2](4,21) = 9.0/4096.0; - prolongation[2](4,22) = 9.0/4096.0; - prolongation[2](4,23) = 9.0/4096.0; - prolongation[2](4,24) = 9.0/4096.0; - prolongation[2](4,25) = 9.0/4096.0; - prolongation[2](4,26) = 9.0/4096.0; - prolongation[2](4,27) = 9.0/4096.0; - prolongation[2](4,28) = 9.0/4096.0; - prolongation[2](4,29) = 9.0/4096.0; - prolongation[2](4,30) = 9.0/4096.0; - prolongation[2](4,31) = 9.0/4096.0; - prolongation[2](4,32) = -81.0/4096.0; - prolongation[2](4,33) = -81.0/4096.0; - prolongation[2](4,34) = -81.0/4096.0; - prolongation[2](4,35) = -81.0/4096.0; - prolongation[2](4,36) = -81.0/4096.0; - prolongation[2](4,37) = -81.0/4096.0; - prolongation[2](4,38) = -81.0/4096.0; - prolongation[2](4,39) = -81.0/4096.0; - prolongation[2](4,40) = -81.0/4096.0; - prolongation[2](4,41) = -81.0/4096.0; - prolongation[2](4,42) = -81.0/4096.0; - prolongation[2](4,43) = -81.0/4096.0; - prolongation[2](4,44) = -81.0/4096.0; - prolongation[2](4,45) = -81.0/4096.0; - prolongation[2](4,46) = -81.0/4096.0; - prolongation[2](4,47) = -81.0/4096.0; - prolongation[2](4,48) = -81.0/4096.0; - prolongation[2](4,49) = -81.0/4096.0; - prolongation[2](4,50) = -81.0/4096.0; - prolongation[2](4,51) = -81.0/4096.0; - prolongation[2](4,52) = -81.0/4096.0; - prolongation[2](4,53) = -81.0/4096.0; - prolongation[2](4,54) = -81.0/4096.0; - prolongation[2](4,55) = -81.0/4096.0; - prolongation[2](4,56) = 729.0/4096.0; - prolongation[2](4,57) = 729.0/4096.0; - prolongation[2](4,58) = 729.0/4096.0; - prolongation[2](4,59) = 729.0/4096.0; - prolongation[2](4,60) = 729.0/4096.0; - prolongation[2](4,61) = 729.0/4096.0; - prolongation[2](4,62) = 729.0/4096.0; - prolongation[2](4,63) = 729.0/4096.0; - prolongation[2](5,1) = 1.0/256.0; - prolongation[2](5,2) = 1.0/256.0; - prolongation[2](5,5) = 1.0/256.0; - prolongation[2](5,6) = 1.0/256.0; - prolongation[2](5,10) = -9.0/256.0; - prolongation[2](5,11) = -9.0/256.0; - prolongation[2](5,18) = -9.0/256.0; - prolongation[2](5,19) = -9.0/256.0; - prolongation[2](5,26) = -9.0/256.0; - prolongation[2](5,27) = -9.0/256.0; - prolongation[2](5,28) = -9.0/256.0; - prolongation[2](5,29) = -9.0/256.0; - prolongation[2](5,44) = 81.0/256.0; - prolongation[2](5,45) = 81.0/256.0; - prolongation[2](5,46) = 81.0/256.0; - prolongation[2](5,47) = 81.0/256.0; - prolongation[2](6,2) = -1.0/16.0; - prolongation[2](6,6) = -1.0/16.0; - prolongation[2](6,28) = 9.0/16.0; - prolongation[2](6,29) = 9.0/16.0; - prolongation[2](7,2) = 1.0/256.0; - prolongation[2](7,3) = 1.0/256.0; - prolongation[2](7,6) = 1.0/256.0; - prolongation[2](7,7) = 1.0/256.0; - prolongation[2](7,12) = -9.0/256.0; - prolongation[2](7,13) = -9.0/256.0; - prolongation[2](7,20) = -9.0/256.0; - prolongation[2](7,21) = -9.0/256.0; - prolongation[2](7,28) = -9.0/256.0; - prolongation[2](7,29) = -9.0/256.0; - prolongation[2](7,30) = -9.0/256.0; - prolongation[2](7,31) = -9.0/256.0; - prolongation[2](7,48) = 81.0/256.0; - prolongation[2](7,49) = 81.0/256.0; - prolongation[2](7,50) = 81.0/256.0; - prolongation[2](7,51) = 81.0/256.0; - prolongation[2](8,9) = -1.0/16.0; - prolongation[2](8,13) = -1.0/16.0; - prolongation[2](8,33) = 9.0/16.0; - prolongation[2](8,35) = 9.0/16.0; - prolongation[2](9,0) = -1.0/256.0; - prolongation[2](9,1) = -5.0/256.0; - prolongation[2](9,2) = -5.0/256.0; - prolongation[2](9,3) = -1.0/256.0; - prolongation[2](9,8) = 5.0/256.0; - prolongation[2](9,9) = -15.0/256.0; - prolongation[2](9,10) = 45.0/256.0; - prolongation[2](9,11) = 45.0/256.0; - prolongation[2](9,12) = 5.0/256.0; - prolongation[2](9,13) = -15.0/256.0; - prolongation[2](9,14) = 9.0/256.0; - prolongation[2](9,15) = 9.0/256.0; - prolongation[2](9,32) = -45.0/256.0; - prolongation[2](9,33) = 135.0/256.0; - prolongation[2](9,34) = -45.0/256.0; - prolongation[2](9,35) = 135.0/256.0; - prolongation[2](10,11) = 1.0; - prolongation[2](11,1) = 1.0/16.0; - prolongation[2](11,2) = 5.0/16.0; - prolongation[2](11,10) = -5.0/16.0; - prolongation[2](11,11) = 15.0/16.0; - prolongation[2](12,13) = 1.0; - prolongation[2](13,2) = 5.0/16.0; - prolongation[2](13,3) = 1.0/16.0; - prolongation[2](13,12) = -5.0/16.0; - prolongation[2](13,13) = 15.0/16.0; - prolongation[2](14,11) = -1.0/16.0; - prolongation[2](14,15) = -1.0/16.0; - prolongation[2](14,34) = 9.0/16.0; - prolongation[2](14,35) = 9.0/16.0; - prolongation[2](15,0) = -1.0/256.0; - prolongation[2](15,1) = -1.0/256.0; - prolongation[2](15,2) = -5.0/256.0; - prolongation[2](15,3) = -5.0/256.0; - prolongation[2](15,8) = 9.0/256.0; - prolongation[2](15,9) = 9.0/256.0; - prolongation[2](15,10) = 5.0/256.0; - prolongation[2](15,11) = -15.0/256.0; - prolongation[2](15,12) = 45.0/256.0; - prolongation[2](15,13) = 45.0/256.0; - prolongation[2](15,14) = 5.0/256.0; - prolongation[2](15,15) = -15.0/256.0; - prolongation[2](15,32) = -45.0/256.0; - prolongation[2](15,33) = -45.0/256.0; - prolongation[2](15,34) = 135.0/256.0; - prolongation[2](15,35) = 135.0/256.0; - prolongation[2](16,9) = 1.0/256.0; - prolongation[2](16,13) = 1.0/256.0; - prolongation[2](16,17) = 1.0/256.0; - prolongation[2](16,21) = 1.0/256.0; - prolongation[2](16,33) = -9.0/256.0; - prolongation[2](16,35) = -9.0/256.0; - prolongation[2](16,37) = -9.0/256.0; - prolongation[2](16,39) = -9.0/256.0; - prolongation[2](16,41) = -9.0/256.0; - prolongation[2](16,43) = -9.0/256.0; - prolongation[2](16,49) = -9.0/256.0; - prolongation[2](16,51) = -9.0/256.0; - prolongation[2](16,57) = 81.0/256.0; - prolongation[2](16,59) = 81.0/256.0; - prolongation[2](16,61) = 81.0/256.0; - prolongation[2](16,63) = 81.0/256.0; - prolongation[2](17,0) = 1.0/4096.0; - prolongation[2](17,1) = 5.0/4096.0; - prolongation[2](17,2) = 5.0/4096.0; - prolongation[2](17,3) = 1.0/4096.0; - prolongation[2](17,4) = 1.0/4096.0; - prolongation[2](17,5) = 5.0/4096.0; - prolongation[2](17,6) = 5.0/4096.0; - prolongation[2](17,7) = 1.0/4096.0; - prolongation[2](17,8) = -5.0/4096.0; - prolongation[2](17,9) = 15.0/4096.0; - prolongation[2](17,10) = -45.0/4096.0; - prolongation[2](17,11) = -45.0/4096.0; - prolongation[2](17,12) = -5.0/4096.0; - prolongation[2](17,13) = 15.0/4096.0; - prolongation[2](17,14) = -9.0/4096.0; - prolongation[2](17,15) = -9.0/4096.0; - prolongation[2](17,16) = -5.0/4096.0; - prolongation[2](17,17) = 15.0/4096.0; - prolongation[2](17,18) = -45.0/4096.0; - prolongation[2](17,19) = -45.0/4096.0; - prolongation[2](17,20) = -5.0/4096.0; - prolongation[2](17,21) = 15.0/4096.0; - prolongation[2](17,22) = -9.0/4096.0; - prolongation[2](17,23) = -9.0/4096.0; - prolongation[2](17,24) = -9.0/4096.0; - prolongation[2](17,25) = -9.0/4096.0; - prolongation[2](17,26) = -45.0/4096.0; - prolongation[2](17,27) = -45.0/4096.0; - prolongation[2](17,28) = -45.0/4096.0; - prolongation[2](17,29) = -45.0/4096.0; - prolongation[2](17,30) = -9.0/4096.0; - prolongation[2](17,31) = -9.0/4096.0; - prolongation[2](17,32) = 45.0/4096.0; - prolongation[2](17,33) = -135.0/4096.0; - prolongation[2](17,34) = 45.0/4096.0; - prolongation[2](17,35) = -135.0/4096.0; - prolongation[2](17,36) = 45.0/4096.0; - prolongation[2](17,37) = -135.0/4096.0; - prolongation[2](17,38) = 45.0/4096.0; - prolongation[2](17,39) = -135.0/4096.0; - prolongation[2](17,40) = 45.0/4096.0; - prolongation[2](17,41) = -135.0/4096.0; - prolongation[2](17,42) = 45.0/4096.0; - prolongation[2](17,43) = -135.0/4096.0; - prolongation[2](17,44) = 405.0/4096.0; - prolongation[2](17,45) = 405.0/4096.0; - prolongation[2](17,46) = 405.0/4096.0; - prolongation[2](17,47) = 405.0/4096.0; - prolongation[2](17,48) = 45.0/4096.0; - prolongation[2](17,49) = -135.0/4096.0; - prolongation[2](17,50) = 45.0/4096.0; - prolongation[2](17,51) = -135.0/4096.0; - prolongation[2](17,52) = 81.0/4096.0; - prolongation[2](17,53) = 81.0/4096.0; - prolongation[2](17,54) = 81.0/4096.0; - prolongation[2](17,55) = 81.0/4096.0; - prolongation[2](17,56) = -405.0/4096.0; - prolongation[2](17,57) = 1215.0/4096.0; - prolongation[2](17,58) = -405.0/4096.0; - prolongation[2](17,59) = 1215.0/4096.0; - prolongation[2](17,60) = -405.0/4096.0; - prolongation[2](17,61) = 1215.0/4096.0; - prolongation[2](17,62) = -405.0/4096.0; - prolongation[2](17,63) = 1215.0/4096.0; - prolongation[2](18,11) = -1.0/16.0; - prolongation[2](18,19) = -1.0/16.0; - prolongation[2](18,46) = 9.0/16.0; - prolongation[2](18,47) = 9.0/16.0; - prolongation[2](19,1) = -1.0/256.0; - prolongation[2](19,2) = -5.0/256.0; - prolongation[2](19,5) = -1.0/256.0; - prolongation[2](19,6) = -5.0/256.0; - prolongation[2](19,10) = 5.0/256.0; - prolongation[2](19,11) = -15.0/256.0; - prolongation[2](19,18) = 5.0/256.0; - prolongation[2](19,19) = -15.0/256.0; - prolongation[2](19,26) = 9.0/256.0; - prolongation[2](19,27) = 9.0/256.0; - prolongation[2](19,28) = 45.0/256.0; - prolongation[2](19,29) = 45.0/256.0; - prolongation[2](19,44) = -45.0/256.0; - prolongation[2](19,45) = -45.0/256.0; - prolongation[2](19,46) = 135.0/256.0; - prolongation[2](19,47) = 135.0/256.0; - prolongation[2](20,13) = -1.0/16.0; - prolongation[2](20,21) = -1.0/16.0; - prolongation[2](20,49) = 9.0/16.0; - prolongation[2](20,51) = 9.0/16.0; - prolongation[2](21,2) = -5.0/256.0; - prolongation[2](21,3) = -1.0/256.0; - prolongation[2](21,6) = -5.0/256.0; - prolongation[2](21,7) = -1.0/256.0; - prolongation[2](21,12) = 5.0/256.0; - prolongation[2](21,13) = -15.0/256.0; - prolongation[2](21,20) = 5.0/256.0; - prolongation[2](21,21) = -15.0/256.0; - prolongation[2](21,28) = 45.0/256.0; - prolongation[2](21,29) = 45.0/256.0; - prolongation[2](21,30) = 9.0/256.0; - prolongation[2](21,31) = 9.0/256.0; - prolongation[2](21,48) = -45.0/256.0; - prolongation[2](21,49) = 135.0/256.0; - prolongation[2](21,50) = -45.0/256.0; - prolongation[2](21,51) = 135.0/256.0; - prolongation[2](22,11) = 1.0/256.0; - prolongation[2](22,15) = 1.0/256.0; - prolongation[2](22,19) = 1.0/256.0; - prolongation[2](22,23) = 1.0/256.0; - prolongation[2](22,34) = -9.0/256.0; - prolongation[2](22,35) = -9.0/256.0; - prolongation[2](22,38) = -9.0/256.0; - prolongation[2](22,39) = -9.0/256.0; - prolongation[2](22,46) = -9.0/256.0; - prolongation[2](22,47) = -9.0/256.0; - prolongation[2](22,54) = -9.0/256.0; - prolongation[2](22,55) = -9.0/256.0; - prolongation[2](22,60) = 81.0/256.0; - prolongation[2](22,61) = 81.0/256.0; - prolongation[2](22,62) = 81.0/256.0; - prolongation[2](22,63) = 81.0/256.0; - prolongation[2](23,0) = 1.0/4096.0; - prolongation[2](23,1) = 1.0/4096.0; - prolongation[2](23,2) = 5.0/4096.0; - prolongation[2](23,3) = 5.0/4096.0; - prolongation[2](23,4) = 1.0/4096.0; - prolongation[2](23,5) = 1.0/4096.0; - prolongation[2](23,6) = 5.0/4096.0; - prolongation[2](23,7) = 5.0/4096.0; - prolongation[2](23,8) = -9.0/4096.0; - prolongation[2](23,9) = -9.0/4096.0; - prolongation[2](23,10) = -5.0/4096.0; - prolongation[2](23,11) = 15.0/4096.0; - prolongation[2](23,12) = -45.0/4096.0; - prolongation[2](23,13) = -45.0/4096.0; - prolongation[2](23,14) = -5.0/4096.0; - prolongation[2](23,15) = 15.0/4096.0; - prolongation[2](23,16) = -9.0/4096.0; - prolongation[2](23,17) = -9.0/4096.0; - prolongation[2](23,18) = -5.0/4096.0; - prolongation[2](23,19) = 15.0/4096.0; - prolongation[2](23,20) = -45.0/4096.0; - prolongation[2](23,21) = -45.0/4096.0; - prolongation[2](23,22) = -5.0/4096.0; - prolongation[2](23,23) = 15.0/4096.0; - prolongation[2](23,24) = -9.0/4096.0; - prolongation[2](23,25) = -9.0/4096.0; - prolongation[2](23,26) = -9.0/4096.0; - prolongation[2](23,27) = -9.0/4096.0; - prolongation[2](23,28) = -45.0/4096.0; - prolongation[2](23,29) = -45.0/4096.0; - prolongation[2](23,30) = -45.0/4096.0; - prolongation[2](23,31) = -45.0/4096.0; - prolongation[2](23,32) = 45.0/4096.0; - prolongation[2](23,33) = 45.0/4096.0; - prolongation[2](23,34) = -135.0/4096.0; - prolongation[2](23,35) = -135.0/4096.0; - prolongation[2](23,36) = 45.0/4096.0; - prolongation[2](23,37) = 45.0/4096.0; - prolongation[2](23,38) = -135.0/4096.0; - prolongation[2](23,39) = -135.0/4096.0; - prolongation[2](23,40) = 81.0/4096.0; - prolongation[2](23,41) = 81.0/4096.0; - prolongation[2](23,42) = 81.0/4096.0; - prolongation[2](23,43) = 81.0/4096.0; - prolongation[2](23,44) = 45.0/4096.0; - prolongation[2](23,45) = 45.0/4096.0; - prolongation[2](23,46) = -135.0/4096.0; - prolongation[2](23,47) = -135.0/4096.0; - prolongation[2](23,48) = 405.0/4096.0; - prolongation[2](23,49) = 405.0/4096.0; - prolongation[2](23,50) = 405.0/4096.0; - prolongation[2](23,51) = 405.0/4096.0; - prolongation[2](23,52) = 45.0/4096.0; - prolongation[2](23,53) = 45.0/4096.0; - prolongation[2](23,54) = -135.0/4096.0; - prolongation[2](23,55) = -135.0/4096.0; - prolongation[2](23,56) = -405.0/4096.0; - prolongation[2](23,57) = -405.0/4096.0; - prolongation[2](23,58) = -405.0/4096.0; - prolongation[2](23,59) = -405.0/4096.0; - prolongation[2](23,60) = 1215.0/4096.0; - prolongation[2](23,61) = 1215.0/4096.0; - prolongation[2](23,62) = 1215.0/4096.0; - prolongation[2](23,63) = 1215.0/4096.0; - prolongation[2](24,0) = 5.0/4096.0; - prolongation[2](24,1) = 5.0/4096.0; - prolongation[2](24,2) = 5.0/4096.0; - prolongation[2](24,3) = 5.0/4096.0; - prolongation[2](24,4) = 1.0/4096.0; - prolongation[2](24,5) = 1.0/4096.0; - prolongation[2](24,6) = 1.0/4096.0; - prolongation[2](24,7) = 1.0/4096.0; - prolongation[2](24,8) = -45.0/4096.0; - prolongation[2](24,9) = -45.0/4096.0; - prolongation[2](24,10) = -45.0/4096.0; - prolongation[2](24,11) = -45.0/4096.0; - prolongation[2](24,12) = -45.0/4096.0; - prolongation[2](24,13) = -45.0/4096.0; - prolongation[2](24,14) = -45.0/4096.0; - prolongation[2](24,15) = -45.0/4096.0; - prolongation[2](24,16) = -9.0/4096.0; - prolongation[2](24,17) = -9.0/4096.0; - prolongation[2](24,18) = -9.0/4096.0; - prolongation[2](24,19) = -9.0/4096.0; - prolongation[2](24,20) = -9.0/4096.0; - prolongation[2](24,21) = -9.0/4096.0; - prolongation[2](24,22) = -9.0/4096.0; - prolongation[2](24,23) = -9.0/4096.0; - prolongation[2](24,24) = 15.0/4096.0; - prolongation[2](24,25) = -5.0/4096.0; - prolongation[2](24,26) = 15.0/4096.0; - prolongation[2](24,27) = -5.0/4096.0; - prolongation[2](24,28) = 15.0/4096.0; - prolongation[2](24,29) = -5.0/4096.0; - prolongation[2](24,30) = 15.0/4096.0; - prolongation[2](24,31) = -5.0/4096.0; - prolongation[2](24,32) = 405.0/4096.0; - prolongation[2](24,33) = 405.0/4096.0; - prolongation[2](24,34) = 405.0/4096.0; - prolongation[2](24,35) = 405.0/4096.0; - prolongation[2](24,36) = 81.0/4096.0; - prolongation[2](24,37) = 81.0/4096.0; - prolongation[2](24,38) = 81.0/4096.0; - prolongation[2](24,39) = 81.0/4096.0; - prolongation[2](24,40) = -135.0/4096.0; - prolongation[2](24,41) = -135.0/4096.0; - prolongation[2](24,42) = 45.0/4096.0; - prolongation[2](24,43) = 45.0/4096.0; - prolongation[2](24,44) = -135.0/4096.0; - prolongation[2](24,45) = 45.0/4096.0; - prolongation[2](24,46) = -135.0/4096.0; - prolongation[2](24,47) = 45.0/4096.0; - prolongation[2](24,48) = -135.0/4096.0; - prolongation[2](24,49) = -135.0/4096.0; - prolongation[2](24,50) = 45.0/4096.0; - prolongation[2](24,51) = 45.0/4096.0; - prolongation[2](24,52) = -135.0/4096.0; - prolongation[2](24,53) = 45.0/4096.0; - prolongation[2](24,54) = -135.0/4096.0; - prolongation[2](24,55) = 45.0/4096.0; - prolongation[2](24,56) = 1215.0/4096.0; - prolongation[2](24,57) = 1215.0/4096.0; - prolongation[2](24,58) = -405.0/4096.0; - prolongation[2](24,59) = -405.0/4096.0; - prolongation[2](24,60) = 1215.0/4096.0; - prolongation[2](24,61) = 1215.0/4096.0; - prolongation[2](24,62) = -405.0/4096.0; - prolongation[2](24,63) = -405.0/4096.0; - prolongation[2](25,24) = 1.0/256.0; - prolongation[2](25,26) = 1.0/256.0; - prolongation[2](25,28) = 1.0/256.0; - prolongation[2](25,30) = 1.0/256.0; - prolongation[2](25,40) = -9.0/256.0; - prolongation[2](25,41) = -9.0/256.0; - prolongation[2](25,44) = -9.0/256.0; - prolongation[2](25,46) = -9.0/256.0; - prolongation[2](25,48) = -9.0/256.0; - prolongation[2](25,49) = -9.0/256.0; - prolongation[2](25,52) = -9.0/256.0; - prolongation[2](25,54) = -9.0/256.0; - prolongation[2](25,56) = 81.0/256.0; - prolongation[2](25,57) = 81.0/256.0; - prolongation[2](25,60) = 81.0/256.0; - prolongation[2](25,61) = 81.0/256.0; - prolongation[2](26,1) = -5.0/256.0; - prolongation[2](26,2) = -5.0/256.0; - prolongation[2](26,5) = -1.0/256.0; - prolongation[2](26,6) = -1.0/256.0; - prolongation[2](26,10) = 45.0/256.0; - prolongation[2](26,11) = 45.0/256.0; - prolongation[2](26,18) = 9.0/256.0; - prolongation[2](26,19) = 9.0/256.0; - prolongation[2](26,26) = -15.0/256.0; - prolongation[2](26,27) = 5.0/256.0; - prolongation[2](26,28) = -15.0/256.0; - prolongation[2](26,29) = 5.0/256.0; - prolongation[2](26,44) = 135.0/256.0; - prolongation[2](26,45) = -45.0/256.0; - prolongation[2](26,46) = 135.0/256.0; - prolongation[2](26,47) = -45.0/256.0; - prolongation[2](27,26) = -1.0/16.0; - prolongation[2](27,28) = -1.0/16.0; - prolongation[2](27,44) = 9.0/16.0; - prolongation[2](27,46) = 9.0/16.0; - prolongation[2](28,2) = 5.0/16.0; - prolongation[2](28,6) = 1.0/16.0; - prolongation[2](28,28) = 15.0/16.0; - prolongation[2](28,29) = -5.0/16.0; - prolongation[2](29,28) = 1.0; - prolongation[2](30,2) = -5.0/256.0; - prolongation[2](30,3) = -5.0/256.0; - prolongation[2](30,6) = -1.0/256.0; - prolongation[2](30,7) = -1.0/256.0; - prolongation[2](30,12) = 45.0/256.0; - prolongation[2](30,13) = 45.0/256.0; - prolongation[2](30,20) = 9.0/256.0; - prolongation[2](30,21) = 9.0/256.0; - prolongation[2](30,28) = -15.0/256.0; - prolongation[2](30,29) = 5.0/256.0; - prolongation[2](30,30) = -15.0/256.0; - prolongation[2](30,31) = 5.0/256.0; - prolongation[2](30,48) = 135.0/256.0; - prolongation[2](30,49) = 135.0/256.0; - prolongation[2](30,50) = -45.0/256.0; - prolongation[2](30,51) = -45.0/256.0; - prolongation[2](31,28) = -1.0/16.0; - prolongation[2](31,30) = -1.0/16.0; - prolongation[2](31,48) = 9.0/16.0; - prolongation[2](31,49) = 9.0/16.0; - prolongation[2](32,35) = 1.0; - prolongation[2](33,11) = 5.0/16.0; - prolongation[2](33,15) = 1.0/16.0; - prolongation[2](33,34) = -5.0/16.0; - prolongation[2](33,35) = 15.0/16.0; - prolongation[2](34,9) = 1.0/16.0; - prolongation[2](34,13) = 5.0/16.0; - prolongation[2](34,33) = -5.0/16.0; - prolongation[2](34,35) = 15.0/16.0; - prolongation[2](35,0) = 1.0/256.0; - prolongation[2](35,1) = 5.0/256.0; - prolongation[2](35,2) = 25.0/256.0; - prolongation[2](35,3) = 5.0/256.0; - prolongation[2](35,8) = -5.0/256.0; - prolongation[2](35,9) = 15.0/256.0; - prolongation[2](35,10) = -25.0/256.0; - prolongation[2](35,11) = 75.0/256.0; - prolongation[2](35,12) = -25.0/256.0; - prolongation[2](35,13) = 75.0/256.0; - prolongation[2](35,14) = -5.0/256.0; - prolongation[2](35,15) = 15.0/256.0; - prolongation[2](35,32) = 25.0/256.0; - prolongation[2](35,33) = -75.0/256.0; - prolongation[2](35,34) = -75.0/256.0; - prolongation[2](35,35) = 225.0/256.0; - prolongation[2](36,35) = -1.0/16.0; - prolongation[2](36,39) = -1.0/16.0; - prolongation[2](36,61) = 9.0/16.0; - prolongation[2](36,63) = 9.0/16.0; - prolongation[2](37,11) = -5.0/256.0; - prolongation[2](37,15) = -1.0/256.0; - prolongation[2](37,19) = -5.0/256.0; - prolongation[2](37,23) = -1.0/256.0; - prolongation[2](37,34) = 5.0/256.0; - prolongation[2](37,35) = -15.0/256.0; - prolongation[2](37,38) = 5.0/256.0; - prolongation[2](37,39) = -15.0/256.0; - prolongation[2](37,46) = 45.0/256.0; - prolongation[2](37,47) = 45.0/256.0; - prolongation[2](37,54) = 9.0/256.0; - prolongation[2](37,55) = 9.0/256.0; - prolongation[2](37,60) = -45.0/256.0; - prolongation[2](37,61) = 135.0/256.0; - prolongation[2](37,62) = -45.0/256.0; - prolongation[2](37,63) = 135.0/256.0; - prolongation[2](38,9) = -1.0/256.0; - prolongation[2](38,13) = -5.0/256.0; - prolongation[2](38,17) = -1.0/256.0; - prolongation[2](38,21) = -5.0/256.0; - prolongation[2](38,33) = 5.0/256.0; - prolongation[2](38,35) = -15.0/256.0; - prolongation[2](38,37) = 5.0/256.0; - prolongation[2](38,39) = -15.0/256.0; - prolongation[2](38,41) = 9.0/256.0; - prolongation[2](38,43) = 9.0/256.0; - prolongation[2](38,49) = 45.0/256.0; - prolongation[2](38,51) = 45.0/256.0; - prolongation[2](38,57) = -45.0/256.0; - prolongation[2](38,59) = -45.0/256.0; - prolongation[2](38,61) = 135.0/256.0; - prolongation[2](38,63) = 135.0/256.0; - prolongation[2](39,0) = -1.0/4096.0; - prolongation[2](39,1) = -5.0/4096.0; - prolongation[2](39,2) = -25.0/4096.0; - prolongation[2](39,3) = -5.0/4096.0; - prolongation[2](39,4) = -1.0/4096.0; - prolongation[2](39,5) = -5.0/4096.0; - prolongation[2](39,6) = -25.0/4096.0; - prolongation[2](39,7) = -5.0/4096.0; - prolongation[2](39,8) = 5.0/4096.0; - prolongation[2](39,9) = -15.0/4096.0; - prolongation[2](39,10) = 25.0/4096.0; - prolongation[2](39,11) = -75.0/4096.0; - prolongation[2](39,12) = 25.0/4096.0; - prolongation[2](39,13) = -75.0/4096.0; - prolongation[2](39,14) = 5.0/4096.0; - prolongation[2](39,15) = -15.0/4096.0; - prolongation[2](39,16) = 5.0/4096.0; - prolongation[2](39,17) = -15.0/4096.0; - prolongation[2](39,18) = 25.0/4096.0; - prolongation[2](39,19) = -75.0/4096.0; - prolongation[2](39,20) = 25.0/4096.0; - prolongation[2](39,21) = -75.0/4096.0; - prolongation[2](39,22) = 5.0/4096.0; - prolongation[2](39,23) = -15.0/4096.0; - prolongation[2](39,24) = 9.0/4096.0; - prolongation[2](39,25) = 9.0/4096.0; - prolongation[2](39,26) = 45.0/4096.0; - prolongation[2](39,27) = 45.0/4096.0; - prolongation[2](39,28) = 225.0/4096.0; - prolongation[2](39,29) = 225.0/4096.0; - prolongation[2](39,30) = 45.0/4096.0; - prolongation[2](39,31) = 45.0/4096.0; - prolongation[2](39,32) = -25.0/4096.0; - prolongation[2](39,33) = 75.0/4096.0; - prolongation[2](39,34) = 75.0/4096.0; - prolongation[2](39,35) = -225.0/4096.0; - prolongation[2](39,36) = -25.0/4096.0; - prolongation[2](39,37) = 75.0/4096.0; - prolongation[2](39,38) = 75.0/4096.0; - prolongation[2](39,39) = -225.0/4096.0; - prolongation[2](39,40) = -45.0/4096.0; - prolongation[2](39,41) = 135.0/4096.0; - prolongation[2](39,42) = -45.0/4096.0; - prolongation[2](39,43) = 135.0/4096.0; - prolongation[2](39,44) = -225.0/4096.0; - prolongation[2](39,45) = -225.0/4096.0; - prolongation[2](39,46) = 675.0/4096.0; - prolongation[2](39,47) = 675.0/4096.0; - prolongation[2](39,48) = -225.0/4096.0; - prolongation[2](39,49) = 675.0/4096.0; - prolongation[2](39,50) = -225.0/4096.0; - prolongation[2](39,51) = 675.0/4096.0; - prolongation[2](39,52) = -45.0/4096.0; - prolongation[2](39,53) = -45.0/4096.0; - prolongation[2](39,54) = 135.0/4096.0; - prolongation[2](39,55) = 135.0/4096.0; - prolongation[2](39,56) = 225.0/4096.0; - prolongation[2](39,57) = -675.0/4096.0; - prolongation[2](39,58) = 225.0/4096.0; - prolongation[2](39,59) = -675.0/4096.0; - prolongation[2](39,60) = -675.0/4096.0; - prolongation[2](39,61) = 2025.0/4096.0; - prolongation[2](39,62) = -675.0/4096.0; - prolongation[2](39,63) = 2025.0/4096.0; - prolongation[2](40,9) = -5.0/256.0; - prolongation[2](40,13) = -5.0/256.0; - prolongation[2](40,17) = -1.0/256.0; - prolongation[2](40,21) = -1.0/256.0; - prolongation[2](40,33) = 45.0/256.0; - prolongation[2](40,35) = 45.0/256.0; - prolongation[2](40,37) = 9.0/256.0; - prolongation[2](40,39) = 9.0/256.0; - prolongation[2](40,41) = -15.0/256.0; - prolongation[2](40,43) = 5.0/256.0; - prolongation[2](40,49) = -15.0/256.0; - prolongation[2](40,51) = 5.0/256.0; - prolongation[2](40,57) = 135.0/256.0; - prolongation[2](40,59) = -45.0/256.0; - prolongation[2](40,61) = 135.0/256.0; - prolongation[2](40,63) = -45.0/256.0; - prolongation[2](41,0) = -5.0/4096.0; - prolongation[2](41,1) = -25.0/4096.0; - prolongation[2](41,2) = -25.0/4096.0; - prolongation[2](41,3) = -5.0/4096.0; - prolongation[2](41,4) = -1.0/4096.0; - prolongation[2](41,5) = -5.0/4096.0; - prolongation[2](41,6) = -5.0/4096.0; - prolongation[2](41,7) = -1.0/4096.0; - prolongation[2](41,8) = 25.0/4096.0; - prolongation[2](41,9) = -75.0/4096.0; - prolongation[2](41,10) = 225.0/4096.0; - prolongation[2](41,11) = 225.0/4096.0; - prolongation[2](41,12) = 25.0/4096.0; - prolongation[2](41,13) = -75.0/4096.0; - prolongation[2](41,14) = 45.0/4096.0; - prolongation[2](41,15) = 45.0/4096.0; - prolongation[2](41,16) = 5.0/4096.0; - prolongation[2](41,17) = -15.0/4096.0; - prolongation[2](41,18) = 45.0/4096.0; - prolongation[2](41,19) = 45.0/4096.0; - prolongation[2](41,20) = 5.0/4096.0; - prolongation[2](41,21) = -15.0/4096.0; - prolongation[2](41,22) = 9.0/4096.0; - prolongation[2](41,23) = 9.0/4096.0; - prolongation[2](41,24) = -15.0/4096.0; - prolongation[2](41,25) = 5.0/4096.0; - prolongation[2](41,26) = -75.0/4096.0; - prolongation[2](41,27) = 25.0/4096.0; - prolongation[2](41,28) = -75.0/4096.0; - prolongation[2](41,29) = 25.0/4096.0; - prolongation[2](41,30) = -15.0/4096.0; - prolongation[2](41,31) = 5.0/4096.0; - prolongation[2](41,32) = -225.0/4096.0; - prolongation[2](41,33) = 675.0/4096.0; - prolongation[2](41,34) = -225.0/4096.0; - prolongation[2](41,35) = 675.0/4096.0; - prolongation[2](41,36) = -45.0/4096.0; - prolongation[2](41,37) = 135.0/4096.0; - prolongation[2](41,38) = -45.0/4096.0; - prolongation[2](41,39) = 135.0/4096.0; - prolongation[2](41,40) = 75.0/4096.0; - prolongation[2](41,41) = -225.0/4096.0; - prolongation[2](41,42) = -25.0/4096.0; - prolongation[2](41,43) = 75.0/4096.0; - prolongation[2](41,44) = 675.0/4096.0; - prolongation[2](41,45) = -225.0/4096.0; - prolongation[2](41,46) = 675.0/4096.0; - prolongation[2](41,47) = -225.0/4096.0; - prolongation[2](41,48) = 75.0/4096.0; - prolongation[2](41,49) = -225.0/4096.0; - prolongation[2](41,50) = -25.0/4096.0; - prolongation[2](41,51) = 75.0/4096.0; - prolongation[2](41,52) = 135.0/4096.0; - prolongation[2](41,53) = -45.0/4096.0; - prolongation[2](41,54) = 135.0/4096.0; - prolongation[2](41,55) = -45.0/4096.0; - prolongation[2](41,56) = -675.0/4096.0; - prolongation[2](41,57) = 2025.0/4096.0; - prolongation[2](41,58) = 225.0/4096.0; - prolongation[2](41,59) = -675.0/4096.0; - prolongation[2](41,60) = -675.0/4096.0; - prolongation[2](41,61) = 2025.0/4096.0; - prolongation[2](41,62) = 225.0/4096.0; - prolongation[2](41,63) = -675.0/4096.0; - prolongation[2](42,41) = -1.0/16.0; - prolongation[2](42,49) = -1.0/16.0; - prolongation[2](42,57) = 9.0/16.0; - prolongation[2](42,61) = 9.0/16.0; - prolongation[2](43,24) = -1.0/256.0; - prolongation[2](43,26) = -5.0/256.0; - prolongation[2](43,28) = -5.0/256.0; - prolongation[2](43,30) = -1.0/256.0; - prolongation[2](43,40) = 5.0/256.0; - prolongation[2](43,41) = -15.0/256.0; - prolongation[2](43,44) = 45.0/256.0; - prolongation[2](43,46) = 45.0/256.0; - prolongation[2](43,48) = 5.0/256.0; - prolongation[2](43,49) = -15.0/256.0; - prolongation[2](43,52) = 9.0/256.0; - prolongation[2](43,54) = 9.0/256.0; - prolongation[2](43,56) = -45.0/256.0; - prolongation[2](43,57) = 135.0/256.0; - prolongation[2](43,60) = -45.0/256.0; - prolongation[2](43,61) = 135.0/256.0; - prolongation[2](44,11) = 5.0/16.0; - prolongation[2](44,19) = 1.0/16.0; - prolongation[2](44,46) = 15.0/16.0; - prolongation[2](44,47) = -5.0/16.0; - prolongation[2](45,46) = 1.0; - prolongation[2](46,1) = 5.0/256.0; - prolongation[2](46,2) = 25.0/256.0; - prolongation[2](46,5) = 1.0/256.0; - prolongation[2](46,6) = 5.0/256.0; - prolongation[2](46,10) = -25.0/256.0; - prolongation[2](46,11) = 75.0/256.0; - prolongation[2](46,18) = -5.0/256.0; - prolongation[2](46,19) = 15.0/256.0; - prolongation[2](46,26) = 15.0/256.0; - prolongation[2](46,27) = -5.0/256.0; - prolongation[2](46,28) = 75.0/256.0; - prolongation[2](46,29) = -25.0/256.0; - prolongation[2](46,44) = -75.0/256.0; - prolongation[2](46,45) = 25.0/256.0; - prolongation[2](46,46) = 225.0/256.0; - prolongation[2](46,47) = -75.0/256.0; - prolongation[2](47,26) = 1.0/16.0; - prolongation[2](47,28) = 5.0/16.0; - prolongation[2](47,44) = -5.0/16.0; - prolongation[2](47,46) = 15.0/16.0; - prolongation[2](48,13) = 5.0/16.0; - prolongation[2](48,21) = 1.0/16.0; - prolongation[2](48,49) = 15.0/16.0; - prolongation[2](48,51) = -5.0/16.0; - prolongation[2](49,2) = 25.0/256.0; - prolongation[2](49,3) = 5.0/256.0; - prolongation[2](49,6) = 5.0/256.0; - prolongation[2](49,7) = 1.0/256.0; - prolongation[2](49,12) = -25.0/256.0; - prolongation[2](49,13) = 75.0/256.0; - prolongation[2](49,20) = -5.0/256.0; - prolongation[2](49,21) = 15.0/256.0; - prolongation[2](49,28) = 75.0/256.0; - prolongation[2](49,29) = -25.0/256.0; - prolongation[2](49,30) = 15.0/256.0; - prolongation[2](49,31) = -5.0/256.0; - prolongation[2](49,48) = -75.0/256.0; - prolongation[2](49,49) = 225.0/256.0; - prolongation[2](49,50) = 25.0/256.0; - prolongation[2](49,51) = -75.0/256.0; - prolongation[2](50,49) = 1.0; - prolongation[2](51,28) = 5.0/16.0; - prolongation[2](51,30) = 1.0/16.0; - prolongation[2](51,48) = -5.0/16.0; - prolongation[2](51,49) = 15.0/16.0; - prolongation[2](52,11) = -5.0/256.0; - prolongation[2](52,15) = -5.0/256.0; - prolongation[2](52,19) = -1.0/256.0; - prolongation[2](52,23) = -1.0/256.0; - prolongation[2](52,34) = 45.0/256.0; - prolongation[2](52,35) = 45.0/256.0; - prolongation[2](52,38) = 9.0/256.0; - prolongation[2](52,39) = 9.0/256.0; - prolongation[2](52,46) = -15.0/256.0; - prolongation[2](52,47) = 5.0/256.0; - prolongation[2](52,54) = -15.0/256.0; - prolongation[2](52,55) = 5.0/256.0; - prolongation[2](52,60) = 135.0/256.0; - prolongation[2](52,61) = 135.0/256.0; - prolongation[2](52,62) = -45.0/256.0; - prolongation[2](52,63) = -45.0/256.0; - prolongation[2](53,46) = -1.0/16.0; - prolongation[2](53,54) = -1.0/16.0; - prolongation[2](53,60) = 9.0/16.0; - prolongation[2](53,61) = 9.0/16.0; - prolongation[2](54,0) = -5.0/4096.0; - prolongation[2](54,1) = -5.0/4096.0; - prolongation[2](54,2) = -25.0/4096.0; - prolongation[2](54,3) = -25.0/4096.0; - prolongation[2](54,4) = -1.0/4096.0; - prolongation[2](54,5) = -1.0/4096.0; - prolongation[2](54,6) = -5.0/4096.0; - prolongation[2](54,7) = -5.0/4096.0; - prolongation[2](54,8) = 45.0/4096.0; - prolongation[2](54,9) = 45.0/4096.0; - prolongation[2](54,10) = 25.0/4096.0; - prolongation[2](54,11) = -75.0/4096.0; - prolongation[2](54,12) = 225.0/4096.0; - prolongation[2](54,13) = 225.0/4096.0; - prolongation[2](54,14) = 25.0/4096.0; - prolongation[2](54,15) = -75.0/4096.0; - prolongation[2](54,16) = 9.0/4096.0; - prolongation[2](54,17) = 9.0/4096.0; - prolongation[2](54,18) = 5.0/4096.0; - prolongation[2](54,19) = -15.0/4096.0; - prolongation[2](54,20) = 45.0/4096.0; - prolongation[2](54,21) = 45.0/4096.0; - prolongation[2](54,22) = 5.0/4096.0; - prolongation[2](54,23) = -15.0/4096.0; - prolongation[2](54,24) = -15.0/4096.0; - prolongation[2](54,25) = 5.0/4096.0; - prolongation[2](54,26) = -15.0/4096.0; - prolongation[2](54,27) = 5.0/4096.0; - prolongation[2](54,28) = -75.0/4096.0; - prolongation[2](54,29) = 25.0/4096.0; - prolongation[2](54,30) = -75.0/4096.0; - prolongation[2](54,31) = 25.0/4096.0; - prolongation[2](54,32) = -225.0/4096.0; - prolongation[2](54,33) = -225.0/4096.0; - prolongation[2](54,34) = 675.0/4096.0; - prolongation[2](54,35) = 675.0/4096.0; - prolongation[2](54,36) = -45.0/4096.0; - prolongation[2](54,37) = -45.0/4096.0; - prolongation[2](54,38) = 135.0/4096.0; - prolongation[2](54,39) = 135.0/4096.0; - prolongation[2](54,40) = 135.0/4096.0; - prolongation[2](54,41) = 135.0/4096.0; - prolongation[2](54,42) = -45.0/4096.0; - prolongation[2](54,43) = -45.0/4096.0; - prolongation[2](54,44) = 75.0/4096.0; - prolongation[2](54,45) = -25.0/4096.0; - prolongation[2](54,46) = -225.0/4096.0; - prolongation[2](54,47) = 75.0/4096.0; - prolongation[2](54,48) = 675.0/4096.0; - prolongation[2](54,49) = 675.0/4096.0; - prolongation[2](54,50) = -225.0/4096.0; - prolongation[2](54,51) = -225.0/4096.0; - prolongation[2](54,52) = 75.0/4096.0; - prolongation[2](54,53) = -25.0/4096.0; - prolongation[2](54,54) = -225.0/4096.0; - prolongation[2](54,55) = 75.0/4096.0; - prolongation[2](54,56) = -675.0/4096.0; - prolongation[2](54,57) = -675.0/4096.0; - prolongation[2](54,58) = 225.0/4096.0; - prolongation[2](54,59) = 225.0/4096.0; - prolongation[2](54,60) = 2025.0/4096.0; - prolongation[2](54,61) = 2025.0/4096.0; - prolongation[2](54,62) = -675.0/4096.0; - prolongation[2](54,63) = -675.0/4096.0; - prolongation[2](55,24) = -1.0/256.0; - prolongation[2](55,26) = -1.0/256.0; - prolongation[2](55,28) = -5.0/256.0; - prolongation[2](55,30) = -5.0/256.0; - prolongation[2](55,40) = 9.0/256.0; - prolongation[2](55,41) = 9.0/256.0; - prolongation[2](55,44) = 5.0/256.0; - prolongation[2](55,46) = -15.0/256.0; - prolongation[2](55,48) = 45.0/256.0; - prolongation[2](55,49) = 45.0/256.0; - prolongation[2](55,52) = 5.0/256.0; - prolongation[2](55,54) = -15.0/256.0; - prolongation[2](55,56) = -45.0/256.0; - prolongation[2](55,57) = -45.0/256.0; - prolongation[2](55,60) = 135.0/256.0; - prolongation[2](55,61) = 135.0/256.0; - prolongation[2](56,35) = 5.0/16.0; - prolongation[2](56,39) = 1.0/16.0; - prolongation[2](56,61) = 15.0/16.0; - prolongation[2](56,63) = -5.0/16.0; - prolongation[2](57,11) = 25.0/256.0; - prolongation[2](57,15) = 5.0/256.0; - prolongation[2](57,19) = 5.0/256.0; - prolongation[2](57,23) = 1.0/256.0; - prolongation[2](57,34) = -25.0/256.0; - prolongation[2](57,35) = 75.0/256.0; - prolongation[2](57,38) = -5.0/256.0; - prolongation[2](57,39) = 15.0/256.0; - prolongation[2](57,46) = 75.0/256.0; - prolongation[2](57,47) = -25.0/256.0; - prolongation[2](57,54) = 15.0/256.0; - prolongation[2](57,55) = -5.0/256.0; - prolongation[2](57,60) = -75.0/256.0; - prolongation[2](57,61) = 225.0/256.0; - prolongation[2](57,62) = 25.0/256.0; - prolongation[2](57,63) = -75.0/256.0; - prolongation[2](58,61) = 1.0; - prolongation[2](59,46) = 5.0/16.0; - prolongation[2](59,54) = 1.0/16.0; - prolongation[2](59,60) = -5.0/16.0; - prolongation[2](59,61) = 15.0/16.0; - prolongation[2](60,9) = 5.0/256.0; - prolongation[2](60,13) = 25.0/256.0; - prolongation[2](60,17) = 1.0/256.0; - prolongation[2](60,21) = 5.0/256.0; - prolongation[2](60,33) = -25.0/256.0; - prolongation[2](60,35) = 75.0/256.0; - prolongation[2](60,37) = -5.0/256.0; - prolongation[2](60,39) = 15.0/256.0; - prolongation[2](60,41) = 15.0/256.0; - prolongation[2](60,43) = -5.0/256.0; - prolongation[2](60,49) = 75.0/256.0; - prolongation[2](60,51) = -25.0/256.0; - prolongation[2](60,57) = -75.0/256.0; - prolongation[2](60,59) = 25.0/256.0; - prolongation[2](60,61) = 225.0/256.0; - prolongation[2](60,63) = -75.0/256.0; - prolongation[2](61,0) = 5.0/4096.0; - prolongation[2](61,1) = 25.0/4096.0; - prolongation[2](61,2) = 125.0/4096.0; - prolongation[2](61,3) = 25.0/4096.0; - prolongation[2](61,4) = 1.0/4096.0; - prolongation[2](61,5) = 5.0/4096.0; - prolongation[2](61,6) = 25.0/4096.0; - prolongation[2](61,7) = 5.0/4096.0; - prolongation[2](61,8) = -25.0/4096.0; - prolongation[2](61,9) = 75.0/4096.0; - prolongation[2](61,10) = -125.0/4096.0; - prolongation[2](61,11) = 375.0/4096.0; - prolongation[2](61,12) = -125.0/4096.0; - prolongation[2](61,13) = 375.0/4096.0; - prolongation[2](61,14) = -25.0/4096.0; - prolongation[2](61,15) = 75.0/4096.0; - prolongation[2](61,16) = -5.0/4096.0; - prolongation[2](61,17) = 15.0/4096.0; - prolongation[2](61,18) = -25.0/4096.0; - prolongation[2](61,19) = 75.0/4096.0; - prolongation[2](61,20) = -25.0/4096.0; - prolongation[2](61,21) = 75.0/4096.0; - prolongation[2](61,22) = -5.0/4096.0; - prolongation[2](61,23) = 15.0/4096.0; - prolongation[2](61,24) = 15.0/4096.0; - prolongation[2](61,25) = -5.0/4096.0; - prolongation[2](61,26) = 75.0/4096.0; - prolongation[2](61,27) = -25.0/4096.0; - prolongation[2](61,28) = 375.0/4096.0; - prolongation[2](61,29) = -125.0/4096.0; - prolongation[2](61,30) = 75.0/4096.0; - prolongation[2](61,31) = -25.0/4096.0; - prolongation[2](61,32) = 125.0/4096.0; - prolongation[2](61,33) = -375.0/4096.0; - prolongation[2](61,34) = -375.0/4096.0; - prolongation[2](61,35) = 1125.0/4096.0; - prolongation[2](61,36) = 25.0/4096.0; - prolongation[2](61,37) = -75.0/4096.0; - prolongation[2](61,38) = -75.0/4096.0; - prolongation[2](61,39) = 225.0/4096.0; - prolongation[2](61,40) = -75.0/4096.0; - prolongation[2](61,41) = 225.0/4096.0; - prolongation[2](61,42) = 25.0/4096.0; - prolongation[2](61,43) = -75.0/4096.0; - prolongation[2](61,44) = -375.0/4096.0; - prolongation[2](61,45) = 125.0/4096.0; - prolongation[2](61,46) = 1125.0/4096.0; - prolongation[2](61,47) = -375.0/4096.0; - prolongation[2](61,48) = -375.0/4096.0; - prolongation[2](61,49) = 1125.0/4096.0; - prolongation[2](61,50) = 125.0/4096.0; - prolongation[2](61,51) = -375.0/4096.0; - prolongation[2](61,52) = -75.0/4096.0; - prolongation[2](61,53) = 25.0/4096.0; - prolongation[2](61,54) = 225.0/4096.0; - prolongation[2](61,55) = -75.0/4096.0; - prolongation[2](61,56) = 375.0/4096.0; - prolongation[2](61,57) = -1125.0/4096.0; - prolongation[2](61,58) = -125.0/4096.0; - prolongation[2](61,59) = 375.0/4096.0; - prolongation[2](61,60) = -1125.0/4096.0; - prolongation[2](61,61) = 3375.0/4096.0; - prolongation[2](61,62) = 375.0/4096.0; - prolongation[2](61,63) = -1125.0/4096.0; - prolongation[2](62,41) = 1.0/16.0; - prolongation[2](62,49) = 5.0/16.0; - prolongation[2](62,57) = -5.0/16.0; - prolongation[2](62,61) = 15.0/16.0; - prolongation[2](63,24) = 1.0/256.0; - prolongation[2](63,26) = 5.0/256.0; - prolongation[2](63,28) = 25.0/256.0; - prolongation[2](63,30) = 5.0/256.0; - prolongation[2](63,40) = -5.0/256.0; - prolongation[2](63,41) = 15.0/256.0; - prolongation[2](63,44) = -25.0/256.0; - prolongation[2](63,46) = 75.0/256.0; - prolongation[2](63,48) = -25.0/256.0; - prolongation[2](63,49) = 75.0/256.0; - prolongation[2](63,52) = -5.0/256.0; - prolongation[2](63,54) = 15.0/256.0; - prolongation[2](63,56) = 25.0/256.0; - prolongation[2](63,57) = -75.0/256.0; - prolongation[2](63,60) = -75.0/256.0; - prolongation[2](63,61) = 225.0/256.0; - prolongation[3](0,0) = -1.0/16.0; - prolongation[3](0,3) = -1.0/16.0; - prolongation[3](0,14) = 9.0/16.0; - prolongation[3](0,15) = 9.0/16.0; - prolongation[3](1,0) = 1.0/256.0; - prolongation[3](1,1) = 1.0/256.0; - prolongation[3](1,2) = 1.0/256.0; - prolongation[3](1,3) = 1.0/256.0; - prolongation[3](1,8) = -9.0/256.0; - prolongation[3](1,9) = -9.0/256.0; - prolongation[3](1,10) = -9.0/256.0; - prolongation[3](1,11) = -9.0/256.0; - prolongation[3](1,12) = -9.0/256.0; - prolongation[3](1,13) = -9.0/256.0; - prolongation[3](1,14) = -9.0/256.0; - prolongation[3](1,15) = -9.0/256.0; - prolongation[3](1,32) = 81.0/256.0; - prolongation[3](1,33) = 81.0/256.0; - prolongation[3](1,34) = 81.0/256.0; - prolongation[3](1,35) = 81.0/256.0; - prolongation[3](2,2) = -1.0/16.0; - prolongation[3](2,3) = -1.0/16.0; - prolongation[3](2,12) = 9.0/16.0; - prolongation[3](2,13) = 9.0/16.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,0) = 1.0/256.0; - prolongation[3](4,3) = 1.0/256.0; - prolongation[3](4,4) = 1.0/256.0; - prolongation[3](4,7) = 1.0/256.0; - prolongation[3](4,14) = -9.0/256.0; - prolongation[3](4,15) = -9.0/256.0; - prolongation[3](4,22) = -9.0/256.0; - prolongation[3](4,23) = -9.0/256.0; - prolongation[3](4,24) = -9.0/256.0; - prolongation[3](4,25) = -9.0/256.0; - prolongation[3](4,30) = -9.0/256.0; - prolongation[3](4,31) = -9.0/256.0; - prolongation[3](4,52) = 81.0/256.0; - prolongation[3](4,53) = 81.0/256.0; - prolongation[3](4,54) = 81.0/256.0; - prolongation[3](4,55) = 81.0/256.0; - prolongation[3](5,0) = -1.0/4096.0; - prolongation[3](5,1) = -1.0/4096.0; - prolongation[3](5,2) = -1.0/4096.0; - prolongation[3](5,3) = -1.0/4096.0; - prolongation[3](5,4) = -1.0/4096.0; - prolongation[3](5,5) = -1.0/4096.0; - prolongation[3](5,6) = -1.0/4096.0; - prolongation[3](5,7) = -1.0/4096.0; - prolongation[3](5,8) = 9.0/4096.0; - prolongation[3](5,9) = 9.0/4096.0; - prolongation[3](5,10) = 9.0/4096.0; - prolongation[3](5,11) = 9.0/4096.0; - prolongation[3](5,12) = 9.0/4096.0; - prolongation[3](5,13) = 9.0/4096.0; - prolongation[3](5,14) = 9.0/4096.0; - prolongation[3](5,15) = 9.0/4096.0; - prolongation[3](5,16) = 9.0/4096.0; - prolongation[3](5,17) = 9.0/4096.0; - prolongation[3](5,18) = 9.0/4096.0; - prolongation[3](5,19) = 9.0/4096.0; - prolongation[3](5,20) = 9.0/4096.0; - prolongation[3](5,21) = 9.0/4096.0; - prolongation[3](5,22) = 9.0/4096.0; - prolongation[3](5,23) = 9.0/4096.0; - prolongation[3](5,24) = 9.0/4096.0; - prolongation[3](5,25) = 9.0/4096.0; - prolongation[3](5,26) = 9.0/4096.0; - prolongation[3](5,27) = 9.0/4096.0; - prolongation[3](5,28) = 9.0/4096.0; - prolongation[3](5,29) = 9.0/4096.0; - prolongation[3](5,30) = 9.0/4096.0; - prolongation[3](5,31) = 9.0/4096.0; - prolongation[3](5,32) = -81.0/4096.0; - prolongation[3](5,33) = -81.0/4096.0; - prolongation[3](5,34) = -81.0/4096.0; - prolongation[3](5,35) = -81.0/4096.0; - prolongation[3](5,36) = -81.0/4096.0; - prolongation[3](5,37) = -81.0/4096.0; - prolongation[3](5,38) = -81.0/4096.0; - prolongation[3](5,39) = -81.0/4096.0; - prolongation[3](5,40) = -81.0/4096.0; - prolongation[3](5,41) = -81.0/4096.0; - prolongation[3](5,42) = -81.0/4096.0; - prolongation[3](5,43) = -81.0/4096.0; - prolongation[3](5,44) = -81.0/4096.0; - prolongation[3](5,45) = -81.0/4096.0; - prolongation[3](5,46) = -81.0/4096.0; - prolongation[3](5,47) = -81.0/4096.0; - prolongation[3](5,48) = -81.0/4096.0; - prolongation[3](5,49) = -81.0/4096.0; - prolongation[3](5,50) = -81.0/4096.0; - prolongation[3](5,51) = -81.0/4096.0; - prolongation[3](5,52) = -81.0/4096.0; - prolongation[3](5,53) = -81.0/4096.0; - prolongation[3](5,54) = -81.0/4096.0; - prolongation[3](5,55) = -81.0/4096.0; - prolongation[3](5,56) = 729.0/4096.0; - prolongation[3](5,57) = 729.0/4096.0; - prolongation[3](5,58) = 729.0/4096.0; - prolongation[3](5,59) = 729.0/4096.0; - prolongation[3](5,60) = 729.0/4096.0; - prolongation[3](5,61) = 729.0/4096.0; - prolongation[3](5,62) = 729.0/4096.0; - prolongation[3](5,63) = 729.0/4096.0; - prolongation[3](6,2) = 1.0/256.0; - prolongation[3](6,3) = 1.0/256.0; - prolongation[3](6,6) = 1.0/256.0; - prolongation[3](6,7) = 1.0/256.0; - prolongation[3](6,12) = -9.0/256.0; - prolongation[3](6,13) = -9.0/256.0; - prolongation[3](6,20) = -9.0/256.0; - prolongation[3](6,21) = -9.0/256.0; - prolongation[3](6,28) = -9.0/256.0; - prolongation[3](6,29) = -9.0/256.0; - prolongation[3](6,30) = -9.0/256.0; - prolongation[3](6,31) = -9.0/256.0; - prolongation[3](6,48) = 81.0/256.0; - prolongation[3](6,49) = 81.0/256.0; - prolongation[3](6,50) = 81.0/256.0; - prolongation[3](6,51) = 81.0/256.0; - prolongation[3](7,3) = -1.0/16.0; - prolongation[3](7,7) = -1.0/16.0; - prolongation[3](7,30) = 9.0/16.0; - prolongation[3](7,31) = 9.0/16.0; - prolongation[3](8,0) = -5.0/256.0; - prolongation[3](8,1) = -1.0/256.0; - prolongation[3](8,2) = -1.0/256.0; - prolongation[3](8,3) = -5.0/256.0; - prolongation[3](8,8) = -15.0/256.0; - prolongation[3](8,9) = 5.0/256.0; - prolongation[3](8,10) = 9.0/256.0; - prolongation[3](8,11) = 9.0/256.0; - prolongation[3](8,12) = -15.0/256.0; - prolongation[3](8,13) = 5.0/256.0; - prolongation[3](8,14) = 45.0/256.0; - prolongation[3](8,15) = 45.0/256.0; - prolongation[3](8,32) = 135.0/256.0; - prolongation[3](8,33) = -45.0/256.0; - prolongation[3](8,34) = 135.0/256.0; - prolongation[3](8,35) = -45.0/256.0; - prolongation[3](9,8) = -1.0/16.0; - prolongation[3](9,12) = -1.0/16.0; - prolongation[3](9,32) = 9.0/16.0; - prolongation[3](9,34) = 9.0/16.0; - prolongation[3](10,11) = -1.0/16.0; - prolongation[3](10,15) = -1.0/16.0; - prolongation[3](10,34) = 9.0/16.0; - prolongation[3](10,35) = 9.0/16.0; - prolongation[3](11,0) = -1.0/256.0; - prolongation[3](11,1) = -1.0/256.0; - prolongation[3](11,2) = -5.0/256.0; - prolongation[3](11,3) = -5.0/256.0; - prolongation[3](11,8) = 9.0/256.0; - prolongation[3](11,9) = 9.0/256.0; - prolongation[3](11,10) = 5.0/256.0; - prolongation[3](11,11) = -15.0/256.0; - prolongation[3](11,12) = 45.0/256.0; - prolongation[3](11,13) = 45.0/256.0; - prolongation[3](11,14) = 5.0/256.0; - prolongation[3](11,15) = -15.0/256.0; - prolongation[3](11,32) = -45.0/256.0; - prolongation[3](11,33) = -45.0/256.0; - prolongation[3](11,34) = 135.0/256.0; - prolongation[3](11,35) = 135.0/256.0; - prolongation[3](12,2) = 1.0/16.0; - prolongation[3](12,3) = 5.0/16.0; - prolongation[3](12,12) = 15.0/16.0; - prolongation[3](12,13) = -5.0/16.0; - prolongation[3](13,12) = 1.0; - prolongation[3](14,15) = 1.0; - prolongation[3](15,0) = 1.0/16.0; - prolongation[3](15,3) = 5.0/16.0; - prolongation[3](15,14) = -5.0/16.0; - prolongation[3](15,15) = 15.0/16.0; - prolongation[3](16,0) = 5.0/4096.0; - prolongation[3](16,1) = 1.0/4096.0; - prolongation[3](16,2) = 1.0/4096.0; - prolongation[3](16,3) = 5.0/4096.0; - prolongation[3](16,4) = 5.0/4096.0; - prolongation[3](16,5) = 1.0/4096.0; - prolongation[3](16,6) = 1.0/4096.0; - prolongation[3](16,7) = 5.0/4096.0; - prolongation[3](16,8) = 15.0/4096.0; - prolongation[3](16,9) = -5.0/4096.0; - prolongation[3](16,10) = -9.0/4096.0; - prolongation[3](16,11) = -9.0/4096.0; - prolongation[3](16,12) = 15.0/4096.0; - prolongation[3](16,13) = -5.0/4096.0; - prolongation[3](16,14) = -45.0/4096.0; - prolongation[3](16,15) = -45.0/4096.0; - prolongation[3](16,16) = 15.0/4096.0; - prolongation[3](16,17) = -5.0/4096.0; - prolongation[3](16,18) = -9.0/4096.0; - prolongation[3](16,19) = -9.0/4096.0; - prolongation[3](16,20) = 15.0/4096.0; - prolongation[3](16,21) = -5.0/4096.0; - prolongation[3](16,22) = -45.0/4096.0; - prolongation[3](16,23) = -45.0/4096.0; - prolongation[3](16,24) = -45.0/4096.0; - prolongation[3](16,25) = -45.0/4096.0; - prolongation[3](16,26) = -9.0/4096.0; - prolongation[3](16,27) = -9.0/4096.0; - prolongation[3](16,28) = -9.0/4096.0; - prolongation[3](16,29) = -9.0/4096.0; - prolongation[3](16,30) = -45.0/4096.0; - prolongation[3](16,31) = -45.0/4096.0; - prolongation[3](16,32) = -135.0/4096.0; - prolongation[3](16,33) = 45.0/4096.0; - prolongation[3](16,34) = -135.0/4096.0; - prolongation[3](16,35) = 45.0/4096.0; - prolongation[3](16,36) = -135.0/4096.0; - prolongation[3](16,37) = 45.0/4096.0; - prolongation[3](16,38) = -135.0/4096.0; - prolongation[3](16,39) = 45.0/4096.0; - prolongation[3](16,40) = -135.0/4096.0; - prolongation[3](16,41) = 45.0/4096.0; - prolongation[3](16,42) = -135.0/4096.0; - prolongation[3](16,43) = 45.0/4096.0; - prolongation[3](16,44) = 81.0/4096.0; - prolongation[3](16,45) = 81.0/4096.0; - prolongation[3](16,46) = 81.0/4096.0; - prolongation[3](16,47) = 81.0/4096.0; - prolongation[3](16,48) = -135.0/4096.0; - prolongation[3](16,49) = 45.0/4096.0; - prolongation[3](16,50) = -135.0/4096.0; - prolongation[3](16,51) = 45.0/4096.0; - prolongation[3](16,52) = 405.0/4096.0; - prolongation[3](16,53) = 405.0/4096.0; - prolongation[3](16,54) = 405.0/4096.0; - prolongation[3](16,55) = 405.0/4096.0; - prolongation[3](16,56) = 1215.0/4096.0; - prolongation[3](16,57) = -405.0/4096.0; - prolongation[3](16,58) = 1215.0/4096.0; - prolongation[3](16,59) = -405.0/4096.0; - prolongation[3](16,60) = 1215.0/4096.0; - prolongation[3](16,61) = -405.0/4096.0; - prolongation[3](16,62) = 1215.0/4096.0; - prolongation[3](16,63) = -405.0/4096.0; - prolongation[3](17,8) = 1.0/256.0; - prolongation[3](17,12) = 1.0/256.0; - prolongation[3](17,16) = 1.0/256.0; - prolongation[3](17,20) = 1.0/256.0; - prolongation[3](17,32) = -9.0/256.0; - prolongation[3](17,34) = -9.0/256.0; - prolongation[3](17,36) = -9.0/256.0; - prolongation[3](17,38) = -9.0/256.0; - prolongation[3](17,40) = -9.0/256.0; - prolongation[3](17,42) = -9.0/256.0; - prolongation[3](17,48) = -9.0/256.0; - prolongation[3](17,50) = -9.0/256.0; - prolongation[3](17,56) = 81.0/256.0; - prolongation[3](17,58) = 81.0/256.0; - prolongation[3](17,60) = 81.0/256.0; - prolongation[3](17,62) = 81.0/256.0; - prolongation[3](18,11) = 1.0/256.0; - prolongation[3](18,15) = 1.0/256.0; - prolongation[3](18,19) = 1.0/256.0; - prolongation[3](18,23) = 1.0/256.0; - prolongation[3](18,34) = -9.0/256.0; - prolongation[3](18,35) = -9.0/256.0; - prolongation[3](18,38) = -9.0/256.0; - prolongation[3](18,39) = -9.0/256.0; - prolongation[3](18,46) = -9.0/256.0; - prolongation[3](18,47) = -9.0/256.0; - prolongation[3](18,54) = -9.0/256.0; - prolongation[3](18,55) = -9.0/256.0; - prolongation[3](18,60) = 81.0/256.0; - prolongation[3](18,61) = 81.0/256.0; - prolongation[3](18,62) = 81.0/256.0; - prolongation[3](18,63) = 81.0/256.0; - prolongation[3](19,0) = 1.0/4096.0; - prolongation[3](19,1) = 1.0/4096.0; - prolongation[3](19,2) = 5.0/4096.0; - prolongation[3](19,3) = 5.0/4096.0; - prolongation[3](19,4) = 1.0/4096.0; - prolongation[3](19,5) = 1.0/4096.0; - prolongation[3](19,6) = 5.0/4096.0; - prolongation[3](19,7) = 5.0/4096.0; - prolongation[3](19,8) = -9.0/4096.0; - prolongation[3](19,9) = -9.0/4096.0; - prolongation[3](19,10) = -5.0/4096.0; - prolongation[3](19,11) = 15.0/4096.0; - prolongation[3](19,12) = -45.0/4096.0; - prolongation[3](19,13) = -45.0/4096.0; - prolongation[3](19,14) = -5.0/4096.0; - prolongation[3](19,15) = 15.0/4096.0; - prolongation[3](19,16) = -9.0/4096.0; - prolongation[3](19,17) = -9.0/4096.0; - prolongation[3](19,18) = -5.0/4096.0; - prolongation[3](19,19) = 15.0/4096.0; - prolongation[3](19,20) = -45.0/4096.0; - prolongation[3](19,21) = -45.0/4096.0; - prolongation[3](19,22) = -5.0/4096.0; - prolongation[3](19,23) = 15.0/4096.0; - prolongation[3](19,24) = -9.0/4096.0; - prolongation[3](19,25) = -9.0/4096.0; - prolongation[3](19,26) = -9.0/4096.0; - prolongation[3](19,27) = -9.0/4096.0; - prolongation[3](19,28) = -45.0/4096.0; - prolongation[3](19,29) = -45.0/4096.0; - prolongation[3](19,30) = -45.0/4096.0; - prolongation[3](19,31) = -45.0/4096.0; - prolongation[3](19,32) = 45.0/4096.0; - prolongation[3](19,33) = 45.0/4096.0; - prolongation[3](19,34) = -135.0/4096.0; - prolongation[3](19,35) = -135.0/4096.0; - prolongation[3](19,36) = 45.0/4096.0; - prolongation[3](19,37) = 45.0/4096.0; - prolongation[3](19,38) = -135.0/4096.0; - prolongation[3](19,39) = -135.0/4096.0; - prolongation[3](19,40) = 81.0/4096.0; - prolongation[3](19,41) = 81.0/4096.0; - prolongation[3](19,42) = 81.0/4096.0; - prolongation[3](19,43) = 81.0/4096.0; - prolongation[3](19,44) = 45.0/4096.0; - prolongation[3](19,45) = 45.0/4096.0; - prolongation[3](19,46) = -135.0/4096.0; - prolongation[3](19,47) = -135.0/4096.0; - prolongation[3](19,48) = 405.0/4096.0; - prolongation[3](19,49) = 405.0/4096.0; - prolongation[3](19,50) = 405.0/4096.0; - prolongation[3](19,51) = 405.0/4096.0; - prolongation[3](19,52) = 45.0/4096.0; - prolongation[3](19,53) = 45.0/4096.0; - prolongation[3](19,54) = -135.0/4096.0; - prolongation[3](19,55) = -135.0/4096.0; - prolongation[3](19,56) = -405.0/4096.0; - prolongation[3](19,57) = -405.0/4096.0; - prolongation[3](19,58) = -405.0/4096.0; - prolongation[3](19,59) = -405.0/4096.0; - prolongation[3](19,60) = 1215.0/4096.0; - prolongation[3](19,61) = 1215.0/4096.0; - prolongation[3](19,62) = 1215.0/4096.0; - prolongation[3](19,63) = 1215.0/4096.0; - prolongation[3](20,2) = -1.0/256.0; - prolongation[3](20,3) = -5.0/256.0; - prolongation[3](20,6) = -1.0/256.0; - prolongation[3](20,7) = -5.0/256.0; - prolongation[3](20,12) = -15.0/256.0; - prolongation[3](20,13) = 5.0/256.0; - prolongation[3](20,20) = -15.0/256.0; - prolongation[3](20,21) = 5.0/256.0; - prolongation[3](20,28) = 9.0/256.0; - prolongation[3](20,29) = 9.0/256.0; - prolongation[3](20,30) = 45.0/256.0; - prolongation[3](20,31) = 45.0/256.0; - prolongation[3](20,48) = 135.0/256.0; - prolongation[3](20,49) = -45.0/256.0; - prolongation[3](20,50) = 135.0/256.0; - prolongation[3](20,51) = -45.0/256.0; - prolongation[3](21,12) = -1.0/16.0; - prolongation[3](21,20) = -1.0/16.0; - prolongation[3](21,48) = 9.0/16.0; - prolongation[3](21,50) = 9.0/16.0; - prolongation[3](22,15) = -1.0/16.0; - prolongation[3](22,23) = -1.0/16.0; - prolongation[3](22,54) = 9.0/16.0; - prolongation[3](22,55) = 9.0/16.0; - prolongation[3](23,0) = -1.0/256.0; - prolongation[3](23,3) = -5.0/256.0; - prolongation[3](23,4) = -1.0/256.0; - prolongation[3](23,7) = -5.0/256.0; - prolongation[3](23,14) = 5.0/256.0; - prolongation[3](23,15) = -15.0/256.0; - prolongation[3](23,22) = 5.0/256.0; - prolongation[3](23,23) = -15.0/256.0; - prolongation[3](23,24) = 9.0/256.0; - prolongation[3](23,25) = 9.0/256.0; - prolongation[3](23,30) = 45.0/256.0; - prolongation[3](23,31) = 45.0/256.0; - prolongation[3](23,52) = -45.0/256.0; - prolongation[3](23,53) = -45.0/256.0; - prolongation[3](23,54) = 135.0/256.0; - prolongation[3](23,55) = 135.0/256.0; - prolongation[3](24,0) = -5.0/256.0; - prolongation[3](24,3) = -5.0/256.0; - prolongation[3](24,4) = -1.0/256.0; - prolongation[3](24,7) = -1.0/256.0; - prolongation[3](24,14) = 45.0/256.0; - prolongation[3](24,15) = 45.0/256.0; - prolongation[3](24,22) = 9.0/256.0; - prolongation[3](24,23) = 9.0/256.0; - prolongation[3](24,24) = -15.0/256.0; - prolongation[3](24,25) = 5.0/256.0; - prolongation[3](24,30) = -15.0/256.0; - prolongation[3](24,31) = 5.0/256.0; - prolongation[3](24,52) = 135.0/256.0; - prolongation[3](24,53) = -45.0/256.0; - prolongation[3](24,54) = 135.0/256.0; - prolongation[3](24,55) = -45.0/256.0; - prolongation[3](25,24) = -1.0/16.0; - prolongation[3](25,30) = -1.0/16.0; - prolongation[3](25,52) = 9.0/16.0; - prolongation[3](25,54) = 9.0/16.0; - prolongation[3](26,0) = 5.0/4096.0; - prolongation[3](26,1) = 5.0/4096.0; - prolongation[3](26,2) = 5.0/4096.0; - prolongation[3](26,3) = 5.0/4096.0; - prolongation[3](26,4) = 1.0/4096.0; - prolongation[3](26,5) = 1.0/4096.0; - prolongation[3](26,6) = 1.0/4096.0; - prolongation[3](26,7) = 1.0/4096.0; - prolongation[3](26,8) = -45.0/4096.0; - prolongation[3](26,9) = -45.0/4096.0; - prolongation[3](26,10) = -45.0/4096.0; - prolongation[3](26,11) = -45.0/4096.0; - prolongation[3](26,12) = -45.0/4096.0; - prolongation[3](26,13) = -45.0/4096.0; - prolongation[3](26,14) = -45.0/4096.0; - prolongation[3](26,15) = -45.0/4096.0; - prolongation[3](26,16) = -9.0/4096.0; - prolongation[3](26,17) = -9.0/4096.0; - prolongation[3](26,18) = -9.0/4096.0; - prolongation[3](26,19) = -9.0/4096.0; - prolongation[3](26,20) = -9.0/4096.0; - prolongation[3](26,21) = -9.0/4096.0; - prolongation[3](26,22) = -9.0/4096.0; - prolongation[3](26,23) = -9.0/4096.0; - prolongation[3](26,24) = 15.0/4096.0; - prolongation[3](26,25) = -5.0/4096.0; - prolongation[3](26,26) = 15.0/4096.0; - prolongation[3](26,27) = -5.0/4096.0; - prolongation[3](26,28) = 15.0/4096.0; - prolongation[3](26,29) = -5.0/4096.0; - prolongation[3](26,30) = 15.0/4096.0; - prolongation[3](26,31) = -5.0/4096.0; - prolongation[3](26,32) = 405.0/4096.0; - prolongation[3](26,33) = 405.0/4096.0; - prolongation[3](26,34) = 405.0/4096.0; - prolongation[3](26,35) = 405.0/4096.0; - prolongation[3](26,36) = 81.0/4096.0; - prolongation[3](26,37) = 81.0/4096.0; - prolongation[3](26,38) = 81.0/4096.0; - prolongation[3](26,39) = 81.0/4096.0; - prolongation[3](26,40) = -135.0/4096.0; - prolongation[3](26,41) = -135.0/4096.0; - prolongation[3](26,42) = 45.0/4096.0; - prolongation[3](26,43) = 45.0/4096.0; - prolongation[3](26,44) = -135.0/4096.0; - prolongation[3](26,45) = 45.0/4096.0; - prolongation[3](26,46) = -135.0/4096.0; - prolongation[3](26,47) = 45.0/4096.0; - prolongation[3](26,48) = -135.0/4096.0; - prolongation[3](26,49) = -135.0/4096.0; - prolongation[3](26,50) = 45.0/4096.0; - prolongation[3](26,51) = 45.0/4096.0; - prolongation[3](26,52) = -135.0/4096.0; - prolongation[3](26,53) = 45.0/4096.0; - prolongation[3](26,54) = -135.0/4096.0; - prolongation[3](26,55) = 45.0/4096.0; - prolongation[3](26,56) = 1215.0/4096.0; - prolongation[3](26,57) = 1215.0/4096.0; - prolongation[3](26,58) = -405.0/4096.0; - prolongation[3](26,59) = -405.0/4096.0; - prolongation[3](26,60) = 1215.0/4096.0; - prolongation[3](26,61) = 1215.0/4096.0; - prolongation[3](26,62) = -405.0/4096.0; - prolongation[3](26,63) = -405.0/4096.0; - prolongation[3](27,24) = 1.0/256.0; - prolongation[3](27,26) = 1.0/256.0; - prolongation[3](27,28) = 1.0/256.0; - prolongation[3](27,30) = 1.0/256.0; - prolongation[3](27,40) = -9.0/256.0; - prolongation[3](27,41) = -9.0/256.0; - prolongation[3](27,44) = -9.0/256.0; - prolongation[3](27,46) = -9.0/256.0; - prolongation[3](27,48) = -9.0/256.0; - prolongation[3](27,49) = -9.0/256.0; - prolongation[3](27,52) = -9.0/256.0; - prolongation[3](27,54) = -9.0/256.0; - prolongation[3](27,56) = 81.0/256.0; - prolongation[3](27,57) = 81.0/256.0; - prolongation[3](27,60) = 81.0/256.0; - prolongation[3](27,61) = 81.0/256.0; - prolongation[3](28,2) = -5.0/256.0; - prolongation[3](28,3) = -5.0/256.0; - prolongation[3](28,6) = -1.0/256.0; - prolongation[3](28,7) = -1.0/256.0; - prolongation[3](28,12) = 45.0/256.0; - prolongation[3](28,13) = 45.0/256.0; - prolongation[3](28,20) = 9.0/256.0; - prolongation[3](28,21) = 9.0/256.0; - prolongation[3](28,28) = -15.0/256.0; - prolongation[3](28,29) = 5.0/256.0; - prolongation[3](28,30) = -15.0/256.0; - prolongation[3](28,31) = 5.0/256.0; - prolongation[3](28,48) = 135.0/256.0; - prolongation[3](28,49) = 135.0/256.0; - prolongation[3](28,50) = -45.0/256.0; - prolongation[3](28,51) = -45.0/256.0; - prolongation[3](29,28) = -1.0/16.0; - prolongation[3](29,30) = -1.0/16.0; - prolongation[3](29,48) = 9.0/16.0; - prolongation[3](29,49) = 9.0/16.0; - prolongation[3](30,3) = 5.0/16.0; - prolongation[3](30,7) = 1.0/16.0; - prolongation[3](30,30) = 15.0/16.0; - prolongation[3](30,31) = -5.0/16.0; - prolongation[3](31,30) = 1.0; - prolongation[3](32,11) = 1.0/16.0; - prolongation[3](32,15) = 5.0/16.0; - prolongation[3](32,34) = 15.0/16.0; - prolongation[3](32,35) = -5.0/16.0; - prolongation[3](33,34) = 1.0; - prolongation[3](34,0) = 5.0/256.0; - prolongation[3](34,1) = 1.0/256.0; - prolongation[3](34,2) = 5.0/256.0; - prolongation[3](34,3) = 25.0/256.0; - prolongation[3](34,8) = 15.0/256.0; - prolongation[3](34,9) = -5.0/256.0; - prolongation[3](34,10) = -5.0/256.0; - prolongation[3](34,11) = 15.0/256.0; - prolongation[3](34,12) = 75.0/256.0; - prolongation[3](34,13) = -25.0/256.0; - prolongation[3](34,14) = -25.0/256.0; - prolongation[3](34,15) = 75.0/256.0; - prolongation[3](34,32) = -75.0/256.0; - prolongation[3](34,33) = 25.0/256.0; - prolongation[3](34,34) = 225.0/256.0; - prolongation[3](34,35) = -75.0/256.0; - prolongation[3](35,8) = 1.0/16.0; - prolongation[3](35,12) = 5.0/16.0; - prolongation[3](35,32) = -5.0/16.0; - prolongation[3](35,34) = 15.0/16.0; - prolongation[3](36,11) = -1.0/256.0; - prolongation[3](36,15) = -5.0/256.0; - prolongation[3](36,19) = -1.0/256.0; - prolongation[3](36,23) = -5.0/256.0; - prolongation[3](36,34) = -15.0/256.0; - prolongation[3](36,35) = 5.0/256.0; - prolongation[3](36,38) = -15.0/256.0; - prolongation[3](36,39) = 5.0/256.0; - prolongation[3](36,46) = 9.0/256.0; - prolongation[3](36,47) = 9.0/256.0; - prolongation[3](36,54) = 45.0/256.0; - prolongation[3](36,55) = 45.0/256.0; - prolongation[3](36,60) = 135.0/256.0; - prolongation[3](36,61) = -45.0/256.0; - prolongation[3](36,62) = 135.0/256.0; - prolongation[3](36,63) = -45.0/256.0; - prolongation[3](37,34) = -1.0/16.0; - prolongation[3](37,38) = -1.0/16.0; - prolongation[3](37,60) = 9.0/16.0; - prolongation[3](37,62) = 9.0/16.0; - prolongation[3](38,0) = -5.0/4096.0; - prolongation[3](38,1) = -1.0/4096.0; - prolongation[3](38,2) = -5.0/4096.0; - prolongation[3](38,3) = -25.0/4096.0; - prolongation[3](38,4) = -5.0/4096.0; - prolongation[3](38,5) = -1.0/4096.0; - prolongation[3](38,6) = -5.0/4096.0; - prolongation[3](38,7) = -25.0/4096.0; - prolongation[3](38,8) = -15.0/4096.0; - prolongation[3](38,9) = 5.0/4096.0; - prolongation[3](38,10) = 5.0/4096.0; - prolongation[3](38,11) = -15.0/4096.0; - prolongation[3](38,12) = -75.0/4096.0; - prolongation[3](38,13) = 25.0/4096.0; - prolongation[3](38,14) = 25.0/4096.0; - prolongation[3](38,15) = -75.0/4096.0; - prolongation[3](38,16) = -15.0/4096.0; - prolongation[3](38,17) = 5.0/4096.0; - prolongation[3](38,18) = 5.0/4096.0; - prolongation[3](38,19) = -15.0/4096.0; - prolongation[3](38,20) = -75.0/4096.0; - prolongation[3](38,21) = 25.0/4096.0; - prolongation[3](38,22) = 25.0/4096.0; - prolongation[3](38,23) = -75.0/4096.0; - prolongation[3](38,24) = 45.0/4096.0; - prolongation[3](38,25) = 45.0/4096.0; - prolongation[3](38,26) = 9.0/4096.0; - prolongation[3](38,27) = 9.0/4096.0; - prolongation[3](38,28) = 45.0/4096.0; - prolongation[3](38,29) = 45.0/4096.0; - prolongation[3](38,30) = 225.0/4096.0; - prolongation[3](38,31) = 225.0/4096.0; - prolongation[3](38,32) = 75.0/4096.0; - prolongation[3](38,33) = -25.0/4096.0; - prolongation[3](38,34) = -225.0/4096.0; - prolongation[3](38,35) = 75.0/4096.0; - prolongation[3](38,36) = 75.0/4096.0; - prolongation[3](38,37) = -25.0/4096.0; - prolongation[3](38,38) = -225.0/4096.0; - prolongation[3](38,39) = 75.0/4096.0; - prolongation[3](38,40) = 135.0/4096.0; - prolongation[3](38,41) = -45.0/4096.0; - prolongation[3](38,42) = 135.0/4096.0; - prolongation[3](38,43) = -45.0/4096.0; - prolongation[3](38,44) = -45.0/4096.0; - prolongation[3](38,45) = -45.0/4096.0; - prolongation[3](38,46) = 135.0/4096.0; - prolongation[3](38,47) = 135.0/4096.0; - prolongation[3](38,48) = 675.0/4096.0; - prolongation[3](38,49) = -225.0/4096.0; - prolongation[3](38,50) = 675.0/4096.0; - prolongation[3](38,51) = -225.0/4096.0; - prolongation[3](38,52) = -225.0/4096.0; - prolongation[3](38,53) = -225.0/4096.0; - prolongation[3](38,54) = 675.0/4096.0; - prolongation[3](38,55) = 675.0/4096.0; - prolongation[3](38,56) = -675.0/4096.0; - prolongation[3](38,57) = 225.0/4096.0; - prolongation[3](38,58) = -675.0/4096.0; - prolongation[3](38,59) = 225.0/4096.0; - prolongation[3](38,60) = 2025.0/4096.0; - prolongation[3](38,61) = -675.0/4096.0; - prolongation[3](38,62) = 2025.0/4096.0; - prolongation[3](38,63) = -675.0/4096.0; - prolongation[3](39,8) = -1.0/256.0; - prolongation[3](39,12) = -5.0/256.0; - prolongation[3](39,16) = -1.0/256.0; - prolongation[3](39,20) = -5.0/256.0; - prolongation[3](39,32) = 5.0/256.0; - prolongation[3](39,34) = -15.0/256.0; - prolongation[3](39,36) = 5.0/256.0; - prolongation[3](39,38) = -15.0/256.0; - prolongation[3](39,40) = 9.0/256.0; - prolongation[3](39,42) = 9.0/256.0; - prolongation[3](39,48) = 45.0/256.0; - prolongation[3](39,50) = 45.0/256.0; - prolongation[3](39,56) = -45.0/256.0; - prolongation[3](39,58) = -45.0/256.0; - prolongation[3](39,60) = 135.0/256.0; - prolongation[3](39,62) = 135.0/256.0; - prolongation[3](40,0) = -25.0/4096.0; - prolongation[3](40,1) = -5.0/4096.0; - prolongation[3](40,2) = -5.0/4096.0; - prolongation[3](40,3) = -25.0/4096.0; - prolongation[3](40,4) = -5.0/4096.0; - prolongation[3](40,5) = -1.0/4096.0; - prolongation[3](40,6) = -1.0/4096.0; - prolongation[3](40,7) = -5.0/4096.0; - prolongation[3](40,8) = -75.0/4096.0; - prolongation[3](40,9) = 25.0/4096.0; - prolongation[3](40,10) = 45.0/4096.0; - prolongation[3](40,11) = 45.0/4096.0; - prolongation[3](40,12) = -75.0/4096.0; - prolongation[3](40,13) = 25.0/4096.0; - prolongation[3](40,14) = 225.0/4096.0; - prolongation[3](40,15) = 225.0/4096.0; - prolongation[3](40,16) = -15.0/4096.0; - prolongation[3](40,17) = 5.0/4096.0; - prolongation[3](40,18) = 9.0/4096.0; - prolongation[3](40,19) = 9.0/4096.0; - prolongation[3](40,20) = -15.0/4096.0; - prolongation[3](40,21) = 5.0/4096.0; - prolongation[3](40,22) = 45.0/4096.0; - prolongation[3](40,23) = 45.0/4096.0; - prolongation[3](40,24) = -75.0/4096.0; - prolongation[3](40,25) = 25.0/4096.0; - prolongation[3](40,26) = -15.0/4096.0; - prolongation[3](40,27) = 5.0/4096.0; - prolongation[3](40,28) = -15.0/4096.0; - prolongation[3](40,29) = 5.0/4096.0; - prolongation[3](40,30) = -75.0/4096.0; - prolongation[3](40,31) = 25.0/4096.0; - prolongation[3](40,32) = 675.0/4096.0; - prolongation[3](40,33) = -225.0/4096.0; - prolongation[3](40,34) = 675.0/4096.0; - prolongation[3](40,35) = -225.0/4096.0; - prolongation[3](40,36) = 135.0/4096.0; - prolongation[3](40,37) = -45.0/4096.0; - prolongation[3](40,38) = 135.0/4096.0; - prolongation[3](40,39) = -45.0/4096.0; - prolongation[3](40,40) = -225.0/4096.0; - prolongation[3](40,41) = 75.0/4096.0; - prolongation[3](40,42) = 75.0/4096.0; - prolongation[3](40,43) = -25.0/4096.0; - prolongation[3](40,44) = 135.0/4096.0; - prolongation[3](40,45) = -45.0/4096.0; - prolongation[3](40,46) = 135.0/4096.0; - prolongation[3](40,47) = -45.0/4096.0; - prolongation[3](40,48) = -225.0/4096.0; - prolongation[3](40,49) = 75.0/4096.0; - prolongation[3](40,50) = 75.0/4096.0; - prolongation[3](40,51) = -25.0/4096.0; - prolongation[3](40,52) = 675.0/4096.0; - prolongation[3](40,53) = -225.0/4096.0; - prolongation[3](40,54) = 675.0/4096.0; - prolongation[3](40,55) = -225.0/4096.0; - prolongation[3](40,56) = 2025.0/4096.0; - prolongation[3](40,57) = -675.0/4096.0; - prolongation[3](40,58) = -675.0/4096.0; - prolongation[3](40,59) = 225.0/4096.0; - prolongation[3](40,60) = 2025.0/4096.0; - prolongation[3](40,61) = -675.0/4096.0; - prolongation[3](40,62) = -675.0/4096.0; - prolongation[3](40,63) = 225.0/4096.0; - prolongation[3](41,8) = -5.0/256.0; - prolongation[3](41,12) = -5.0/256.0; - prolongation[3](41,16) = -1.0/256.0; - prolongation[3](41,20) = -1.0/256.0; - prolongation[3](41,32) = 45.0/256.0; - prolongation[3](41,34) = 45.0/256.0; - prolongation[3](41,36) = 9.0/256.0; - prolongation[3](41,38) = 9.0/256.0; - prolongation[3](41,40) = -15.0/256.0; - prolongation[3](41,42) = 5.0/256.0; - prolongation[3](41,48) = -15.0/256.0; - prolongation[3](41,50) = 5.0/256.0; - prolongation[3](41,56) = 135.0/256.0; - prolongation[3](41,58) = -45.0/256.0; - prolongation[3](41,60) = 135.0/256.0; - prolongation[3](41,62) = -45.0/256.0; - prolongation[3](42,24) = -5.0/256.0; - prolongation[3](42,26) = -1.0/256.0; - prolongation[3](42,28) = -1.0/256.0; - prolongation[3](42,30) = -5.0/256.0; - prolongation[3](42,40) = -15.0/256.0; - prolongation[3](42,41) = 5.0/256.0; - prolongation[3](42,44) = 9.0/256.0; - prolongation[3](42,46) = 9.0/256.0; - prolongation[3](42,48) = -15.0/256.0; - prolongation[3](42,49) = 5.0/256.0; - prolongation[3](42,52) = 45.0/256.0; - prolongation[3](42,54) = 45.0/256.0; - prolongation[3](42,56) = 135.0/256.0; - prolongation[3](42,57) = -45.0/256.0; - prolongation[3](42,60) = 135.0/256.0; - prolongation[3](42,61) = -45.0/256.0; - prolongation[3](43,40) = -1.0/16.0; - prolongation[3](43,48) = -1.0/16.0; - prolongation[3](43,56) = 9.0/16.0; - prolongation[3](43,60) = 9.0/16.0; - prolongation[3](44,11) = -5.0/256.0; - prolongation[3](44,15) = -5.0/256.0; - prolongation[3](44,19) = -1.0/256.0; - prolongation[3](44,23) = -1.0/256.0; - prolongation[3](44,34) = 45.0/256.0; - prolongation[3](44,35) = 45.0/256.0; - prolongation[3](44,38) = 9.0/256.0; - prolongation[3](44,39) = 9.0/256.0; - prolongation[3](44,46) = -15.0/256.0; - prolongation[3](44,47) = 5.0/256.0; - prolongation[3](44,54) = -15.0/256.0; - prolongation[3](44,55) = 5.0/256.0; - prolongation[3](44,60) = 135.0/256.0; - prolongation[3](44,61) = 135.0/256.0; - prolongation[3](44,62) = -45.0/256.0; - prolongation[3](44,63) = -45.0/256.0; - prolongation[3](45,46) = -1.0/16.0; - prolongation[3](45,54) = -1.0/16.0; - prolongation[3](45,60) = 9.0/16.0; - prolongation[3](45,61) = 9.0/16.0; - prolongation[3](46,0) = -5.0/4096.0; - prolongation[3](46,1) = -5.0/4096.0; - prolongation[3](46,2) = -25.0/4096.0; - prolongation[3](46,3) = -25.0/4096.0; - prolongation[3](46,4) = -1.0/4096.0; - prolongation[3](46,5) = -1.0/4096.0; - prolongation[3](46,6) = -5.0/4096.0; - prolongation[3](46,7) = -5.0/4096.0; - prolongation[3](46,8) = 45.0/4096.0; - prolongation[3](46,9) = 45.0/4096.0; - prolongation[3](46,10) = 25.0/4096.0; - prolongation[3](46,11) = -75.0/4096.0; - prolongation[3](46,12) = 225.0/4096.0; - prolongation[3](46,13) = 225.0/4096.0; - prolongation[3](46,14) = 25.0/4096.0; - prolongation[3](46,15) = -75.0/4096.0; - prolongation[3](46,16) = 9.0/4096.0; - prolongation[3](46,17) = 9.0/4096.0; - prolongation[3](46,18) = 5.0/4096.0; - prolongation[3](46,19) = -15.0/4096.0; - prolongation[3](46,20) = 45.0/4096.0; - prolongation[3](46,21) = 45.0/4096.0; - prolongation[3](46,22) = 5.0/4096.0; - prolongation[3](46,23) = -15.0/4096.0; - prolongation[3](46,24) = -15.0/4096.0; - prolongation[3](46,25) = 5.0/4096.0; - prolongation[3](46,26) = -15.0/4096.0; - prolongation[3](46,27) = 5.0/4096.0; - prolongation[3](46,28) = -75.0/4096.0; - prolongation[3](46,29) = 25.0/4096.0; - prolongation[3](46,30) = -75.0/4096.0; - prolongation[3](46,31) = 25.0/4096.0; - prolongation[3](46,32) = -225.0/4096.0; - prolongation[3](46,33) = -225.0/4096.0; - prolongation[3](46,34) = 675.0/4096.0; - prolongation[3](46,35) = 675.0/4096.0; - prolongation[3](46,36) = -45.0/4096.0; - prolongation[3](46,37) = -45.0/4096.0; - prolongation[3](46,38) = 135.0/4096.0; - prolongation[3](46,39) = 135.0/4096.0; - prolongation[3](46,40) = 135.0/4096.0; - prolongation[3](46,41) = 135.0/4096.0; - prolongation[3](46,42) = -45.0/4096.0; - prolongation[3](46,43) = -45.0/4096.0; - prolongation[3](46,44) = 75.0/4096.0; - prolongation[3](46,45) = -25.0/4096.0; - prolongation[3](46,46) = -225.0/4096.0; - prolongation[3](46,47) = 75.0/4096.0; - prolongation[3](46,48) = 675.0/4096.0; - prolongation[3](46,49) = 675.0/4096.0; - prolongation[3](46,50) = -225.0/4096.0; - prolongation[3](46,51) = -225.0/4096.0; - prolongation[3](46,52) = 75.0/4096.0; - prolongation[3](46,53) = -25.0/4096.0; - prolongation[3](46,54) = -225.0/4096.0; - prolongation[3](46,55) = 75.0/4096.0; - prolongation[3](46,56) = -675.0/4096.0; - prolongation[3](46,57) = -675.0/4096.0; - prolongation[3](46,58) = 225.0/4096.0; - prolongation[3](46,59) = 225.0/4096.0; - prolongation[3](46,60) = 2025.0/4096.0; - prolongation[3](46,61) = 2025.0/4096.0; - prolongation[3](46,62) = -675.0/4096.0; - prolongation[3](46,63) = -675.0/4096.0; - prolongation[3](47,24) = -1.0/256.0; - prolongation[3](47,26) = -1.0/256.0; - prolongation[3](47,28) = -5.0/256.0; - prolongation[3](47,30) = -5.0/256.0; - prolongation[3](47,40) = 9.0/256.0; - prolongation[3](47,41) = 9.0/256.0; - prolongation[3](47,44) = 5.0/256.0; - prolongation[3](47,46) = -15.0/256.0; - prolongation[3](47,48) = 45.0/256.0; - prolongation[3](47,49) = 45.0/256.0; - prolongation[3](47,52) = 5.0/256.0; - prolongation[3](47,54) = -15.0/256.0; - prolongation[3](47,56) = -45.0/256.0; - prolongation[3](47,57) = -45.0/256.0; - prolongation[3](47,60) = 135.0/256.0; - prolongation[3](47,61) = 135.0/256.0; - prolongation[3](48,2) = 5.0/256.0; - prolongation[3](48,3) = 25.0/256.0; - prolongation[3](48,6) = 1.0/256.0; - prolongation[3](48,7) = 5.0/256.0; - prolongation[3](48,12) = 75.0/256.0; - prolongation[3](48,13) = -25.0/256.0; - prolongation[3](48,20) = 15.0/256.0; - prolongation[3](48,21) = -5.0/256.0; - prolongation[3](48,28) = 15.0/256.0; - prolongation[3](48,29) = -5.0/256.0; - prolongation[3](48,30) = 75.0/256.0; - prolongation[3](48,31) = -25.0/256.0; - prolongation[3](48,48) = 225.0/256.0; - prolongation[3](48,49) = -75.0/256.0; - prolongation[3](48,50) = -75.0/256.0; - prolongation[3](48,51) = 25.0/256.0; - prolongation[3](49,12) = 5.0/16.0; - prolongation[3](49,20) = 1.0/16.0; - prolongation[3](49,48) = 15.0/16.0; - prolongation[3](49,50) = -5.0/16.0; - prolongation[3](50,28) = 1.0/16.0; - prolongation[3](50,30) = 5.0/16.0; - prolongation[3](50,48) = 15.0/16.0; - prolongation[3](50,49) = -5.0/16.0; - prolongation[3](51,48) = 1.0; - prolongation[3](52,15) = 5.0/16.0; - prolongation[3](52,23) = 1.0/16.0; - prolongation[3](52,54) = 15.0/16.0; - prolongation[3](52,55) = -5.0/16.0; - prolongation[3](53,54) = 1.0; - prolongation[3](54,0) = 5.0/256.0; - prolongation[3](54,3) = 25.0/256.0; - prolongation[3](54,4) = 1.0/256.0; - prolongation[3](54,7) = 5.0/256.0; - prolongation[3](54,14) = -25.0/256.0; - prolongation[3](54,15) = 75.0/256.0; - prolongation[3](54,22) = -5.0/256.0; - prolongation[3](54,23) = 15.0/256.0; - prolongation[3](54,24) = 15.0/256.0; - prolongation[3](54,25) = -5.0/256.0; - prolongation[3](54,30) = 75.0/256.0; - prolongation[3](54,31) = -25.0/256.0; - prolongation[3](54,52) = -75.0/256.0; - prolongation[3](54,53) = 25.0/256.0; - prolongation[3](54,54) = 225.0/256.0; - prolongation[3](54,55) = -75.0/256.0; - prolongation[3](55,24) = 1.0/16.0; - prolongation[3](55,30) = 5.0/16.0; - prolongation[3](55,52) = -5.0/16.0; - prolongation[3](55,54) = 15.0/16.0; - prolongation[3](56,11) = 5.0/256.0; - prolongation[3](56,15) = 25.0/256.0; - prolongation[3](56,19) = 1.0/256.0; - prolongation[3](56,23) = 5.0/256.0; - prolongation[3](56,34) = 75.0/256.0; - prolongation[3](56,35) = -25.0/256.0; - prolongation[3](56,38) = 15.0/256.0; - prolongation[3](56,39) = -5.0/256.0; - prolongation[3](56,46) = 15.0/256.0; - prolongation[3](56,47) = -5.0/256.0; - prolongation[3](56,54) = 75.0/256.0; - prolongation[3](56,55) = -25.0/256.0; - prolongation[3](56,60) = 225.0/256.0; - prolongation[3](56,61) = -75.0/256.0; - prolongation[3](56,62) = -75.0/256.0; - prolongation[3](56,63) = 25.0/256.0; - prolongation[3](57,34) = 5.0/16.0; - prolongation[3](57,38) = 1.0/16.0; - prolongation[3](57,60) = 15.0/16.0; - prolongation[3](57,62) = -5.0/16.0; - prolongation[3](58,46) = 1.0/16.0; - prolongation[3](58,54) = 5.0/16.0; - prolongation[3](58,60) = 15.0/16.0; - prolongation[3](58,61) = -5.0/16.0; - prolongation[3](59,60) = 1.0; - prolongation[3](60,0) = 25.0/4096.0; - prolongation[3](60,1) = 5.0/4096.0; - prolongation[3](60,2) = 25.0/4096.0; - prolongation[3](60,3) = 125.0/4096.0; - prolongation[3](60,4) = 5.0/4096.0; - prolongation[3](60,5) = 1.0/4096.0; - prolongation[3](60,6) = 5.0/4096.0; - prolongation[3](60,7) = 25.0/4096.0; - prolongation[3](60,8) = 75.0/4096.0; - prolongation[3](60,9) = -25.0/4096.0; - prolongation[3](60,10) = -25.0/4096.0; - prolongation[3](60,11) = 75.0/4096.0; - prolongation[3](60,12) = 375.0/4096.0; - prolongation[3](60,13) = -125.0/4096.0; - prolongation[3](60,14) = -125.0/4096.0; - prolongation[3](60,15) = 375.0/4096.0; - prolongation[3](60,16) = 15.0/4096.0; - prolongation[3](60,17) = -5.0/4096.0; - prolongation[3](60,18) = -5.0/4096.0; - prolongation[3](60,19) = 15.0/4096.0; - prolongation[3](60,20) = 75.0/4096.0; - prolongation[3](60,21) = -25.0/4096.0; - prolongation[3](60,22) = -25.0/4096.0; - prolongation[3](60,23) = 75.0/4096.0; - prolongation[3](60,24) = 75.0/4096.0; - prolongation[3](60,25) = -25.0/4096.0; - prolongation[3](60,26) = 15.0/4096.0; - prolongation[3](60,27) = -5.0/4096.0; - prolongation[3](60,28) = 75.0/4096.0; - prolongation[3](60,29) = -25.0/4096.0; - prolongation[3](60,30) = 375.0/4096.0; - prolongation[3](60,31) = -125.0/4096.0; - prolongation[3](60,32) = -375.0/4096.0; - prolongation[3](60,33) = 125.0/4096.0; - prolongation[3](60,34) = 1125.0/4096.0; - prolongation[3](60,35) = -375.0/4096.0; - prolongation[3](60,36) = -75.0/4096.0; - prolongation[3](60,37) = 25.0/4096.0; - prolongation[3](60,38) = 225.0/4096.0; - prolongation[3](60,39) = -75.0/4096.0; - prolongation[3](60,40) = 225.0/4096.0; - prolongation[3](60,41) = -75.0/4096.0; - prolongation[3](60,42) = -75.0/4096.0; - prolongation[3](60,43) = 25.0/4096.0; - prolongation[3](60,44) = -75.0/4096.0; - prolongation[3](60,45) = 25.0/4096.0; - prolongation[3](60,46) = 225.0/4096.0; - prolongation[3](60,47) = -75.0/4096.0; - prolongation[3](60,48) = 1125.0/4096.0; - prolongation[3](60,49) = -375.0/4096.0; - prolongation[3](60,50) = -375.0/4096.0; - prolongation[3](60,51) = 125.0/4096.0; - prolongation[3](60,52) = -375.0/4096.0; - prolongation[3](60,53) = 125.0/4096.0; - prolongation[3](60,54) = 1125.0/4096.0; - prolongation[3](60,55) = -375.0/4096.0; - prolongation[3](60,56) = -1125.0/4096.0; - prolongation[3](60,57) = 375.0/4096.0; - prolongation[3](60,58) = 375.0/4096.0; - prolongation[3](60,59) = -125.0/4096.0; - prolongation[3](60,60) = 3375.0/4096.0; - prolongation[3](60,61) = -1125.0/4096.0; - prolongation[3](60,62) = -1125.0/4096.0; - prolongation[3](60,63) = 375.0/4096.0; - prolongation[3](61,8) = 5.0/256.0; - prolongation[3](61,12) = 25.0/256.0; - prolongation[3](61,16) = 1.0/256.0; - prolongation[3](61,20) = 5.0/256.0; - prolongation[3](61,32) = -25.0/256.0; - prolongation[3](61,34) = 75.0/256.0; - prolongation[3](61,36) = -5.0/256.0; - prolongation[3](61,38) = 15.0/256.0; - prolongation[3](61,40) = 15.0/256.0; - prolongation[3](61,42) = -5.0/256.0; - prolongation[3](61,48) = 75.0/256.0; - prolongation[3](61,50) = -25.0/256.0; - prolongation[3](61,56) = -75.0/256.0; - prolongation[3](61,58) = 25.0/256.0; - prolongation[3](61,60) = 225.0/256.0; - prolongation[3](61,62) = -75.0/256.0; - prolongation[3](62,24) = 5.0/256.0; - prolongation[3](62,26) = 1.0/256.0; - prolongation[3](62,28) = 5.0/256.0; - prolongation[3](62,30) = 25.0/256.0; - prolongation[3](62,40) = 15.0/256.0; - prolongation[3](62,41) = -5.0/256.0; - prolongation[3](62,44) = -5.0/256.0; - prolongation[3](62,46) = 15.0/256.0; - prolongation[3](62,48) = 75.0/256.0; - prolongation[3](62,49) = -25.0/256.0; - prolongation[3](62,52) = -25.0/256.0; - prolongation[3](62,54) = 75.0/256.0; - prolongation[3](62,56) = -75.0/256.0; - prolongation[3](62,57) = 25.0/256.0; - prolongation[3](62,60) = 225.0/256.0; - prolongation[3](62,61) = -75.0/256.0; - prolongation[3](63,40) = 1.0/16.0; - prolongation[3](63,48) = 5.0/16.0; - prolongation[3](63,56) = -5.0/16.0; - prolongation[3](63,60) = 15.0/16.0; - prolongation[4](0,0) = -1.0/16.0; - prolongation[4](0,4) = -1.0/16.0; - prolongation[4](0,24) = 9.0/16.0; - prolongation[4](0,25) = 9.0/16.0; - prolongation[4](1,0) = 1.0/256.0; - prolongation[4](1,1) = 1.0/256.0; - prolongation[4](1,4) = 1.0/256.0; - prolongation[4](1,5) = 1.0/256.0; - prolongation[4](1,8) = -9.0/256.0; - prolongation[4](1,9) = -9.0/256.0; - prolongation[4](1,16) = -9.0/256.0; - prolongation[4](1,17) = -9.0/256.0; - prolongation[4](1,24) = -9.0/256.0; - prolongation[4](1,25) = -9.0/256.0; - prolongation[4](1,26) = -9.0/256.0; - prolongation[4](1,27) = -9.0/256.0; - prolongation[4](1,40) = 81.0/256.0; - prolongation[4](1,41) = 81.0/256.0; - prolongation[4](1,42) = 81.0/256.0; - prolongation[4](1,43) = 81.0/256.0; - prolongation[4](2,0) = -1.0/4096.0; - prolongation[4](2,1) = -1.0/4096.0; - prolongation[4](2,2) = -1.0/4096.0; - prolongation[4](2,3) = -1.0/4096.0; - prolongation[4](2,4) = -1.0/4096.0; - prolongation[4](2,5) = -1.0/4096.0; - prolongation[4](2,6) = -1.0/4096.0; - prolongation[4](2,7) = -1.0/4096.0; - prolongation[4](2,8) = 9.0/4096.0; - prolongation[4](2,9) = 9.0/4096.0; - prolongation[4](2,10) = 9.0/4096.0; - prolongation[4](2,11) = 9.0/4096.0; - prolongation[4](2,12) = 9.0/4096.0; - prolongation[4](2,13) = 9.0/4096.0; - prolongation[4](2,14) = 9.0/4096.0; - prolongation[4](2,15) = 9.0/4096.0; - prolongation[4](2,16) = 9.0/4096.0; - prolongation[4](2,17) = 9.0/4096.0; - prolongation[4](2,18) = 9.0/4096.0; - prolongation[4](2,19) = 9.0/4096.0; - prolongation[4](2,20) = 9.0/4096.0; - prolongation[4](2,21) = 9.0/4096.0; - prolongation[4](2,22) = 9.0/4096.0; - prolongation[4](2,23) = 9.0/4096.0; - prolongation[4](2,24) = 9.0/4096.0; - prolongation[4](2,25) = 9.0/4096.0; - prolongation[4](2,26) = 9.0/4096.0; - prolongation[4](2,27) = 9.0/4096.0; - prolongation[4](2,28) = 9.0/4096.0; - prolongation[4](2,29) = 9.0/4096.0; - prolongation[4](2,30) = 9.0/4096.0; - prolongation[4](2,31) = 9.0/4096.0; - prolongation[4](2,32) = -81.0/4096.0; - prolongation[4](2,33) = -81.0/4096.0; - prolongation[4](2,34) = -81.0/4096.0; - prolongation[4](2,35) = -81.0/4096.0; - prolongation[4](2,36) = -81.0/4096.0; - prolongation[4](2,37) = -81.0/4096.0; - prolongation[4](2,38) = -81.0/4096.0; - prolongation[4](2,39) = -81.0/4096.0; - prolongation[4](2,40) = -81.0/4096.0; - prolongation[4](2,41) = -81.0/4096.0; - prolongation[4](2,42) = -81.0/4096.0; - prolongation[4](2,43) = -81.0/4096.0; - prolongation[4](2,44) = -81.0/4096.0; - prolongation[4](2,45) = -81.0/4096.0; - prolongation[4](2,46) = -81.0/4096.0; - prolongation[4](2,47) = -81.0/4096.0; - prolongation[4](2,48) = -81.0/4096.0; - prolongation[4](2,49) = -81.0/4096.0; - prolongation[4](2,50) = -81.0/4096.0; - prolongation[4](2,51) = -81.0/4096.0; - prolongation[4](2,52) = -81.0/4096.0; - prolongation[4](2,53) = -81.0/4096.0; - prolongation[4](2,54) = -81.0/4096.0; - prolongation[4](2,55) = -81.0/4096.0; - prolongation[4](2,56) = 729.0/4096.0; - prolongation[4](2,57) = 729.0/4096.0; - prolongation[4](2,58) = 729.0/4096.0; - prolongation[4](2,59) = 729.0/4096.0; - prolongation[4](2,60) = 729.0/4096.0; - prolongation[4](2,61) = 729.0/4096.0; - prolongation[4](2,62) = 729.0/4096.0; - prolongation[4](2,63) = 729.0/4096.0; - prolongation[4](3,0) = 1.0/256.0; - prolongation[4](3,3) = 1.0/256.0; - prolongation[4](3,4) = 1.0/256.0; - prolongation[4](3,7) = 1.0/256.0; - prolongation[4](3,14) = -9.0/256.0; - prolongation[4](3,15) = -9.0/256.0; - prolongation[4](3,22) = -9.0/256.0; - prolongation[4](3,23) = -9.0/256.0; - prolongation[4](3,24) = -9.0/256.0; - prolongation[4](3,25) = -9.0/256.0; - prolongation[4](3,30) = -9.0/256.0; - prolongation[4](3,31) = -9.0/256.0; - prolongation[4](3,52) = 81.0/256.0; - prolongation[4](3,53) = 81.0/256.0; - prolongation[4](3,54) = 81.0/256.0; - prolongation[4](3,55) = 81.0/256.0; - prolongation[4](4,4) = 1.0; - prolongation[4](5,4) = -1.0/16.0; - prolongation[4](5,5) = -1.0/16.0; - prolongation[4](5,16) = 9.0/16.0; - prolongation[4](5,17) = 9.0/16.0; - prolongation[4](6,4) = 1.0/256.0; - prolongation[4](6,5) = 1.0/256.0; - prolongation[4](6,6) = 1.0/256.0; - prolongation[4](6,7) = 1.0/256.0; - prolongation[4](6,16) = -9.0/256.0; - prolongation[4](6,17) = -9.0/256.0; - prolongation[4](6,18) = -9.0/256.0; - prolongation[4](6,19) = -9.0/256.0; - prolongation[4](6,20) = -9.0/256.0; - prolongation[4](6,21) = -9.0/256.0; - prolongation[4](6,22) = -9.0/256.0; - prolongation[4](6,23) = -9.0/256.0; - prolongation[4](6,36) = 81.0/256.0; - prolongation[4](6,37) = 81.0/256.0; - prolongation[4](6,38) = 81.0/256.0; - prolongation[4](6,39) = 81.0/256.0; - prolongation[4](7,4) = -1.0/16.0; - prolongation[4](7,7) = -1.0/16.0; - prolongation[4](7,22) = 9.0/16.0; - prolongation[4](7,23) = 9.0/16.0; - prolongation[4](8,0) = -5.0/256.0; - prolongation[4](8,1) = -1.0/256.0; - prolongation[4](8,4) = -5.0/256.0; - prolongation[4](8,5) = -1.0/256.0; - prolongation[4](8,8) = -15.0/256.0; - prolongation[4](8,9) = 5.0/256.0; - prolongation[4](8,16) = -15.0/256.0; - prolongation[4](8,17) = 5.0/256.0; - prolongation[4](8,24) = 45.0/256.0; - prolongation[4](8,25) = 45.0/256.0; - prolongation[4](8,26) = 9.0/256.0; - prolongation[4](8,27) = 9.0/256.0; - prolongation[4](8,40) = 135.0/256.0; - prolongation[4](8,41) = -45.0/256.0; - prolongation[4](8,42) = 135.0/256.0; - prolongation[4](8,43) = -45.0/256.0; - prolongation[4](9,8) = -1.0/16.0; - prolongation[4](9,16) = -1.0/16.0; - prolongation[4](9,40) = 9.0/16.0; - prolongation[4](9,42) = 9.0/16.0; - prolongation[4](10,0) = 5.0/4096.0; - prolongation[4](10,1) = 5.0/4096.0; - prolongation[4](10,2) = 1.0/4096.0; - prolongation[4](10,3) = 1.0/4096.0; - prolongation[4](10,4) = 5.0/4096.0; - prolongation[4](10,5) = 5.0/4096.0; - prolongation[4](10,6) = 1.0/4096.0; - prolongation[4](10,7) = 1.0/4096.0; - prolongation[4](10,8) = -45.0/4096.0; - prolongation[4](10,9) = -45.0/4096.0; - prolongation[4](10,10) = 15.0/4096.0; - prolongation[4](10,11) = -5.0/4096.0; - prolongation[4](10,12) = -9.0/4096.0; - prolongation[4](10,13) = -9.0/4096.0; - prolongation[4](10,14) = 15.0/4096.0; - prolongation[4](10,15) = -5.0/4096.0; - prolongation[4](10,16) = -45.0/4096.0; - prolongation[4](10,17) = -45.0/4096.0; - prolongation[4](10,18) = 15.0/4096.0; - prolongation[4](10,19) = -5.0/4096.0; - prolongation[4](10,20) = -9.0/4096.0; - prolongation[4](10,21) = -9.0/4096.0; - prolongation[4](10,22) = 15.0/4096.0; - prolongation[4](10,23) = -5.0/4096.0; - prolongation[4](10,24) = -45.0/4096.0; - prolongation[4](10,25) = -45.0/4096.0; - prolongation[4](10,26) = -45.0/4096.0; - prolongation[4](10,27) = -45.0/4096.0; - prolongation[4](10,28) = -9.0/4096.0; - prolongation[4](10,29) = -9.0/4096.0; - prolongation[4](10,30) = -9.0/4096.0; - prolongation[4](10,31) = -9.0/4096.0; - prolongation[4](10,32) = -135.0/4096.0; - prolongation[4](10,33) = -135.0/4096.0; - prolongation[4](10,34) = 45.0/4096.0; - prolongation[4](10,35) = 45.0/4096.0; - prolongation[4](10,36) = -135.0/4096.0; - prolongation[4](10,37) = -135.0/4096.0; - prolongation[4](10,38) = 45.0/4096.0; - prolongation[4](10,39) = 45.0/4096.0; - prolongation[4](10,40) = 405.0/4096.0; - prolongation[4](10,41) = 405.0/4096.0; - prolongation[4](10,42) = 405.0/4096.0; - prolongation[4](10,43) = 405.0/4096.0; - prolongation[4](10,44) = -135.0/4096.0; - prolongation[4](10,45) = -135.0/4096.0; - prolongation[4](10,46) = 45.0/4096.0; - prolongation[4](10,47) = 45.0/4096.0; - prolongation[4](10,48) = 81.0/4096.0; - prolongation[4](10,49) = 81.0/4096.0; - prolongation[4](10,50) = 81.0/4096.0; - prolongation[4](10,51) = 81.0/4096.0; - prolongation[4](10,52) = -135.0/4096.0; - prolongation[4](10,53) = -135.0/4096.0; - prolongation[4](10,54) = 45.0/4096.0; - prolongation[4](10,55) = 45.0/4096.0; - prolongation[4](10,56) = 1215.0/4096.0; - prolongation[4](10,57) = 1215.0/4096.0; - prolongation[4](10,58) = 1215.0/4096.0; - prolongation[4](10,59) = 1215.0/4096.0; - prolongation[4](10,60) = -405.0/4096.0; - prolongation[4](10,61) = -405.0/4096.0; - prolongation[4](10,62) = -405.0/4096.0; - prolongation[4](10,63) = -405.0/4096.0; - prolongation[4](11,10) = 1.0/256.0; - prolongation[4](11,14) = 1.0/256.0; - prolongation[4](11,18) = 1.0/256.0; - prolongation[4](11,22) = 1.0/256.0; - prolongation[4](11,32) = -9.0/256.0; - prolongation[4](11,33) = -9.0/256.0; - prolongation[4](11,36) = -9.0/256.0; - prolongation[4](11,37) = -9.0/256.0; - prolongation[4](11,44) = -9.0/256.0; - prolongation[4](11,45) = -9.0/256.0; - prolongation[4](11,52) = -9.0/256.0; - prolongation[4](11,53) = -9.0/256.0; - prolongation[4](11,56) = 81.0/256.0; - prolongation[4](11,57) = 81.0/256.0; - prolongation[4](11,58) = 81.0/256.0; - prolongation[4](11,59) = 81.0/256.0; - prolongation[4](12,0) = 5.0/4096.0; - prolongation[4](12,1) = 1.0/4096.0; - prolongation[4](12,2) = 1.0/4096.0; - prolongation[4](12,3) = 5.0/4096.0; - prolongation[4](12,4) = 5.0/4096.0; - prolongation[4](12,5) = 1.0/4096.0; - prolongation[4](12,6) = 1.0/4096.0; - prolongation[4](12,7) = 5.0/4096.0; - prolongation[4](12,8) = 15.0/4096.0; - prolongation[4](12,9) = -5.0/4096.0; - prolongation[4](12,10) = -9.0/4096.0; - prolongation[4](12,11) = -9.0/4096.0; - prolongation[4](12,12) = 15.0/4096.0; - prolongation[4](12,13) = -5.0/4096.0; - prolongation[4](12,14) = -45.0/4096.0; - prolongation[4](12,15) = -45.0/4096.0; - prolongation[4](12,16) = 15.0/4096.0; - prolongation[4](12,17) = -5.0/4096.0; - prolongation[4](12,18) = -9.0/4096.0; - prolongation[4](12,19) = -9.0/4096.0; - prolongation[4](12,20) = 15.0/4096.0; - prolongation[4](12,21) = -5.0/4096.0; - prolongation[4](12,22) = -45.0/4096.0; - prolongation[4](12,23) = -45.0/4096.0; - prolongation[4](12,24) = -45.0/4096.0; - prolongation[4](12,25) = -45.0/4096.0; - prolongation[4](12,26) = -9.0/4096.0; - prolongation[4](12,27) = -9.0/4096.0; - prolongation[4](12,28) = -9.0/4096.0; - prolongation[4](12,29) = -9.0/4096.0; - prolongation[4](12,30) = -45.0/4096.0; - prolongation[4](12,31) = -45.0/4096.0; - prolongation[4](12,32) = -135.0/4096.0; - prolongation[4](12,33) = 45.0/4096.0; - prolongation[4](12,34) = -135.0/4096.0; - prolongation[4](12,35) = 45.0/4096.0; - prolongation[4](12,36) = -135.0/4096.0; - prolongation[4](12,37) = 45.0/4096.0; - prolongation[4](12,38) = -135.0/4096.0; - prolongation[4](12,39) = 45.0/4096.0; - prolongation[4](12,40) = -135.0/4096.0; - prolongation[4](12,41) = 45.0/4096.0; - prolongation[4](12,42) = -135.0/4096.0; - prolongation[4](12,43) = 45.0/4096.0; - prolongation[4](12,44) = 81.0/4096.0; - prolongation[4](12,45) = 81.0/4096.0; - prolongation[4](12,46) = 81.0/4096.0; - prolongation[4](12,47) = 81.0/4096.0; - prolongation[4](12,48) = -135.0/4096.0; - prolongation[4](12,49) = 45.0/4096.0; - prolongation[4](12,50) = -135.0/4096.0; - prolongation[4](12,51) = 45.0/4096.0; - prolongation[4](12,52) = 405.0/4096.0; - prolongation[4](12,53) = 405.0/4096.0; - prolongation[4](12,54) = 405.0/4096.0; - prolongation[4](12,55) = 405.0/4096.0; - prolongation[4](12,56) = 1215.0/4096.0; - prolongation[4](12,57) = -405.0/4096.0; - prolongation[4](12,58) = 1215.0/4096.0; - prolongation[4](12,59) = -405.0/4096.0; - prolongation[4](12,60) = 1215.0/4096.0; - prolongation[4](12,61) = -405.0/4096.0; - prolongation[4](12,62) = 1215.0/4096.0; - prolongation[4](12,63) = -405.0/4096.0; - prolongation[4](13,8) = 1.0/256.0; - prolongation[4](13,12) = 1.0/256.0; - prolongation[4](13,16) = 1.0/256.0; - prolongation[4](13,20) = 1.0/256.0; - prolongation[4](13,32) = -9.0/256.0; - prolongation[4](13,34) = -9.0/256.0; - prolongation[4](13,36) = -9.0/256.0; - prolongation[4](13,38) = -9.0/256.0; - prolongation[4](13,40) = -9.0/256.0; - prolongation[4](13,42) = -9.0/256.0; - prolongation[4](13,48) = -9.0/256.0; - prolongation[4](13,50) = -9.0/256.0; - prolongation[4](13,56) = 81.0/256.0; - prolongation[4](13,58) = 81.0/256.0; - prolongation[4](13,60) = 81.0/256.0; - prolongation[4](13,62) = 81.0/256.0; - prolongation[4](14,0) = -5.0/256.0; - prolongation[4](14,3) = -1.0/256.0; - prolongation[4](14,4) = -5.0/256.0; - prolongation[4](14,7) = -1.0/256.0; - prolongation[4](14,14) = -15.0/256.0; - prolongation[4](14,15) = 5.0/256.0; - prolongation[4](14,22) = -15.0/256.0; - prolongation[4](14,23) = 5.0/256.0; - prolongation[4](14,24) = 45.0/256.0; - prolongation[4](14,25) = 45.0/256.0; - prolongation[4](14,30) = 9.0/256.0; - prolongation[4](14,31) = 9.0/256.0; - prolongation[4](14,52) = 135.0/256.0; - prolongation[4](14,53) = 135.0/256.0; - prolongation[4](14,54) = -45.0/256.0; - prolongation[4](14,55) = -45.0/256.0; - prolongation[4](15,14) = -1.0/16.0; - prolongation[4](15,22) = -1.0/16.0; - prolongation[4](15,52) = 9.0/16.0; - prolongation[4](15,53) = 9.0/16.0; - prolongation[4](16,4) = 5.0/16.0; - prolongation[4](16,5) = 1.0/16.0; - prolongation[4](16,16) = 15.0/16.0; - prolongation[4](16,17) = -5.0/16.0; - prolongation[4](17,16) = 1.0; - prolongation[4](18,4) = -5.0/256.0; - prolongation[4](18,5) = -5.0/256.0; - prolongation[4](18,6) = -1.0/256.0; - prolongation[4](18,7) = -1.0/256.0; - prolongation[4](18,16) = 45.0/256.0; - prolongation[4](18,17) = 45.0/256.0; - prolongation[4](18,18) = -15.0/256.0; - prolongation[4](18,19) = 5.0/256.0; - prolongation[4](18,20) = 9.0/256.0; - prolongation[4](18,21) = 9.0/256.0; - prolongation[4](18,22) = -15.0/256.0; - prolongation[4](18,23) = 5.0/256.0; - prolongation[4](18,36) = 135.0/256.0; - prolongation[4](18,37) = 135.0/256.0; - prolongation[4](18,38) = -45.0/256.0; - prolongation[4](18,39) = -45.0/256.0; - prolongation[4](19,18) = -1.0/16.0; - prolongation[4](19,22) = -1.0/16.0; - prolongation[4](19,36) = 9.0/16.0; - prolongation[4](19,37) = 9.0/16.0; - prolongation[4](20,4) = -5.0/256.0; - prolongation[4](20,5) = -1.0/256.0; - prolongation[4](20,6) = -1.0/256.0; - prolongation[4](20,7) = -5.0/256.0; - prolongation[4](20,16) = -15.0/256.0; - prolongation[4](20,17) = 5.0/256.0; - prolongation[4](20,18) = 9.0/256.0; - prolongation[4](20,19) = 9.0/256.0; - prolongation[4](20,20) = -15.0/256.0; - prolongation[4](20,21) = 5.0/256.0; - prolongation[4](20,22) = 45.0/256.0; - prolongation[4](20,23) = 45.0/256.0; - prolongation[4](20,36) = 135.0/256.0; - prolongation[4](20,37) = -45.0/256.0; - prolongation[4](20,38) = 135.0/256.0; - prolongation[4](20,39) = -45.0/256.0; - prolongation[4](21,16) = -1.0/16.0; - prolongation[4](21,20) = -1.0/16.0; - prolongation[4](21,36) = 9.0/16.0; - prolongation[4](21,38) = 9.0/16.0; - prolongation[4](22,4) = 5.0/16.0; - prolongation[4](22,7) = 1.0/16.0; - prolongation[4](22,22) = 15.0/16.0; - prolongation[4](22,23) = -5.0/16.0; - prolongation[4](23,22) = 1.0; - prolongation[4](24,25) = 1.0; - prolongation[4](25,0) = 1.0/16.0; - prolongation[4](25,4) = 5.0/16.0; - prolongation[4](25,24) = -5.0/16.0; - prolongation[4](25,25) = 15.0/16.0; - prolongation[4](26,25) = -1.0/16.0; - prolongation[4](26,27) = -1.0/16.0; - prolongation[4](26,42) = 9.0/16.0; - prolongation[4](26,43) = 9.0/16.0; - prolongation[4](27,0) = -1.0/256.0; - prolongation[4](27,1) = -1.0/256.0; - prolongation[4](27,4) = -5.0/256.0; - prolongation[4](27,5) = -5.0/256.0; - prolongation[4](27,8) = 9.0/256.0; - prolongation[4](27,9) = 9.0/256.0; - prolongation[4](27,16) = 45.0/256.0; - prolongation[4](27,17) = 45.0/256.0; - prolongation[4](27,24) = 5.0/256.0; - prolongation[4](27,25) = -15.0/256.0; - prolongation[4](27,26) = 5.0/256.0; - prolongation[4](27,27) = -15.0/256.0; - prolongation[4](27,40) = -45.0/256.0; - prolongation[4](27,41) = -45.0/256.0; - prolongation[4](27,42) = 135.0/256.0; - prolongation[4](27,43) = 135.0/256.0; - prolongation[4](28,25) = 1.0/256.0; - prolongation[4](28,27) = 1.0/256.0; - prolongation[4](28,29) = 1.0/256.0; - prolongation[4](28,31) = 1.0/256.0; - prolongation[4](28,42) = -9.0/256.0; - prolongation[4](28,43) = -9.0/256.0; - prolongation[4](28,45) = -9.0/256.0; - prolongation[4](28,47) = -9.0/256.0; - prolongation[4](28,50) = -9.0/256.0; - prolongation[4](28,51) = -9.0/256.0; - prolongation[4](28,53) = -9.0/256.0; - prolongation[4](28,55) = -9.0/256.0; - prolongation[4](28,58) = 81.0/256.0; - prolongation[4](28,59) = 81.0/256.0; - prolongation[4](28,62) = 81.0/256.0; - prolongation[4](28,63) = 81.0/256.0; - prolongation[4](29,0) = 1.0/4096.0; - prolongation[4](29,1) = 1.0/4096.0; - prolongation[4](29,2) = 1.0/4096.0; - prolongation[4](29,3) = 1.0/4096.0; - prolongation[4](29,4) = 5.0/4096.0; - prolongation[4](29,5) = 5.0/4096.0; - prolongation[4](29,6) = 5.0/4096.0; - prolongation[4](29,7) = 5.0/4096.0; - prolongation[4](29,8) = -9.0/4096.0; - prolongation[4](29,9) = -9.0/4096.0; - prolongation[4](29,10) = -9.0/4096.0; - prolongation[4](29,11) = -9.0/4096.0; - prolongation[4](29,12) = -9.0/4096.0; - prolongation[4](29,13) = -9.0/4096.0; - prolongation[4](29,14) = -9.0/4096.0; - prolongation[4](29,15) = -9.0/4096.0; - prolongation[4](29,16) = -45.0/4096.0; - prolongation[4](29,17) = -45.0/4096.0; - prolongation[4](29,18) = -45.0/4096.0; - prolongation[4](29,19) = -45.0/4096.0; - prolongation[4](29,20) = -45.0/4096.0; - prolongation[4](29,21) = -45.0/4096.0; - prolongation[4](29,22) = -45.0/4096.0; - prolongation[4](29,23) = -45.0/4096.0; - prolongation[4](29,24) = -5.0/4096.0; - prolongation[4](29,25) = 15.0/4096.0; - prolongation[4](29,26) = -5.0/4096.0; - prolongation[4](29,27) = 15.0/4096.0; - prolongation[4](29,28) = -5.0/4096.0; - prolongation[4](29,29) = 15.0/4096.0; - prolongation[4](29,30) = -5.0/4096.0; - prolongation[4](29,31) = 15.0/4096.0; - prolongation[4](29,32) = 81.0/4096.0; - prolongation[4](29,33) = 81.0/4096.0; - prolongation[4](29,34) = 81.0/4096.0; - prolongation[4](29,35) = 81.0/4096.0; - prolongation[4](29,36) = 405.0/4096.0; - prolongation[4](29,37) = 405.0/4096.0; - prolongation[4](29,38) = 405.0/4096.0; - prolongation[4](29,39) = 405.0/4096.0; - prolongation[4](29,40) = 45.0/4096.0; - prolongation[4](29,41) = 45.0/4096.0; - prolongation[4](29,42) = -135.0/4096.0; - prolongation[4](29,43) = -135.0/4096.0; - prolongation[4](29,44) = 45.0/4096.0; - prolongation[4](29,45) = -135.0/4096.0; - prolongation[4](29,46) = 45.0/4096.0; - prolongation[4](29,47) = -135.0/4096.0; - prolongation[4](29,48) = 45.0/4096.0; - prolongation[4](29,49) = 45.0/4096.0; - prolongation[4](29,50) = -135.0/4096.0; - prolongation[4](29,51) = -135.0/4096.0; - prolongation[4](29,52) = 45.0/4096.0; - prolongation[4](29,53) = -135.0/4096.0; - prolongation[4](29,54) = 45.0/4096.0; - prolongation[4](29,55) = -135.0/4096.0; - prolongation[4](29,56) = -405.0/4096.0; - prolongation[4](29,57) = -405.0/4096.0; - prolongation[4](29,58) = 1215.0/4096.0; - prolongation[4](29,59) = 1215.0/4096.0; - prolongation[4](29,60) = -405.0/4096.0; - prolongation[4](29,61) = -405.0/4096.0; - prolongation[4](29,62) = 1215.0/4096.0; - prolongation[4](29,63) = 1215.0/4096.0; - prolongation[4](30,25) = -1.0/16.0; - prolongation[4](30,31) = -1.0/16.0; - prolongation[4](30,53) = 9.0/16.0; - prolongation[4](30,55) = 9.0/16.0; - prolongation[4](31,0) = -1.0/256.0; - prolongation[4](31,3) = -1.0/256.0; - prolongation[4](31,4) = -5.0/256.0; - prolongation[4](31,7) = -5.0/256.0; - prolongation[4](31,14) = 9.0/256.0; - prolongation[4](31,15) = 9.0/256.0; - prolongation[4](31,22) = 45.0/256.0; - prolongation[4](31,23) = 45.0/256.0; - prolongation[4](31,24) = 5.0/256.0; - prolongation[4](31,25) = -15.0/256.0; - prolongation[4](31,30) = 5.0/256.0; - prolongation[4](31,31) = -15.0/256.0; - prolongation[4](31,52) = -45.0/256.0; - prolongation[4](31,53) = 135.0/256.0; - prolongation[4](31,54) = -45.0/256.0; - prolongation[4](31,55) = 135.0/256.0; - prolongation[4](32,0) = -25.0/4096.0; - prolongation[4](32,1) = -5.0/4096.0; - prolongation[4](32,2) = -1.0/4096.0; - prolongation[4](32,3) = -5.0/4096.0; - prolongation[4](32,4) = -25.0/4096.0; - prolongation[4](32,5) = -5.0/4096.0; - prolongation[4](32,6) = -1.0/4096.0; - prolongation[4](32,7) = -5.0/4096.0; - prolongation[4](32,8) = -75.0/4096.0; - prolongation[4](32,9) = 25.0/4096.0; - prolongation[4](32,10) = -15.0/4096.0; - prolongation[4](32,11) = 5.0/4096.0; - prolongation[4](32,12) = -15.0/4096.0; - prolongation[4](32,13) = 5.0/4096.0; - prolongation[4](32,14) = -75.0/4096.0; - prolongation[4](32,15) = 25.0/4096.0; - prolongation[4](32,16) = -75.0/4096.0; - prolongation[4](32,17) = 25.0/4096.0; - prolongation[4](32,18) = -15.0/4096.0; - prolongation[4](32,19) = 5.0/4096.0; - prolongation[4](32,20) = -15.0/4096.0; - prolongation[4](32,21) = 5.0/4096.0; - prolongation[4](32,22) = -75.0/4096.0; - prolongation[4](32,23) = 25.0/4096.0; - prolongation[4](32,24) = 225.0/4096.0; - prolongation[4](32,25) = 225.0/4096.0; - prolongation[4](32,26) = 45.0/4096.0; - prolongation[4](32,27) = 45.0/4096.0; - prolongation[4](32,28) = 9.0/4096.0; - prolongation[4](32,29) = 9.0/4096.0; - prolongation[4](32,30) = 45.0/4096.0; - prolongation[4](32,31) = 45.0/4096.0; - prolongation[4](32,32) = -225.0/4096.0; - prolongation[4](32,33) = 75.0/4096.0; - prolongation[4](32,34) = 75.0/4096.0; - prolongation[4](32,35) = -25.0/4096.0; - prolongation[4](32,36) = -225.0/4096.0; - prolongation[4](32,37) = 75.0/4096.0; - prolongation[4](32,38) = 75.0/4096.0; - prolongation[4](32,39) = -25.0/4096.0; - prolongation[4](32,40) = 675.0/4096.0; - prolongation[4](32,41) = -225.0/4096.0; - prolongation[4](32,42) = 675.0/4096.0; - prolongation[4](32,43) = -225.0/4096.0; - prolongation[4](32,44) = 135.0/4096.0; - prolongation[4](32,45) = 135.0/4096.0; - prolongation[4](32,46) = -45.0/4096.0; - prolongation[4](32,47) = -45.0/4096.0; - prolongation[4](32,48) = 135.0/4096.0; - prolongation[4](32,49) = -45.0/4096.0; - prolongation[4](32,50) = 135.0/4096.0; - prolongation[4](32,51) = -45.0/4096.0; - prolongation[4](32,52) = 675.0/4096.0; - prolongation[4](32,53) = 675.0/4096.0; - prolongation[4](32,54) = -225.0/4096.0; - prolongation[4](32,55) = -225.0/4096.0; - prolongation[4](32,56) = 2025.0/4096.0; - prolongation[4](32,57) = -675.0/4096.0; - prolongation[4](32,58) = 2025.0/4096.0; - prolongation[4](32,59) = -675.0/4096.0; - prolongation[4](32,60) = -675.0/4096.0; - prolongation[4](32,61) = 225.0/4096.0; - prolongation[4](32,62) = -675.0/4096.0; - prolongation[4](32,63) = 225.0/4096.0; - prolongation[4](33,8) = -5.0/256.0; - prolongation[4](33,12) = -1.0/256.0; - prolongation[4](33,16) = -5.0/256.0; - prolongation[4](33,20) = -1.0/256.0; - prolongation[4](33,32) = -15.0/256.0; - prolongation[4](33,34) = 5.0/256.0; - prolongation[4](33,36) = -15.0/256.0; - prolongation[4](33,38) = 5.0/256.0; - prolongation[4](33,40) = 45.0/256.0; - prolongation[4](33,42) = 45.0/256.0; - prolongation[4](33,48) = 9.0/256.0; - prolongation[4](33,50) = 9.0/256.0; - prolongation[4](33,56) = 135.0/256.0; - prolongation[4](33,58) = 135.0/256.0; - prolongation[4](33,60) = -45.0/256.0; - prolongation[4](33,62) = -45.0/256.0; - prolongation[4](34,10) = -1.0/256.0; - prolongation[4](34,14) = -5.0/256.0; - prolongation[4](34,18) = -1.0/256.0; - prolongation[4](34,22) = -5.0/256.0; - prolongation[4](34,32) = -15.0/256.0; - prolongation[4](34,33) = 5.0/256.0; - prolongation[4](34,36) = -15.0/256.0; - prolongation[4](34,37) = 5.0/256.0; - prolongation[4](34,44) = 9.0/256.0; - prolongation[4](34,45) = 9.0/256.0; - prolongation[4](34,52) = 45.0/256.0; - prolongation[4](34,53) = 45.0/256.0; - prolongation[4](34,56) = 135.0/256.0; - prolongation[4](34,57) = -45.0/256.0; - prolongation[4](34,58) = 135.0/256.0; - prolongation[4](34,59) = -45.0/256.0; - prolongation[4](35,32) = -1.0/16.0; - prolongation[4](35,36) = -1.0/16.0; - prolongation[4](35,56) = 9.0/16.0; - prolongation[4](35,58) = 9.0/16.0; - prolongation[4](36,4) = 25.0/256.0; - prolongation[4](36,5) = 5.0/256.0; - prolongation[4](36,6) = 1.0/256.0; - prolongation[4](36,7) = 5.0/256.0; - prolongation[4](36,16) = 75.0/256.0; - prolongation[4](36,17) = -25.0/256.0; - prolongation[4](36,18) = 15.0/256.0; - prolongation[4](36,19) = -5.0/256.0; - prolongation[4](36,20) = 15.0/256.0; - prolongation[4](36,21) = -5.0/256.0; - prolongation[4](36,22) = 75.0/256.0; - prolongation[4](36,23) = -25.0/256.0; - prolongation[4](36,36) = 225.0/256.0; - prolongation[4](36,37) = -75.0/256.0; - prolongation[4](36,38) = -75.0/256.0; - prolongation[4](36,39) = 25.0/256.0; - prolongation[4](37,16) = 5.0/16.0; - prolongation[4](37,20) = 1.0/16.0; - prolongation[4](37,36) = 15.0/16.0; - prolongation[4](37,38) = -5.0/16.0; - prolongation[4](38,18) = 1.0/16.0; - prolongation[4](38,22) = 5.0/16.0; - prolongation[4](38,36) = 15.0/16.0; - prolongation[4](38,37) = -5.0/16.0; - prolongation[4](39,36) = 1.0; - prolongation[4](40,25) = 5.0/16.0; - prolongation[4](40,27) = 1.0/16.0; - prolongation[4](40,42) = 15.0/16.0; - prolongation[4](40,43) = -5.0/16.0; - prolongation[4](41,42) = 1.0; - prolongation[4](42,0) = 5.0/256.0; - prolongation[4](42,1) = 1.0/256.0; - prolongation[4](42,4) = 25.0/256.0; - prolongation[4](42,5) = 5.0/256.0; - prolongation[4](42,8) = 15.0/256.0; - prolongation[4](42,9) = -5.0/256.0; - prolongation[4](42,16) = 75.0/256.0; - prolongation[4](42,17) = -25.0/256.0; - prolongation[4](42,24) = -25.0/256.0; - prolongation[4](42,25) = 75.0/256.0; - prolongation[4](42,26) = -5.0/256.0; - prolongation[4](42,27) = 15.0/256.0; - prolongation[4](42,40) = -75.0/256.0; - prolongation[4](42,41) = 25.0/256.0; - prolongation[4](42,42) = 225.0/256.0; - prolongation[4](42,43) = -75.0/256.0; - prolongation[4](43,8) = 1.0/16.0; - prolongation[4](43,16) = 5.0/16.0; - prolongation[4](43,40) = -5.0/16.0; - prolongation[4](43,42) = 15.0/16.0; - prolongation[4](44,25) = -5.0/256.0; - prolongation[4](44,27) = -5.0/256.0; - prolongation[4](44,29) = -1.0/256.0; - prolongation[4](44,31) = -1.0/256.0; - prolongation[4](44,42) = 45.0/256.0; - prolongation[4](44,43) = 45.0/256.0; - prolongation[4](44,45) = -15.0/256.0; - prolongation[4](44,47) = 5.0/256.0; - prolongation[4](44,50) = 9.0/256.0; - prolongation[4](44,51) = 9.0/256.0; - prolongation[4](44,53) = -15.0/256.0; - prolongation[4](44,55) = 5.0/256.0; - prolongation[4](44,58) = 135.0/256.0; - prolongation[4](44,59) = 135.0/256.0; - prolongation[4](44,62) = -45.0/256.0; - prolongation[4](44,63) = -45.0/256.0; - prolongation[4](45,0) = -5.0/4096.0; - prolongation[4](45,1) = -5.0/4096.0; - prolongation[4](45,2) = -1.0/4096.0; - prolongation[4](45,3) = -1.0/4096.0; - prolongation[4](45,4) = -25.0/4096.0; - prolongation[4](45,5) = -25.0/4096.0; - prolongation[4](45,6) = -5.0/4096.0; - prolongation[4](45,7) = -5.0/4096.0; - prolongation[4](45,8) = 45.0/4096.0; - prolongation[4](45,9) = 45.0/4096.0; - prolongation[4](45,10) = -15.0/4096.0; - prolongation[4](45,11) = 5.0/4096.0; - prolongation[4](45,12) = 9.0/4096.0; - prolongation[4](45,13) = 9.0/4096.0; - prolongation[4](45,14) = -15.0/4096.0; - prolongation[4](45,15) = 5.0/4096.0; - prolongation[4](45,16) = 225.0/4096.0; - prolongation[4](45,17) = 225.0/4096.0; - prolongation[4](45,18) = -75.0/4096.0; - prolongation[4](45,19) = 25.0/4096.0; - prolongation[4](45,20) = 45.0/4096.0; - prolongation[4](45,21) = 45.0/4096.0; - prolongation[4](45,22) = -75.0/4096.0; - prolongation[4](45,23) = 25.0/4096.0; - prolongation[4](45,24) = 25.0/4096.0; - prolongation[4](45,25) = -75.0/4096.0; - prolongation[4](45,26) = 25.0/4096.0; - prolongation[4](45,27) = -75.0/4096.0; - prolongation[4](45,28) = 5.0/4096.0; - prolongation[4](45,29) = -15.0/4096.0; - prolongation[4](45,30) = 5.0/4096.0; - prolongation[4](45,31) = -15.0/4096.0; - prolongation[4](45,32) = 135.0/4096.0; - prolongation[4](45,33) = 135.0/4096.0; - prolongation[4](45,34) = -45.0/4096.0; - prolongation[4](45,35) = -45.0/4096.0; - prolongation[4](45,36) = 675.0/4096.0; - prolongation[4](45,37) = 675.0/4096.0; - prolongation[4](45,38) = -225.0/4096.0; - prolongation[4](45,39) = -225.0/4096.0; - prolongation[4](45,40) = -225.0/4096.0; - prolongation[4](45,41) = -225.0/4096.0; - prolongation[4](45,42) = 675.0/4096.0; - prolongation[4](45,43) = 675.0/4096.0; - prolongation[4](45,44) = 75.0/4096.0; - prolongation[4](45,45) = -225.0/4096.0; - prolongation[4](45,46) = -25.0/4096.0; - prolongation[4](45,47) = 75.0/4096.0; - prolongation[4](45,48) = -45.0/4096.0; - prolongation[4](45,49) = -45.0/4096.0; - prolongation[4](45,50) = 135.0/4096.0; - prolongation[4](45,51) = 135.0/4096.0; - prolongation[4](45,52) = 75.0/4096.0; - prolongation[4](45,53) = -225.0/4096.0; - prolongation[4](45,54) = -25.0/4096.0; - prolongation[4](45,55) = 75.0/4096.0; - prolongation[4](45,56) = -675.0/4096.0; - prolongation[4](45,57) = -675.0/4096.0; - prolongation[4](45,58) = 2025.0/4096.0; - prolongation[4](45,59) = 2025.0/4096.0; - prolongation[4](45,60) = 225.0/4096.0; - prolongation[4](45,61) = 225.0/4096.0; - prolongation[4](45,62) = -675.0/4096.0; - prolongation[4](45,63) = -675.0/4096.0; - prolongation[4](46,45) = -1.0/16.0; - prolongation[4](46,53) = -1.0/16.0; - prolongation[4](46,58) = 9.0/16.0; - prolongation[4](46,59) = 9.0/16.0; - prolongation[4](47,10) = -1.0/256.0; - prolongation[4](47,14) = -1.0/256.0; - prolongation[4](47,18) = -5.0/256.0; - prolongation[4](47,22) = -5.0/256.0; - prolongation[4](47,32) = 9.0/256.0; - prolongation[4](47,33) = 9.0/256.0; - prolongation[4](47,36) = 45.0/256.0; - prolongation[4](47,37) = 45.0/256.0; - prolongation[4](47,44) = 5.0/256.0; - prolongation[4](47,45) = -15.0/256.0; - prolongation[4](47,52) = 5.0/256.0; - prolongation[4](47,53) = -15.0/256.0; - prolongation[4](47,56) = -45.0/256.0; - prolongation[4](47,57) = -45.0/256.0; - prolongation[4](47,58) = 135.0/256.0; - prolongation[4](47,59) = 135.0/256.0; - prolongation[4](48,25) = -5.0/256.0; - prolongation[4](48,27) = -1.0/256.0; - prolongation[4](48,29) = -1.0/256.0; - prolongation[4](48,31) = -5.0/256.0; - prolongation[4](48,42) = -15.0/256.0; - prolongation[4](48,43) = 5.0/256.0; - prolongation[4](48,45) = 9.0/256.0; - prolongation[4](48,47) = 9.0/256.0; - prolongation[4](48,50) = -15.0/256.0; - prolongation[4](48,51) = 5.0/256.0; - prolongation[4](48,53) = 45.0/256.0; - prolongation[4](48,55) = 45.0/256.0; - prolongation[4](48,58) = 135.0/256.0; - prolongation[4](48,59) = -45.0/256.0; - prolongation[4](48,62) = 135.0/256.0; - prolongation[4](48,63) = -45.0/256.0; - prolongation[4](49,42) = -1.0/16.0; - prolongation[4](49,50) = -1.0/16.0; - prolongation[4](49,58) = 9.0/16.0; - prolongation[4](49,62) = 9.0/16.0; - prolongation[4](50,0) = -5.0/4096.0; - prolongation[4](50,1) = -1.0/4096.0; - prolongation[4](50,2) = -1.0/4096.0; - prolongation[4](50,3) = -5.0/4096.0; - prolongation[4](50,4) = -25.0/4096.0; - prolongation[4](50,5) = -5.0/4096.0; - prolongation[4](50,6) = -5.0/4096.0; - prolongation[4](50,7) = -25.0/4096.0; - prolongation[4](50,8) = -15.0/4096.0; - prolongation[4](50,9) = 5.0/4096.0; - prolongation[4](50,10) = 9.0/4096.0; - prolongation[4](50,11) = 9.0/4096.0; - prolongation[4](50,12) = -15.0/4096.0; - prolongation[4](50,13) = 5.0/4096.0; - prolongation[4](50,14) = 45.0/4096.0; - prolongation[4](50,15) = 45.0/4096.0; - prolongation[4](50,16) = -75.0/4096.0; - prolongation[4](50,17) = 25.0/4096.0; - prolongation[4](50,18) = 45.0/4096.0; - prolongation[4](50,19) = 45.0/4096.0; - prolongation[4](50,20) = -75.0/4096.0; - prolongation[4](50,21) = 25.0/4096.0; - prolongation[4](50,22) = 225.0/4096.0; - prolongation[4](50,23) = 225.0/4096.0; - prolongation[4](50,24) = 25.0/4096.0; - prolongation[4](50,25) = -75.0/4096.0; - prolongation[4](50,26) = 5.0/4096.0; - prolongation[4](50,27) = -15.0/4096.0; - prolongation[4](50,28) = 5.0/4096.0; - prolongation[4](50,29) = -15.0/4096.0; - prolongation[4](50,30) = 25.0/4096.0; - prolongation[4](50,31) = -75.0/4096.0; - prolongation[4](50,32) = 135.0/4096.0; - prolongation[4](50,33) = -45.0/4096.0; - prolongation[4](50,34) = 135.0/4096.0; - prolongation[4](50,35) = -45.0/4096.0; - prolongation[4](50,36) = 675.0/4096.0; - prolongation[4](50,37) = -225.0/4096.0; - prolongation[4](50,38) = 675.0/4096.0; - prolongation[4](50,39) = -225.0/4096.0; - prolongation[4](50,40) = 75.0/4096.0; - prolongation[4](50,41) = -25.0/4096.0; - prolongation[4](50,42) = -225.0/4096.0; - prolongation[4](50,43) = 75.0/4096.0; - prolongation[4](50,44) = -45.0/4096.0; - prolongation[4](50,45) = 135.0/4096.0; - prolongation[4](50,46) = -45.0/4096.0; - prolongation[4](50,47) = 135.0/4096.0; - prolongation[4](50,48) = 75.0/4096.0; - prolongation[4](50,49) = -25.0/4096.0; - prolongation[4](50,50) = -225.0/4096.0; - prolongation[4](50,51) = 75.0/4096.0; - prolongation[4](50,52) = -225.0/4096.0; - prolongation[4](50,53) = 675.0/4096.0; - prolongation[4](50,54) = -225.0/4096.0; - prolongation[4](50,55) = 675.0/4096.0; - prolongation[4](50,56) = -675.0/4096.0; - prolongation[4](50,57) = 225.0/4096.0; - prolongation[4](50,58) = 2025.0/4096.0; - prolongation[4](50,59) = -675.0/4096.0; - prolongation[4](50,60) = -675.0/4096.0; - prolongation[4](50,61) = 225.0/4096.0; - prolongation[4](50,62) = 2025.0/4096.0; - prolongation[4](50,63) = -675.0/4096.0; - prolongation[4](51,8) = -1.0/256.0; - prolongation[4](51,12) = -1.0/256.0; - prolongation[4](51,16) = -5.0/256.0; - prolongation[4](51,20) = -5.0/256.0; - prolongation[4](51,32) = 9.0/256.0; - prolongation[4](51,34) = 9.0/256.0; - prolongation[4](51,36) = 45.0/256.0; - prolongation[4](51,38) = 45.0/256.0; - prolongation[4](51,40) = 5.0/256.0; - prolongation[4](51,42) = -15.0/256.0; - prolongation[4](51,48) = 5.0/256.0; - prolongation[4](51,50) = -15.0/256.0; - prolongation[4](51,56) = -45.0/256.0; - prolongation[4](51,58) = 135.0/256.0; - prolongation[4](51,60) = -45.0/256.0; - prolongation[4](51,62) = 135.0/256.0; - prolongation[4](52,25) = 5.0/16.0; - prolongation[4](52,31) = 1.0/16.0; - prolongation[4](52,53) = 15.0/16.0; - prolongation[4](52,55) = -5.0/16.0; - prolongation[4](53,0) = 5.0/256.0; - prolongation[4](53,3) = 1.0/256.0; - prolongation[4](53,4) = 25.0/256.0; - prolongation[4](53,7) = 5.0/256.0; - prolongation[4](53,14) = 15.0/256.0; - prolongation[4](53,15) = -5.0/256.0; - prolongation[4](53,22) = 75.0/256.0; - prolongation[4](53,23) = -25.0/256.0; - prolongation[4](53,24) = -25.0/256.0; - prolongation[4](53,25) = 75.0/256.0; - prolongation[4](53,30) = -5.0/256.0; - prolongation[4](53,31) = 15.0/256.0; - prolongation[4](53,52) = -75.0/256.0; - prolongation[4](53,53) = 225.0/256.0; - prolongation[4](53,54) = 25.0/256.0; - prolongation[4](53,55) = -75.0/256.0; - prolongation[4](54,53) = 1.0; - prolongation[4](55,14) = 1.0/16.0; - prolongation[4](55,22) = 5.0/16.0; - prolongation[4](55,52) = -5.0/16.0; - prolongation[4](55,53) = 15.0/16.0; - prolongation[4](56,25) = 25.0/256.0; - prolongation[4](56,27) = 5.0/256.0; - prolongation[4](56,29) = 1.0/256.0; - prolongation[4](56,31) = 5.0/256.0; - prolongation[4](56,42) = 75.0/256.0; - prolongation[4](56,43) = -25.0/256.0; - prolongation[4](56,45) = 15.0/256.0; - prolongation[4](56,47) = -5.0/256.0; - prolongation[4](56,50) = 15.0/256.0; - prolongation[4](56,51) = -5.0/256.0; - prolongation[4](56,53) = 75.0/256.0; - prolongation[4](56,55) = -25.0/256.0; - prolongation[4](56,58) = 225.0/256.0; - prolongation[4](56,59) = -75.0/256.0; - prolongation[4](56,62) = -75.0/256.0; - prolongation[4](56,63) = 25.0/256.0; - prolongation[4](57,42) = 5.0/16.0; - prolongation[4](57,50) = 1.0/16.0; - prolongation[4](57,58) = 15.0/16.0; - prolongation[4](57,62) = -5.0/16.0; - prolongation[4](58,0) = 25.0/4096.0; - prolongation[4](58,1) = 5.0/4096.0; - prolongation[4](58,2) = 1.0/4096.0; - prolongation[4](58,3) = 5.0/4096.0; - prolongation[4](58,4) = 125.0/4096.0; - prolongation[4](58,5) = 25.0/4096.0; - prolongation[4](58,6) = 5.0/4096.0; - prolongation[4](58,7) = 25.0/4096.0; - prolongation[4](58,8) = 75.0/4096.0; - prolongation[4](58,9) = -25.0/4096.0; - prolongation[4](58,10) = 15.0/4096.0; - prolongation[4](58,11) = -5.0/4096.0; - prolongation[4](58,12) = 15.0/4096.0; - prolongation[4](58,13) = -5.0/4096.0; - prolongation[4](58,14) = 75.0/4096.0; - prolongation[4](58,15) = -25.0/4096.0; - prolongation[4](58,16) = 375.0/4096.0; - prolongation[4](58,17) = -125.0/4096.0; - prolongation[4](58,18) = 75.0/4096.0; - prolongation[4](58,19) = -25.0/4096.0; - prolongation[4](58,20) = 75.0/4096.0; - prolongation[4](58,21) = -25.0/4096.0; - prolongation[4](58,22) = 375.0/4096.0; - prolongation[4](58,23) = -125.0/4096.0; - prolongation[4](58,24) = -125.0/4096.0; - prolongation[4](58,25) = 375.0/4096.0; - prolongation[4](58,26) = -25.0/4096.0; - prolongation[4](58,27) = 75.0/4096.0; - prolongation[4](58,28) = -5.0/4096.0; - prolongation[4](58,29) = 15.0/4096.0; - prolongation[4](58,30) = -25.0/4096.0; - prolongation[4](58,31) = 75.0/4096.0; - prolongation[4](58,32) = 225.0/4096.0; - prolongation[4](58,33) = -75.0/4096.0; - prolongation[4](58,34) = -75.0/4096.0; - prolongation[4](58,35) = 25.0/4096.0; - prolongation[4](58,36) = 1125.0/4096.0; - prolongation[4](58,37) = -375.0/4096.0; - prolongation[4](58,38) = -375.0/4096.0; - prolongation[4](58,39) = 125.0/4096.0; - prolongation[4](58,40) = -375.0/4096.0; - prolongation[4](58,41) = 125.0/4096.0; - prolongation[4](58,42) = 1125.0/4096.0; - prolongation[4](58,43) = -375.0/4096.0; - prolongation[4](58,44) = -75.0/4096.0; - prolongation[4](58,45) = 225.0/4096.0; - prolongation[4](58,46) = 25.0/4096.0; - prolongation[4](58,47) = -75.0/4096.0; - prolongation[4](58,48) = -75.0/4096.0; - prolongation[4](58,49) = 25.0/4096.0; - prolongation[4](58,50) = 225.0/4096.0; - prolongation[4](58,51) = -75.0/4096.0; - prolongation[4](58,52) = -375.0/4096.0; - prolongation[4](58,53) = 1125.0/4096.0; - prolongation[4](58,54) = 125.0/4096.0; - prolongation[4](58,55) = -375.0/4096.0; - prolongation[4](58,56) = -1125.0/4096.0; - prolongation[4](58,57) = 375.0/4096.0; - prolongation[4](58,58) = 3375.0/4096.0; - prolongation[4](58,59) = -1125.0/4096.0; - prolongation[4](58,60) = 375.0/4096.0; - prolongation[4](58,61) = -125.0/4096.0; - prolongation[4](58,62) = -1125.0/4096.0; - prolongation[4](58,63) = 375.0/4096.0; - prolongation[4](59,8) = 5.0/256.0; - prolongation[4](59,12) = 1.0/256.0; - prolongation[4](59,16) = 25.0/256.0; - prolongation[4](59,20) = 5.0/256.0; - prolongation[4](59,32) = 15.0/256.0; - prolongation[4](59,34) = -5.0/256.0; - prolongation[4](59,36) = 75.0/256.0; - prolongation[4](59,38) = -25.0/256.0; - prolongation[4](59,40) = -25.0/256.0; - prolongation[4](59,42) = 75.0/256.0; - prolongation[4](59,48) = -5.0/256.0; - prolongation[4](59,50) = 15.0/256.0; - prolongation[4](59,56) = -75.0/256.0; - prolongation[4](59,58) = 225.0/256.0; - prolongation[4](59,60) = 25.0/256.0; - prolongation[4](59,62) = -75.0/256.0; - prolongation[4](60,45) = 1.0/16.0; - prolongation[4](60,53) = 5.0/16.0; - prolongation[4](60,58) = 15.0/16.0; - prolongation[4](60,59) = -5.0/16.0; - prolongation[4](61,58) = 1.0; - prolongation[4](62,10) = 1.0/256.0; - prolongation[4](62,14) = 5.0/256.0; - prolongation[4](62,18) = 5.0/256.0; - prolongation[4](62,22) = 25.0/256.0; - prolongation[4](62,32) = 15.0/256.0; - prolongation[4](62,33) = -5.0/256.0; - prolongation[4](62,36) = 75.0/256.0; - prolongation[4](62,37) = -25.0/256.0; - prolongation[4](62,44) = -5.0/256.0; - prolongation[4](62,45) = 15.0/256.0; - prolongation[4](62,52) = -25.0/256.0; - prolongation[4](62,53) = 75.0/256.0; - prolongation[4](62,56) = -75.0/256.0; - prolongation[4](62,57) = 25.0/256.0; - prolongation[4](62,58) = 225.0/256.0; - prolongation[4](62,59) = -75.0/256.0; - prolongation[4](63,32) = 1.0/16.0; - prolongation[4](63,36) = 5.0/16.0; - prolongation[4](63,56) = -5.0/16.0; - prolongation[4](63,58) = 15.0/16.0; - prolongation[5](0,0) = 1.0/256.0; - prolongation[5](0,1) = 1.0/256.0; - prolongation[5](0,4) = 1.0/256.0; - prolongation[5](0,5) = 1.0/256.0; - prolongation[5](0,8) = -9.0/256.0; - prolongation[5](0,9) = -9.0/256.0; - prolongation[5](0,16) = -9.0/256.0; - prolongation[5](0,17) = -9.0/256.0; - prolongation[5](0,24) = -9.0/256.0; - prolongation[5](0,25) = -9.0/256.0; - prolongation[5](0,26) = -9.0/256.0; - prolongation[5](0,27) = -9.0/256.0; - prolongation[5](0,40) = 81.0/256.0; - prolongation[5](0,41) = 81.0/256.0; - prolongation[5](0,42) = 81.0/256.0; - prolongation[5](0,43) = 81.0/256.0; - prolongation[5](1,1) = -1.0/16.0; - prolongation[5](1,5) = -1.0/16.0; - prolongation[5](1,26) = 9.0/16.0; - prolongation[5](1,27) = 9.0/16.0; - prolongation[5](2,1) = 1.0/256.0; - prolongation[5](2,2) = 1.0/256.0; - prolongation[5](2,5) = 1.0/256.0; - prolongation[5](2,6) = 1.0/256.0; - prolongation[5](2,10) = -9.0/256.0; - prolongation[5](2,11) = -9.0/256.0; - prolongation[5](2,18) = -9.0/256.0; - prolongation[5](2,19) = -9.0/256.0; - prolongation[5](2,26) = -9.0/256.0; - prolongation[5](2,27) = -9.0/256.0; - prolongation[5](2,28) = -9.0/256.0; - prolongation[5](2,29) = -9.0/256.0; - prolongation[5](2,44) = 81.0/256.0; - prolongation[5](2,45) = 81.0/256.0; - prolongation[5](2,46) = 81.0/256.0; - prolongation[5](2,47) = 81.0/256.0; - prolongation[5](3,0) = -1.0/4096.0; - prolongation[5](3,1) = -1.0/4096.0; - prolongation[5](3,2) = -1.0/4096.0; - prolongation[5](3,3) = -1.0/4096.0; - prolongation[5](3,4) = -1.0/4096.0; - prolongation[5](3,5) = -1.0/4096.0; - prolongation[5](3,6) = -1.0/4096.0; - prolongation[5](3,7) = -1.0/4096.0; - prolongation[5](3,8) = 9.0/4096.0; - prolongation[5](3,9) = 9.0/4096.0; - prolongation[5](3,10) = 9.0/4096.0; - prolongation[5](3,11) = 9.0/4096.0; - prolongation[5](3,12) = 9.0/4096.0; - prolongation[5](3,13) = 9.0/4096.0; - prolongation[5](3,14) = 9.0/4096.0; - prolongation[5](3,15) = 9.0/4096.0; - prolongation[5](3,16) = 9.0/4096.0; - prolongation[5](3,17) = 9.0/4096.0; - prolongation[5](3,18) = 9.0/4096.0; - prolongation[5](3,19) = 9.0/4096.0; - prolongation[5](3,20) = 9.0/4096.0; - prolongation[5](3,21) = 9.0/4096.0; - prolongation[5](3,22) = 9.0/4096.0; - prolongation[5](3,23) = 9.0/4096.0; - prolongation[5](3,24) = 9.0/4096.0; - prolongation[5](3,25) = 9.0/4096.0; - prolongation[5](3,26) = 9.0/4096.0; - prolongation[5](3,27) = 9.0/4096.0; - prolongation[5](3,28) = 9.0/4096.0; - prolongation[5](3,29) = 9.0/4096.0; - prolongation[5](3,30) = 9.0/4096.0; - prolongation[5](3,31) = 9.0/4096.0; - prolongation[5](3,32) = -81.0/4096.0; - prolongation[5](3,33) = -81.0/4096.0; - prolongation[5](3,34) = -81.0/4096.0; - prolongation[5](3,35) = -81.0/4096.0; - prolongation[5](3,36) = -81.0/4096.0; - prolongation[5](3,37) = -81.0/4096.0; - prolongation[5](3,38) = -81.0/4096.0; - prolongation[5](3,39) = -81.0/4096.0; - prolongation[5](3,40) = -81.0/4096.0; - prolongation[5](3,41) = -81.0/4096.0; - prolongation[5](3,42) = -81.0/4096.0; - prolongation[5](3,43) = -81.0/4096.0; - prolongation[5](3,44) = -81.0/4096.0; - prolongation[5](3,45) = -81.0/4096.0; - prolongation[5](3,46) = -81.0/4096.0; - prolongation[5](3,47) = -81.0/4096.0; - prolongation[5](3,48) = -81.0/4096.0; - prolongation[5](3,49) = -81.0/4096.0; - prolongation[5](3,50) = -81.0/4096.0; - prolongation[5](3,51) = -81.0/4096.0; - prolongation[5](3,52) = -81.0/4096.0; - prolongation[5](3,53) = -81.0/4096.0; - prolongation[5](3,54) = -81.0/4096.0; - prolongation[5](3,55) = -81.0/4096.0; - prolongation[5](3,56) = 729.0/4096.0; - prolongation[5](3,57) = 729.0/4096.0; - prolongation[5](3,58) = 729.0/4096.0; - prolongation[5](3,59) = 729.0/4096.0; - prolongation[5](3,60) = 729.0/4096.0; - prolongation[5](3,61) = 729.0/4096.0; - prolongation[5](3,62) = 729.0/4096.0; - prolongation[5](3,63) = 729.0/4096.0; - prolongation[5](4,4) = -1.0/16.0; - prolongation[5](4,5) = -1.0/16.0; - prolongation[5](4,16) = 9.0/16.0; - prolongation[5](4,17) = 9.0/16.0; - prolongation[5](5,5) = 1.0; - prolongation[5](6,5) = -1.0/16.0; - prolongation[5](6,6) = -1.0/16.0; - prolongation[5](6,18) = 9.0/16.0; - prolongation[5](6,19) = 9.0/16.0; - prolongation[5](7,4) = 1.0/256.0; - prolongation[5](7,5) = 1.0/256.0; - prolongation[5](7,6) = 1.0/256.0; - prolongation[5](7,7) = 1.0/256.0; - prolongation[5](7,16) = -9.0/256.0; - prolongation[5](7,17) = -9.0/256.0; - prolongation[5](7,18) = -9.0/256.0; - prolongation[5](7,19) = -9.0/256.0; - prolongation[5](7,20) = -9.0/256.0; - prolongation[5](7,21) = -9.0/256.0; - prolongation[5](7,22) = -9.0/256.0; - prolongation[5](7,23) = -9.0/256.0; - prolongation[5](7,36) = 81.0/256.0; - prolongation[5](7,37) = 81.0/256.0; - prolongation[5](7,38) = 81.0/256.0; - prolongation[5](7,39) = 81.0/256.0; - prolongation[5](8,9) = -1.0/16.0; - prolongation[5](8,17) = -1.0/16.0; - prolongation[5](8,41) = 9.0/16.0; - prolongation[5](8,43) = 9.0/16.0; - prolongation[5](9,0) = -1.0/256.0; - prolongation[5](9,1) = -5.0/256.0; - prolongation[5](9,4) = -1.0/256.0; - prolongation[5](9,5) = -5.0/256.0; - prolongation[5](9,8) = 5.0/256.0; - prolongation[5](9,9) = -15.0/256.0; - prolongation[5](9,16) = 5.0/256.0; - prolongation[5](9,17) = -15.0/256.0; - prolongation[5](9,24) = 9.0/256.0; - prolongation[5](9,25) = 9.0/256.0; - prolongation[5](9,26) = 45.0/256.0; - prolongation[5](9,27) = 45.0/256.0; - prolongation[5](9,40) = -45.0/256.0; - prolongation[5](9,41) = 135.0/256.0; - prolongation[5](9,42) = -45.0/256.0; - prolongation[5](9,43) = 135.0/256.0; - prolongation[5](10,1) = -5.0/256.0; - prolongation[5](10,2) = -1.0/256.0; - prolongation[5](10,5) = -5.0/256.0; - prolongation[5](10,6) = -1.0/256.0; - prolongation[5](10,10) = -15.0/256.0; - prolongation[5](10,11) = 5.0/256.0; - prolongation[5](10,18) = -15.0/256.0; - prolongation[5](10,19) = 5.0/256.0; - prolongation[5](10,26) = 45.0/256.0; - prolongation[5](10,27) = 45.0/256.0; - prolongation[5](10,28) = 9.0/256.0; - prolongation[5](10,29) = 9.0/256.0; - prolongation[5](10,44) = 135.0/256.0; - prolongation[5](10,45) = 135.0/256.0; - prolongation[5](10,46) = -45.0/256.0; - prolongation[5](10,47) = -45.0/256.0; - prolongation[5](11,10) = -1.0/16.0; - prolongation[5](11,18) = -1.0/16.0; - prolongation[5](11,44) = 9.0/16.0; - prolongation[5](11,45) = 9.0/16.0; - prolongation[5](12,9) = 1.0/256.0; - prolongation[5](12,13) = 1.0/256.0; - prolongation[5](12,17) = 1.0/256.0; - prolongation[5](12,21) = 1.0/256.0; - prolongation[5](12,33) = -9.0/256.0; - prolongation[5](12,35) = -9.0/256.0; - prolongation[5](12,37) = -9.0/256.0; - prolongation[5](12,39) = -9.0/256.0; - prolongation[5](12,41) = -9.0/256.0; - prolongation[5](12,43) = -9.0/256.0; - prolongation[5](12,49) = -9.0/256.0; - prolongation[5](12,51) = -9.0/256.0; - prolongation[5](12,57) = 81.0/256.0; - prolongation[5](12,59) = 81.0/256.0; - prolongation[5](12,61) = 81.0/256.0; - prolongation[5](12,63) = 81.0/256.0; - prolongation[5](13,0) = 1.0/4096.0; - prolongation[5](13,1) = 5.0/4096.0; - prolongation[5](13,2) = 5.0/4096.0; - prolongation[5](13,3) = 1.0/4096.0; - prolongation[5](13,4) = 1.0/4096.0; - prolongation[5](13,5) = 5.0/4096.0; - prolongation[5](13,6) = 5.0/4096.0; - prolongation[5](13,7) = 1.0/4096.0; - prolongation[5](13,8) = -5.0/4096.0; - prolongation[5](13,9) = 15.0/4096.0; - prolongation[5](13,10) = -45.0/4096.0; - prolongation[5](13,11) = -45.0/4096.0; - prolongation[5](13,12) = -5.0/4096.0; - prolongation[5](13,13) = 15.0/4096.0; - prolongation[5](13,14) = -9.0/4096.0; - prolongation[5](13,15) = -9.0/4096.0; - prolongation[5](13,16) = -5.0/4096.0; - prolongation[5](13,17) = 15.0/4096.0; - prolongation[5](13,18) = -45.0/4096.0; - prolongation[5](13,19) = -45.0/4096.0; - prolongation[5](13,20) = -5.0/4096.0; - prolongation[5](13,21) = 15.0/4096.0; - prolongation[5](13,22) = -9.0/4096.0; - prolongation[5](13,23) = -9.0/4096.0; - prolongation[5](13,24) = -9.0/4096.0; - prolongation[5](13,25) = -9.0/4096.0; - prolongation[5](13,26) = -45.0/4096.0; - prolongation[5](13,27) = -45.0/4096.0; - prolongation[5](13,28) = -45.0/4096.0; - prolongation[5](13,29) = -45.0/4096.0; - prolongation[5](13,30) = -9.0/4096.0; - prolongation[5](13,31) = -9.0/4096.0; - prolongation[5](13,32) = 45.0/4096.0; - prolongation[5](13,33) = -135.0/4096.0; - prolongation[5](13,34) = 45.0/4096.0; - prolongation[5](13,35) = -135.0/4096.0; - prolongation[5](13,36) = 45.0/4096.0; - prolongation[5](13,37) = -135.0/4096.0; - prolongation[5](13,38) = 45.0/4096.0; - prolongation[5](13,39) = -135.0/4096.0; - prolongation[5](13,40) = 45.0/4096.0; - prolongation[5](13,41) = -135.0/4096.0; - prolongation[5](13,42) = 45.0/4096.0; - prolongation[5](13,43) = -135.0/4096.0; - prolongation[5](13,44) = 405.0/4096.0; - prolongation[5](13,45) = 405.0/4096.0; - prolongation[5](13,46) = 405.0/4096.0; - prolongation[5](13,47) = 405.0/4096.0; - prolongation[5](13,48) = 45.0/4096.0; - prolongation[5](13,49) = -135.0/4096.0; - prolongation[5](13,50) = 45.0/4096.0; - prolongation[5](13,51) = -135.0/4096.0; - prolongation[5](13,52) = 81.0/4096.0; - prolongation[5](13,53) = 81.0/4096.0; - prolongation[5](13,54) = 81.0/4096.0; - prolongation[5](13,55) = 81.0/4096.0; - prolongation[5](13,56) = -405.0/4096.0; - prolongation[5](13,57) = 1215.0/4096.0; - prolongation[5](13,58) = -405.0/4096.0; - prolongation[5](13,59) = 1215.0/4096.0; - prolongation[5](13,60) = -405.0/4096.0; - prolongation[5](13,61) = 1215.0/4096.0; - prolongation[5](13,62) = -405.0/4096.0; - prolongation[5](13,63) = 1215.0/4096.0; - prolongation[5](14,0) = 5.0/4096.0; - prolongation[5](14,1) = 5.0/4096.0; - prolongation[5](14,2) = 1.0/4096.0; - prolongation[5](14,3) = 1.0/4096.0; - prolongation[5](14,4) = 5.0/4096.0; - prolongation[5](14,5) = 5.0/4096.0; - prolongation[5](14,6) = 1.0/4096.0; - prolongation[5](14,7) = 1.0/4096.0; - prolongation[5](14,8) = -45.0/4096.0; - prolongation[5](14,9) = -45.0/4096.0; - prolongation[5](14,10) = 15.0/4096.0; - prolongation[5](14,11) = -5.0/4096.0; - prolongation[5](14,12) = -9.0/4096.0; - prolongation[5](14,13) = -9.0/4096.0; - prolongation[5](14,14) = 15.0/4096.0; - prolongation[5](14,15) = -5.0/4096.0; - prolongation[5](14,16) = -45.0/4096.0; - prolongation[5](14,17) = -45.0/4096.0; - prolongation[5](14,18) = 15.0/4096.0; - prolongation[5](14,19) = -5.0/4096.0; - prolongation[5](14,20) = -9.0/4096.0; - prolongation[5](14,21) = -9.0/4096.0; - prolongation[5](14,22) = 15.0/4096.0; - prolongation[5](14,23) = -5.0/4096.0; - prolongation[5](14,24) = -45.0/4096.0; - prolongation[5](14,25) = -45.0/4096.0; - prolongation[5](14,26) = -45.0/4096.0; - prolongation[5](14,27) = -45.0/4096.0; - prolongation[5](14,28) = -9.0/4096.0; - prolongation[5](14,29) = -9.0/4096.0; - prolongation[5](14,30) = -9.0/4096.0; - prolongation[5](14,31) = -9.0/4096.0; - prolongation[5](14,32) = -135.0/4096.0; - prolongation[5](14,33) = -135.0/4096.0; - prolongation[5](14,34) = 45.0/4096.0; - prolongation[5](14,35) = 45.0/4096.0; - prolongation[5](14,36) = -135.0/4096.0; - prolongation[5](14,37) = -135.0/4096.0; - prolongation[5](14,38) = 45.0/4096.0; - prolongation[5](14,39) = 45.0/4096.0; - prolongation[5](14,40) = 405.0/4096.0; - prolongation[5](14,41) = 405.0/4096.0; - prolongation[5](14,42) = 405.0/4096.0; - prolongation[5](14,43) = 405.0/4096.0; - prolongation[5](14,44) = -135.0/4096.0; - prolongation[5](14,45) = -135.0/4096.0; - prolongation[5](14,46) = 45.0/4096.0; - prolongation[5](14,47) = 45.0/4096.0; - prolongation[5](14,48) = 81.0/4096.0; - prolongation[5](14,49) = 81.0/4096.0; - prolongation[5](14,50) = 81.0/4096.0; - prolongation[5](14,51) = 81.0/4096.0; - prolongation[5](14,52) = -135.0/4096.0; - prolongation[5](14,53) = -135.0/4096.0; - prolongation[5](14,54) = 45.0/4096.0; - prolongation[5](14,55) = 45.0/4096.0; - prolongation[5](14,56) = 1215.0/4096.0; - prolongation[5](14,57) = 1215.0/4096.0; - prolongation[5](14,58) = 1215.0/4096.0; - prolongation[5](14,59) = 1215.0/4096.0; - prolongation[5](14,60) = -405.0/4096.0; - prolongation[5](14,61) = -405.0/4096.0; - prolongation[5](14,62) = -405.0/4096.0; - prolongation[5](14,63) = -405.0/4096.0; - prolongation[5](15,10) = 1.0/256.0; - prolongation[5](15,14) = 1.0/256.0; - prolongation[5](15,18) = 1.0/256.0; - prolongation[5](15,22) = 1.0/256.0; - prolongation[5](15,32) = -9.0/256.0; - prolongation[5](15,33) = -9.0/256.0; - prolongation[5](15,36) = -9.0/256.0; - prolongation[5](15,37) = -9.0/256.0; - prolongation[5](15,44) = -9.0/256.0; - prolongation[5](15,45) = -9.0/256.0; - prolongation[5](15,52) = -9.0/256.0; - prolongation[5](15,53) = -9.0/256.0; - prolongation[5](15,56) = 81.0/256.0; - prolongation[5](15,57) = 81.0/256.0; - prolongation[5](15,58) = 81.0/256.0; - prolongation[5](15,59) = 81.0/256.0; - prolongation[5](16,17) = 1.0; - prolongation[5](17,4) = 1.0/16.0; - prolongation[5](17,5) = 5.0/16.0; - prolongation[5](17,16) = -5.0/16.0; - prolongation[5](17,17) = 15.0/16.0; - prolongation[5](18,5) = 5.0/16.0; - prolongation[5](18,6) = 1.0/16.0; - prolongation[5](18,18) = 15.0/16.0; - prolongation[5](18,19) = -5.0/16.0; - prolongation[5](19,18) = 1.0; - prolongation[5](20,17) = -1.0/16.0; - prolongation[5](20,21) = -1.0/16.0; - prolongation[5](20,37) = 9.0/16.0; - prolongation[5](20,39) = 9.0/16.0; - prolongation[5](21,4) = -1.0/256.0; - prolongation[5](21,5) = -5.0/256.0; - prolongation[5](21,6) = -5.0/256.0; - prolongation[5](21,7) = -1.0/256.0; - prolongation[5](21,16) = 5.0/256.0; - prolongation[5](21,17) = -15.0/256.0; - prolongation[5](21,18) = 45.0/256.0; - prolongation[5](21,19) = 45.0/256.0; - prolongation[5](21,20) = 5.0/256.0; - prolongation[5](21,21) = -15.0/256.0; - prolongation[5](21,22) = 9.0/256.0; - prolongation[5](21,23) = 9.0/256.0; - prolongation[5](21,36) = -45.0/256.0; - prolongation[5](21,37) = 135.0/256.0; - prolongation[5](21,38) = -45.0/256.0; - prolongation[5](21,39) = 135.0/256.0; - prolongation[5](22,4) = -5.0/256.0; - prolongation[5](22,5) = -5.0/256.0; - prolongation[5](22,6) = -1.0/256.0; - prolongation[5](22,7) = -1.0/256.0; - prolongation[5](22,16) = 45.0/256.0; - prolongation[5](22,17) = 45.0/256.0; - prolongation[5](22,18) = -15.0/256.0; - prolongation[5](22,19) = 5.0/256.0; - prolongation[5](22,20) = 9.0/256.0; - prolongation[5](22,21) = 9.0/256.0; - prolongation[5](22,22) = -15.0/256.0; - prolongation[5](22,23) = 5.0/256.0; - prolongation[5](22,36) = 135.0/256.0; - prolongation[5](22,37) = 135.0/256.0; - prolongation[5](22,38) = -45.0/256.0; - prolongation[5](22,39) = -45.0/256.0; - prolongation[5](23,18) = -1.0/16.0; - prolongation[5](23,22) = -1.0/16.0; - prolongation[5](23,36) = 9.0/16.0; - prolongation[5](23,37) = 9.0/16.0; - prolongation[5](24,25) = -1.0/16.0; - prolongation[5](24,27) = -1.0/16.0; - prolongation[5](24,42) = 9.0/16.0; - prolongation[5](24,43) = 9.0/16.0; - prolongation[5](25,0) = -1.0/256.0; - prolongation[5](25,1) = -1.0/256.0; - prolongation[5](25,4) = -5.0/256.0; - prolongation[5](25,5) = -5.0/256.0; - prolongation[5](25,8) = 9.0/256.0; - prolongation[5](25,9) = 9.0/256.0; - prolongation[5](25,16) = 45.0/256.0; - prolongation[5](25,17) = 45.0/256.0; - prolongation[5](25,24) = 5.0/256.0; - prolongation[5](25,25) = -15.0/256.0; - prolongation[5](25,26) = 5.0/256.0; - prolongation[5](25,27) = -15.0/256.0; - prolongation[5](25,40) = -45.0/256.0; - prolongation[5](25,41) = -45.0/256.0; - prolongation[5](25,42) = 135.0/256.0; - prolongation[5](25,43) = 135.0/256.0; - prolongation[5](26,27) = 1.0; - prolongation[5](27,1) = 1.0/16.0; - prolongation[5](27,5) = 5.0/16.0; - prolongation[5](27,26) = -5.0/16.0; - prolongation[5](27,27) = 15.0/16.0; - prolongation[5](28,27) = -1.0/16.0; - prolongation[5](28,29) = -1.0/16.0; - prolongation[5](28,45) = 9.0/16.0; - prolongation[5](28,47) = 9.0/16.0; - prolongation[5](29,1) = -1.0/256.0; - prolongation[5](29,2) = -1.0/256.0; - prolongation[5](29,5) = -5.0/256.0; - prolongation[5](29,6) = -5.0/256.0; - prolongation[5](29,10) = 9.0/256.0; - prolongation[5](29,11) = 9.0/256.0; - prolongation[5](29,18) = 45.0/256.0; - prolongation[5](29,19) = 45.0/256.0; - prolongation[5](29,26) = 5.0/256.0; - prolongation[5](29,27) = -15.0/256.0; - prolongation[5](29,28) = 5.0/256.0; - prolongation[5](29,29) = -15.0/256.0; - prolongation[5](29,44) = -45.0/256.0; - prolongation[5](29,45) = 135.0/256.0; - prolongation[5](29,46) = -45.0/256.0; - prolongation[5](29,47) = 135.0/256.0; - prolongation[5](30,25) = 1.0/256.0; - prolongation[5](30,27) = 1.0/256.0; - prolongation[5](30,29) = 1.0/256.0; - prolongation[5](30,31) = 1.0/256.0; - prolongation[5](30,42) = -9.0/256.0; - prolongation[5](30,43) = -9.0/256.0; - prolongation[5](30,45) = -9.0/256.0; - prolongation[5](30,47) = -9.0/256.0; - prolongation[5](30,50) = -9.0/256.0; - prolongation[5](30,51) = -9.0/256.0; - prolongation[5](30,53) = -9.0/256.0; - prolongation[5](30,55) = -9.0/256.0; - prolongation[5](30,58) = 81.0/256.0; - prolongation[5](30,59) = 81.0/256.0; - prolongation[5](30,62) = 81.0/256.0; - prolongation[5](30,63) = 81.0/256.0; - prolongation[5](31,0) = 1.0/4096.0; - prolongation[5](31,1) = 1.0/4096.0; - prolongation[5](31,2) = 1.0/4096.0; - prolongation[5](31,3) = 1.0/4096.0; - prolongation[5](31,4) = 5.0/4096.0; - prolongation[5](31,5) = 5.0/4096.0; - prolongation[5](31,6) = 5.0/4096.0; - prolongation[5](31,7) = 5.0/4096.0; - prolongation[5](31,8) = -9.0/4096.0; - prolongation[5](31,9) = -9.0/4096.0; - prolongation[5](31,10) = -9.0/4096.0; - prolongation[5](31,11) = -9.0/4096.0; - prolongation[5](31,12) = -9.0/4096.0; - prolongation[5](31,13) = -9.0/4096.0; - prolongation[5](31,14) = -9.0/4096.0; - prolongation[5](31,15) = -9.0/4096.0; - prolongation[5](31,16) = -45.0/4096.0; - prolongation[5](31,17) = -45.0/4096.0; - prolongation[5](31,18) = -45.0/4096.0; - prolongation[5](31,19) = -45.0/4096.0; - prolongation[5](31,20) = -45.0/4096.0; - prolongation[5](31,21) = -45.0/4096.0; - prolongation[5](31,22) = -45.0/4096.0; - prolongation[5](31,23) = -45.0/4096.0; - prolongation[5](31,24) = -5.0/4096.0; - prolongation[5](31,25) = 15.0/4096.0; - prolongation[5](31,26) = -5.0/4096.0; - prolongation[5](31,27) = 15.0/4096.0; - prolongation[5](31,28) = -5.0/4096.0; - prolongation[5](31,29) = 15.0/4096.0; - prolongation[5](31,30) = -5.0/4096.0; - prolongation[5](31,31) = 15.0/4096.0; - prolongation[5](31,32) = 81.0/4096.0; - prolongation[5](31,33) = 81.0/4096.0; - prolongation[5](31,34) = 81.0/4096.0; - prolongation[5](31,35) = 81.0/4096.0; - prolongation[5](31,36) = 405.0/4096.0; - prolongation[5](31,37) = 405.0/4096.0; - prolongation[5](31,38) = 405.0/4096.0; - prolongation[5](31,39) = 405.0/4096.0; - prolongation[5](31,40) = 45.0/4096.0; - prolongation[5](31,41) = 45.0/4096.0; - prolongation[5](31,42) = -135.0/4096.0; - prolongation[5](31,43) = -135.0/4096.0; - prolongation[5](31,44) = 45.0/4096.0; - prolongation[5](31,45) = -135.0/4096.0; - prolongation[5](31,46) = 45.0/4096.0; - prolongation[5](31,47) = -135.0/4096.0; - prolongation[5](31,48) = 45.0/4096.0; - prolongation[5](31,49) = 45.0/4096.0; - prolongation[5](31,50) = -135.0/4096.0; - prolongation[5](31,51) = -135.0/4096.0; - prolongation[5](31,52) = 45.0/4096.0; - prolongation[5](31,53) = -135.0/4096.0; - prolongation[5](31,54) = 45.0/4096.0; - prolongation[5](31,55) = -135.0/4096.0; - prolongation[5](31,56) = -405.0/4096.0; - prolongation[5](31,57) = -405.0/4096.0; - prolongation[5](31,58) = 1215.0/4096.0; - prolongation[5](31,59) = 1215.0/4096.0; - prolongation[5](31,60) = -405.0/4096.0; - prolongation[5](31,61) = -405.0/4096.0; - prolongation[5](31,62) = 1215.0/4096.0; - prolongation[5](31,63) = 1215.0/4096.0; - prolongation[5](32,9) = -5.0/256.0; - prolongation[5](32,13) = -1.0/256.0; - prolongation[5](32,17) = -5.0/256.0; - prolongation[5](32,21) = -1.0/256.0; - prolongation[5](32,33) = -15.0/256.0; - prolongation[5](32,35) = 5.0/256.0; - prolongation[5](32,37) = -15.0/256.0; - prolongation[5](32,39) = 5.0/256.0; - prolongation[5](32,41) = 45.0/256.0; - prolongation[5](32,43) = 45.0/256.0; - prolongation[5](32,49) = 9.0/256.0; - prolongation[5](32,51) = 9.0/256.0; - prolongation[5](32,57) = 135.0/256.0; - prolongation[5](32,59) = 135.0/256.0; - prolongation[5](32,61) = -45.0/256.0; - prolongation[5](32,63) = -45.0/256.0; - prolongation[5](33,0) = -5.0/4096.0; - prolongation[5](33,1) = -25.0/4096.0; - prolongation[5](33,2) = -5.0/4096.0; - prolongation[5](33,3) = -1.0/4096.0; - prolongation[5](33,4) = -5.0/4096.0; - prolongation[5](33,5) = -25.0/4096.0; - prolongation[5](33,6) = -5.0/4096.0; - prolongation[5](33,7) = -1.0/4096.0; - prolongation[5](33,8) = 25.0/4096.0; - prolongation[5](33,9) = -75.0/4096.0; - prolongation[5](33,10) = -75.0/4096.0; - prolongation[5](33,11) = 25.0/4096.0; - prolongation[5](33,12) = 5.0/4096.0; - prolongation[5](33,13) = -15.0/4096.0; - prolongation[5](33,14) = -15.0/4096.0; - prolongation[5](33,15) = 5.0/4096.0; - prolongation[5](33,16) = 25.0/4096.0; - prolongation[5](33,17) = -75.0/4096.0; - prolongation[5](33,18) = -75.0/4096.0; - prolongation[5](33,19) = 25.0/4096.0; - prolongation[5](33,20) = 5.0/4096.0; - prolongation[5](33,21) = -15.0/4096.0; - prolongation[5](33,22) = -15.0/4096.0; - prolongation[5](33,23) = 5.0/4096.0; - prolongation[5](33,24) = 45.0/4096.0; - prolongation[5](33,25) = 45.0/4096.0; - prolongation[5](33,26) = 225.0/4096.0; - prolongation[5](33,27) = 225.0/4096.0; - prolongation[5](33,28) = 45.0/4096.0; - prolongation[5](33,29) = 45.0/4096.0; - prolongation[5](33,30) = 9.0/4096.0; - prolongation[5](33,31) = 9.0/4096.0; - prolongation[5](33,32) = 75.0/4096.0; - prolongation[5](33,33) = -225.0/4096.0; - prolongation[5](33,34) = -25.0/4096.0; - prolongation[5](33,35) = 75.0/4096.0; - prolongation[5](33,36) = 75.0/4096.0; - prolongation[5](33,37) = -225.0/4096.0; - prolongation[5](33,38) = -25.0/4096.0; - prolongation[5](33,39) = 75.0/4096.0; - prolongation[5](33,40) = -225.0/4096.0; - prolongation[5](33,41) = 675.0/4096.0; - prolongation[5](33,42) = -225.0/4096.0; - prolongation[5](33,43) = 675.0/4096.0; - prolongation[5](33,44) = 675.0/4096.0; - prolongation[5](33,45) = 675.0/4096.0; - prolongation[5](33,46) = -225.0/4096.0; - prolongation[5](33,47) = -225.0/4096.0; - prolongation[5](33,48) = -45.0/4096.0; - prolongation[5](33,49) = 135.0/4096.0; - prolongation[5](33,50) = -45.0/4096.0; - prolongation[5](33,51) = 135.0/4096.0; - prolongation[5](33,52) = 135.0/4096.0; - prolongation[5](33,53) = 135.0/4096.0; - prolongation[5](33,54) = -45.0/4096.0; - prolongation[5](33,55) = -45.0/4096.0; - prolongation[5](33,56) = -675.0/4096.0; - prolongation[5](33,57) = 2025.0/4096.0; - prolongation[5](33,58) = -675.0/4096.0; - prolongation[5](33,59) = 2025.0/4096.0; - prolongation[5](33,60) = 225.0/4096.0; - prolongation[5](33,61) = -675.0/4096.0; - prolongation[5](33,62) = 225.0/4096.0; - prolongation[5](33,63) = -675.0/4096.0; - prolongation[5](34,33) = -1.0/16.0; - prolongation[5](34,37) = -1.0/16.0; - prolongation[5](34,57) = 9.0/16.0; - prolongation[5](34,59) = 9.0/16.0; - prolongation[5](35,10) = -5.0/256.0; - prolongation[5](35,14) = -1.0/256.0; - prolongation[5](35,18) = -5.0/256.0; - prolongation[5](35,22) = -1.0/256.0; - prolongation[5](35,32) = 5.0/256.0; - prolongation[5](35,33) = -15.0/256.0; - prolongation[5](35,36) = 5.0/256.0; - prolongation[5](35,37) = -15.0/256.0; - prolongation[5](35,44) = 45.0/256.0; - prolongation[5](35,45) = 45.0/256.0; - prolongation[5](35,52) = 9.0/256.0; - prolongation[5](35,53) = 9.0/256.0; - prolongation[5](35,56) = -45.0/256.0; - prolongation[5](35,57) = 135.0/256.0; - prolongation[5](35,58) = -45.0/256.0; - prolongation[5](35,59) = 135.0/256.0; - prolongation[5](36,17) = 5.0/16.0; - prolongation[5](36,21) = 1.0/16.0; - prolongation[5](36,37) = 15.0/16.0; - prolongation[5](36,39) = -5.0/16.0; - prolongation[5](37,4) = 5.0/256.0; - prolongation[5](37,5) = 25.0/256.0; - prolongation[5](37,6) = 5.0/256.0; - prolongation[5](37,7) = 1.0/256.0; - prolongation[5](37,16) = -25.0/256.0; - prolongation[5](37,17) = 75.0/256.0; - prolongation[5](37,18) = 75.0/256.0; - prolongation[5](37,19) = -25.0/256.0; - prolongation[5](37,20) = -5.0/256.0; - prolongation[5](37,21) = 15.0/256.0; - prolongation[5](37,22) = 15.0/256.0; - prolongation[5](37,23) = -5.0/256.0; - prolongation[5](37,36) = -75.0/256.0; - prolongation[5](37,37) = 225.0/256.0; - prolongation[5](37,38) = 25.0/256.0; - prolongation[5](37,39) = -75.0/256.0; - prolongation[5](38,37) = 1.0; - prolongation[5](39,18) = 5.0/16.0; - prolongation[5](39,22) = 1.0/16.0; - prolongation[5](39,36) = -5.0/16.0; - prolongation[5](39,37) = 15.0/16.0; - prolongation[5](40,43) = 1.0; - prolongation[5](41,25) = 1.0/16.0; - prolongation[5](41,27) = 5.0/16.0; - prolongation[5](41,42) = -5.0/16.0; - prolongation[5](41,43) = 15.0/16.0; - prolongation[5](42,9) = 1.0/16.0; - prolongation[5](42,17) = 5.0/16.0; - prolongation[5](42,41) = -5.0/16.0; - prolongation[5](42,43) = 15.0/16.0; - prolongation[5](43,0) = 1.0/256.0; - prolongation[5](43,1) = 5.0/256.0; - prolongation[5](43,4) = 5.0/256.0; - prolongation[5](43,5) = 25.0/256.0; - prolongation[5](43,8) = -5.0/256.0; - prolongation[5](43,9) = 15.0/256.0; - prolongation[5](43,16) = -25.0/256.0; - prolongation[5](43,17) = 75.0/256.0; - prolongation[5](43,24) = -5.0/256.0; - prolongation[5](43,25) = 15.0/256.0; - prolongation[5](43,26) = -25.0/256.0; - prolongation[5](43,27) = 75.0/256.0; - prolongation[5](43,40) = 25.0/256.0; - prolongation[5](43,41) = -75.0/256.0; - prolongation[5](43,42) = -75.0/256.0; - prolongation[5](43,43) = 225.0/256.0; - prolongation[5](44,27) = 5.0/16.0; - prolongation[5](44,29) = 1.0/16.0; - prolongation[5](44,45) = 15.0/16.0; - prolongation[5](44,47) = -5.0/16.0; - prolongation[5](45,1) = 5.0/256.0; - prolongation[5](45,2) = 1.0/256.0; - prolongation[5](45,5) = 25.0/256.0; - prolongation[5](45,6) = 5.0/256.0; - prolongation[5](45,10) = 15.0/256.0; - prolongation[5](45,11) = -5.0/256.0; - prolongation[5](45,18) = 75.0/256.0; - prolongation[5](45,19) = -25.0/256.0; - prolongation[5](45,26) = -25.0/256.0; - prolongation[5](45,27) = 75.0/256.0; - prolongation[5](45,28) = -5.0/256.0; - prolongation[5](45,29) = 15.0/256.0; - prolongation[5](45,44) = -75.0/256.0; - prolongation[5](45,45) = 225.0/256.0; - prolongation[5](45,46) = 25.0/256.0; - prolongation[5](45,47) = -75.0/256.0; - prolongation[5](46,45) = 1.0; - prolongation[5](47,10) = 1.0/16.0; - prolongation[5](47,18) = 5.0/16.0; - prolongation[5](47,44) = -5.0/16.0; - prolongation[5](47,45) = 15.0/16.0; - prolongation[5](48,43) = -1.0/16.0; - prolongation[5](48,51) = -1.0/16.0; - prolongation[5](48,59) = 9.0/16.0; - prolongation[5](48,63) = 9.0/16.0; - prolongation[5](49,25) = -1.0/256.0; - prolongation[5](49,27) = -5.0/256.0; - prolongation[5](49,29) = -5.0/256.0; - prolongation[5](49,31) = -1.0/256.0; - prolongation[5](49,42) = 5.0/256.0; - prolongation[5](49,43) = -15.0/256.0; - prolongation[5](49,45) = 45.0/256.0; - prolongation[5](49,47) = 45.0/256.0; - prolongation[5](49,50) = 5.0/256.0; - prolongation[5](49,51) = -15.0/256.0; - prolongation[5](49,53) = 9.0/256.0; - prolongation[5](49,55) = 9.0/256.0; - prolongation[5](49,58) = -45.0/256.0; - prolongation[5](49,59) = 135.0/256.0; - prolongation[5](49,62) = -45.0/256.0; - prolongation[5](49,63) = 135.0/256.0; - prolongation[5](50,9) = -1.0/256.0; - prolongation[5](50,13) = -1.0/256.0; - prolongation[5](50,17) = -5.0/256.0; - prolongation[5](50,21) = -5.0/256.0; - prolongation[5](50,33) = 9.0/256.0; - prolongation[5](50,35) = 9.0/256.0; - prolongation[5](50,37) = 45.0/256.0; - prolongation[5](50,39) = 45.0/256.0; - prolongation[5](50,41) = 5.0/256.0; - prolongation[5](50,43) = -15.0/256.0; - prolongation[5](50,49) = 5.0/256.0; - prolongation[5](50,51) = -15.0/256.0; - prolongation[5](50,57) = -45.0/256.0; - prolongation[5](50,59) = 135.0/256.0; - prolongation[5](50,61) = -45.0/256.0; - prolongation[5](50,63) = 135.0/256.0; - prolongation[5](51,0) = -1.0/4096.0; - prolongation[5](51,1) = -5.0/4096.0; - prolongation[5](51,2) = -5.0/4096.0; - prolongation[5](51,3) = -1.0/4096.0; - prolongation[5](51,4) = -5.0/4096.0; - prolongation[5](51,5) = -25.0/4096.0; - prolongation[5](51,6) = -25.0/4096.0; - prolongation[5](51,7) = -5.0/4096.0; - prolongation[5](51,8) = 5.0/4096.0; - prolongation[5](51,9) = -15.0/4096.0; - prolongation[5](51,10) = 45.0/4096.0; - prolongation[5](51,11) = 45.0/4096.0; - prolongation[5](51,12) = 5.0/4096.0; - prolongation[5](51,13) = -15.0/4096.0; - prolongation[5](51,14) = 9.0/4096.0; - prolongation[5](51,15) = 9.0/4096.0; - prolongation[5](51,16) = 25.0/4096.0; - prolongation[5](51,17) = -75.0/4096.0; - prolongation[5](51,18) = 225.0/4096.0; - prolongation[5](51,19) = 225.0/4096.0; - prolongation[5](51,20) = 25.0/4096.0; - prolongation[5](51,21) = -75.0/4096.0; - prolongation[5](51,22) = 45.0/4096.0; - prolongation[5](51,23) = 45.0/4096.0; - prolongation[5](51,24) = 5.0/4096.0; - prolongation[5](51,25) = -15.0/4096.0; - prolongation[5](51,26) = 25.0/4096.0; - prolongation[5](51,27) = -75.0/4096.0; - prolongation[5](51,28) = 25.0/4096.0; - prolongation[5](51,29) = -75.0/4096.0; - prolongation[5](51,30) = 5.0/4096.0; - prolongation[5](51,31) = -15.0/4096.0; - prolongation[5](51,32) = -45.0/4096.0; - prolongation[5](51,33) = 135.0/4096.0; - prolongation[5](51,34) = -45.0/4096.0; - prolongation[5](51,35) = 135.0/4096.0; - prolongation[5](51,36) = -225.0/4096.0; - prolongation[5](51,37) = 675.0/4096.0; - prolongation[5](51,38) = -225.0/4096.0; - prolongation[5](51,39) = 675.0/4096.0; - prolongation[5](51,40) = -25.0/4096.0; - prolongation[5](51,41) = 75.0/4096.0; - prolongation[5](51,42) = 75.0/4096.0; - prolongation[5](51,43) = -225.0/4096.0; - prolongation[5](51,44) = -225.0/4096.0; - prolongation[5](51,45) = 675.0/4096.0; - prolongation[5](51,46) = -225.0/4096.0; - prolongation[5](51,47) = 675.0/4096.0; - prolongation[5](51,48) = -25.0/4096.0; - prolongation[5](51,49) = 75.0/4096.0; - prolongation[5](51,50) = 75.0/4096.0; - prolongation[5](51,51) = -225.0/4096.0; - prolongation[5](51,52) = -45.0/4096.0; - prolongation[5](51,53) = 135.0/4096.0; - prolongation[5](51,54) = -45.0/4096.0; - prolongation[5](51,55) = 135.0/4096.0; - prolongation[5](51,56) = 225.0/4096.0; - prolongation[5](51,57) = -675.0/4096.0; - prolongation[5](51,58) = -675.0/4096.0; - prolongation[5](51,59) = 2025.0/4096.0; - prolongation[5](51,60) = 225.0/4096.0; - prolongation[5](51,61) = -675.0/4096.0; - prolongation[5](51,62) = -675.0/4096.0; - prolongation[5](51,63) = 2025.0/4096.0; - prolongation[5](52,25) = -5.0/256.0; - prolongation[5](52,27) = -5.0/256.0; - prolongation[5](52,29) = -1.0/256.0; - prolongation[5](52,31) = -1.0/256.0; - prolongation[5](52,42) = 45.0/256.0; - prolongation[5](52,43) = 45.0/256.0; - prolongation[5](52,45) = -15.0/256.0; - prolongation[5](52,47) = 5.0/256.0; - prolongation[5](52,50) = 9.0/256.0; - prolongation[5](52,51) = 9.0/256.0; - prolongation[5](52,53) = -15.0/256.0; - prolongation[5](52,55) = 5.0/256.0; - prolongation[5](52,58) = 135.0/256.0; - prolongation[5](52,59) = 135.0/256.0; - prolongation[5](52,62) = -45.0/256.0; - prolongation[5](52,63) = -45.0/256.0; - prolongation[5](53,0) = -5.0/4096.0; - prolongation[5](53,1) = -5.0/4096.0; - prolongation[5](53,2) = -1.0/4096.0; - prolongation[5](53,3) = -1.0/4096.0; - prolongation[5](53,4) = -25.0/4096.0; - prolongation[5](53,5) = -25.0/4096.0; - prolongation[5](53,6) = -5.0/4096.0; - prolongation[5](53,7) = -5.0/4096.0; - prolongation[5](53,8) = 45.0/4096.0; - prolongation[5](53,9) = 45.0/4096.0; - prolongation[5](53,10) = -15.0/4096.0; - prolongation[5](53,11) = 5.0/4096.0; - prolongation[5](53,12) = 9.0/4096.0; - prolongation[5](53,13) = 9.0/4096.0; - prolongation[5](53,14) = -15.0/4096.0; - prolongation[5](53,15) = 5.0/4096.0; - prolongation[5](53,16) = 225.0/4096.0; - prolongation[5](53,17) = 225.0/4096.0; - prolongation[5](53,18) = -75.0/4096.0; - prolongation[5](53,19) = 25.0/4096.0; - prolongation[5](53,20) = 45.0/4096.0; - prolongation[5](53,21) = 45.0/4096.0; - prolongation[5](53,22) = -75.0/4096.0; - prolongation[5](53,23) = 25.0/4096.0; - prolongation[5](53,24) = 25.0/4096.0; - prolongation[5](53,25) = -75.0/4096.0; - prolongation[5](53,26) = 25.0/4096.0; - prolongation[5](53,27) = -75.0/4096.0; - prolongation[5](53,28) = 5.0/4096.0; - prolongation[5](53,29) = -15.0/4096.0; - prolongation[5](53,30) = 5.0/4096.0; - prolongation[5](53,31) = -15.0/4096.0; - prolongation[5](53,32) = 135.0/4096.0; - prolongation[5](53,33) = 135.0/4096.0; - prolongation[5](53,34) = -45.0/4096.0; - prolongation[5](53,35) = -45.0/4096.0; - prolongation[5](53,36) = 675.0/4096.0; - prolongation[5](53,37) = 675.0/4096.0; - prolongation[5](53,38) = -225.0/4096.0; - prolongation[5](53,39) = -225.0/4096.0; - prolongation[5](53,40) = -225.0/4096.0; - prolongation[5](53,41) = -225.0/4096.0; - prolongation[5](53,42) = 675.0/4096.0; - prolongation[5](53,43) = 675.0/4096.0; - prolongation[5](53,44) = 75.0/4096.0; - prolongation[5](53,45) = -225.0/4096.0; - prolongation[5](53,46) = -25.0/4096.0; - prolongation[5](53,47) = 75.0/4096.0; - prolongation[5](53,48) = -45.0/4096.0; - prolongation[5](53,49) = -45.0/4096.0; - prolongation[5](53,50) = 135.0/4096.0; - prolongation[5](53,51) = 135.0/4096.0; - prolongation[5](53,52) = 75.0/4096.0; - prolongation[5](53,53) = -225.0/4096.0; - prolongation[5](53,54) = -25.0/4096.0; - prolongation[5](53,55) = 75.0/4096.0; - prolongation[5](53,56) = -675.0/4096.0; - prolongation[5](53,57) = -675.0/4096.0; - prolongation[5](53,58) = 2025.0/4096.0; - prolongation[5](53,59) = 2025.0/4096.0; - prolongation[5](53,60) = 225.0/4096.0; - prolongation[5](53,61) = 225.0/4096.0; - prolongation[5](53,62) = -675.0/4096.0; - prolongation[5](53,63) = -675.0/4096.0; - prolongation[5](54,45) = -1.0/16.0; - prolongation[5](54,53) = -1.0/16.0; - prolongation[5](54,58) = 9.0/16.0; - prolongation[5](54,59) = 9.0/16.0; - prolongation[5](55,10) = -1.0/256.0; - prolongation[5](55,14) = -1.0/256.0; - prolongation[5](55,18) = -5.0/256.0; - prolongation[5](55,22) = -5.0/256.0; - prolongation[5](55,32) = 9.0/256.0; - prolongation[5](55,33) = 9.0/256.0; - prolongation[5](55,36) = 45.0/256.0; - prolongation[5](55,37) = 45.0/256.0; - prolongation[5](55,44) = 5.0/256.0; - prolongation[5](55,45) = -15.0/256.0; - prolongation[5](55,52) = 5.0/256.0; - prolongation[5](55,53) = -15.0/256.0; - prolongation[5](55,56) = -45.0/256.0; - prolongation[5](55,57) = -45.0/256.0; - prolongation[5](55,58) = 135.0/256.0; - prolongation[5](55,59) = 135.0/256.0; - prolongation[5](56,43) = 5.0/16.0; - prolongation[5](56,51) = 1.0/16.0; - prolongation[5](56,59) = 15.0/16.0; - prolongation[5](56,63) = -5.0/16.0; - prolongation[5](57,25) = 5.0/256.0; - prolongation[5](57,27) = 25.0/256.0; - prolongation[5](57,29) = 5.0/256.0; - prolongation[5](57,31) = 1.0/256.0; - prolongation[5](57,42) = -25.0/256.0; - prolongation[5](57,43) = 75.0/256.0; - prolongation[5](57,45) = 75.0/256.0; - prolongation[5](57,47) = -25.0/256.0; - prolongation[5](57,50) = -5.0/256.0; - prolongation[5](57,51) = 15.0/256.0; - prolongation[5](57,53) = 15.0/256.0; - prolongation[5](57,55) = -5.0/256.0; - prolongation[5](57,58) = -75.0/256.0; - prolongation[5](57,59) = 225.0/256.0; - prolongation[5](57,62) = 25.0/256.0; - prolongation[5](57,63) = -75.0/256.0; - prolongation[5](58,9) = 5.0/256.0; - prolongation[5](58,13) = 1.0/256.0; - prolongation[5](58,17) = 25.0/256.0; - prolongation[5](58,21) = 5.0/256.0; - prolongation[5](58,33) = 15.0/256.0; - prolongation[5](58,35) = -5.0/256.0; - prolongation[5](58,37) = 75.0/256.0; - prolongation[5](58,39) = -25.0/256.0; - prolongation[5](58,41) = -25.0/256.0; - prolongation[5](58,43) = 75.0/256.0; - prolongation[5](58,49) = -5.0/256.0; - prolongation[5](58,51) = 15.0/256.0; - prolongation[5](58,57) = -75.0/256.0; - prolongation[5](58,59) = 225.0/256.0; - prolongation[5](58,61) = 25.0/256.0; - prolongation[5](58,63) = -75.0/256.0; - prolongation[5](59,0) = 5.0/4096.0; - prolongation[5](59,1) = 25.0/4096.0; - prolongation[5](59,2) = 5.0/4096.0; - prolongation[5](59,3) = 1.0/4096.0; - prolongation[5](59,4) = 25.0/4096.0; - prolongation[5](59,5) = 125.0/4096.0; - prolongation[5](59,6) = 25.0/4096.0; - prolongation[5](59,7) = 5.0/4096.0; - prolongation[5](59,8) = -25.0/4096.0; - prolongation[5](59,9) = 75.0/4096.0; - prolongation[5](59,10) = 75.0/4096.0; - prolongation[5](59,11) = -25.0/4096.0; - prolongation[5](59,12) = -5.0/4096.0; - prolongation[5](59,13) = 15.0/4096.0; - prolongation[5](59,14) = 15.0/4096.0; - prolongation[5](59,15) = -5.0/4096.0; - prolongation[5](59,16) = -125.0/4096.0; - prolongation[5](59,17) = 375.0/4096.0; - prolongation[5](59,18) = 375.0/4096.0; - prolongation[5](59,19) = -125.0/4096.0; - prolongation[5](59,20) = -25.0/4096.0; - prolongation[5](59,21) = 75.0/4096.0; - prolongation[5](59,22) = 75.0/4096.0; - prolongation[5](59,23) = -25.0/4096.0; - prolongation[5](59,24) = -25.0/4096.0; - prolongation[5](59,25) = 75.0/4096.0; - prolongation[5](59,26) = -125.0/4096.0; - prolongation[5](59,27) = 375.0/4096.0; - prolongation[5](59,28) = -25.0/4096.0; - prolongation[5](59,29) = 75.0/4096.0; - prolongation[5](59,30) = -5.0/4096.0; - prolongation[5](59,31) = 15.0/4096.0; - prolongation[5](59,32) = -75.0/4096.0; - prolongation[5](59,33) = 225.0/4096.0; - prolongation[5](59,34) = 25.0/4096.0; - prolongation[5](59,35) = -75.0/4096.0; - prolongation[5](59,36) = -375.0/4096.0; - prolongation[5](59,37) = 1125.0/4096.0; - prolongation[5](59,38) = 125.0/4096.0; - prolongation[5](59,39) = -375.0/4096.0; - prolongation[5](59,40) = 125.0/4096.0; - prolongation[5](59,41) = -375.0/4096.0; - prolongation[5](59,42) = -375.0/4096.0; - prolongation[5](59,43) = 1125.0/4096.0; - prolongation[5](59,44) = -375.0/4096.0; - prolongation[5](59,45) = 1125.0/4096.0; - prolongation[5](59,46) = 125.0/4096.0; - prolongation[5](59,47) = -375.0/4096.0; - prolongation[5](59,48) = 25.0/4096.0; - prolongation[5](59,49) = -75.0/4096.0; - prolongation[5](59,50) = -75.0/4096.0; - prolongation[5](59,51) = 225.0/4096.0; - prolongation[5](59,52) = -75.0/4096.0; - prolongation[5](59,53) = 225.0/4096.0; - prolongation[5](59,54) = 25.0/4096.0; - prolongation[5](59,55) = -75.0/4096.0; - prolongation[5](59,56) = 375.0/4096.0; - prolongation[5](59,57) = -1125.0/4096.0; - prolongation[5](59,58) = -1125.0/4096.0; - prolongation[5](59,59) = 3375.0/4096.0; - prolongation[5](59,60) = -125.0/4096.0; - prolongation[5](59,61) = 375.0/4096.0; - prolongation[5](59,62) = 375.0/4096.0; - prolongation[5](59,63) = -1125.0/4096.0; - prolongation[5](60,59) = 1.0; - prolongation[5](61,45) = 5.0/16.0; - prolongation[5](61,53) = 1.0/16.0; - prolongation[5](61,58) = -5.0/16.0; - prolongation[5](61,59) = 15.0/16.0; - prolongation[5](62,33) = 1.0/16.0; - prolongation[5](62,37) = 5.0/16.0; - prolongation[5](62,57) = -5.0/16.0; - prolongation[5](62,59) = 15.0/16.0; - prolongation[5](63,10) = 5.0/256.0; - prolongation[5](63,14) = 1.0/256.0; - prolongation[5](63,18) = 25.0/256.0; - prolongation[5](63,22) = 5.0/256.0; - prolongation[5](63,32) = -5.0/256.0; - prolongation[5](63,33) = 15.0/256.0; - prolongation[5](63,36) = -25.0/256.0; - prolongation[5](63,37) = 75.0/256.0; - prolongation[5](63,44) = -25.0/256.0; - prolongation[5](63,45) = 75.0/256.0; - prolongation[5](63,52) = -5.0/256.0; - prolongation[5](63,53) = 15.0/256.0; - prolongation[5](63,56) = 25.0/256.0; - prolongation[5](63,57) = -75.0/256.0; - prolongation[5](63,58) = -75.0/256.0; - prolongation[5](63,59) = 225.0/256.0; - prolongation[6](0,0) = -1.0/4096.0; - prolongation[6](0,1) = -1.0/4096.0; - prolongation[6](0,2) = -1.0/4096.0; - prolongation[6](0,3) = -1.0/4096.0; - prolongation[6](0,4) = -1.0/4096.0; - prolongation[6](0,5) = -1.0/4096.0; - prolongation[6](0,6) = -1.0/4096.0; - prolongation[6](0,7) = -1.0/4096.0; - prolongation[6](0,8) = 9.0/4096.0; - prolongation[6](0,9) = 9.0/4096.0; - prolongation[6](0,10) = 9.0/4096.0; - prolongation[6](0,11) = 9.0/4096.0; - prolongation[6](0,12) = 9.0/4096.0; - prolongation[6](0,13) = 9.0/4096.0; - prolongation[6](0,14) = 9.0/4096.0; - prolongation[6](0,15) = 9.0/4096.0; - prolongation[6](0,16) = 9.0/4096.0; - prolongation[6](0,17) = 9.0/4096.0; - prolongation[6](0,18) = 9.0/4096.0; - prolongation[6](0,19) = 9.0/4096.0; - prolongation[6](0,20) = 9.0/4096.0; - prolongation[6](0,21) = 9.0/4096.0; - prolongation[6](0,22) = 9.0/4096.0; - prolongation[6](0,23) = 9.0/4096.0; - prolongation[6](0,24) = 9.0/4096.0; - prolongation[6](0,25) = 9.0/4096.0; - prolongation[6](0,26) = 9.0/4096.0; - prolongation[6](0,27) = 9.0/4096.0; - prolongation[6](0,28) = 9.0/4096.0; - prolongation[6](0,29) = 9.0/4096.0; - prolongation[6](0,30) = 9.0/4096.0; - prolongation[6](0,31) = 9.0/4096.0; - prolongation[6](0,32) = -81.0/4096.0; - prolongation[6](0,33) = -81.0/4096.0; - prolongation[6](0,34) = -81.0/4096.0; - prolongation[6](0,35) = -81.0/4096.0; - prolongation[6](0,36) = -81.0/4096.0; - prolongation[6](0,37) = -81.0/4096.0; - prolongation[6](0,38) = -81.0/4096.0; - prolongation[6](0,39) = -81.0/4096.0; - prolongation[6](0,40) = -81.0/4096.0; - prolongation[6](0,41) = -81.0/4096.0; - prolongation[6](0,42) = -81.0/4096.0; - prolongation[6](0,43) = -81.0/4096.0; - prolongation[6](0,44) = -81.0/4096.0; - prolongation[6](0,45) = -81.0/4096.0; - prolongation[6](0,46) = -81.0/4096.0; - prolongation[6](0,47) = -81.0/4096.0; - prolongation[6](0,48) = -81.0/4096.0; - prolongation[6](0,49) = -81.0/4096.0; - prolongation[6](0,50) = -81.0/4096.0; - prolongation[6](0,51) = -81.0/4096.0; - prolongation[6](0,52) = -81.0/4096.0; - prolongation[6](0,53) = -81.0/4096.0; - prolongation[6](0,54) = -81.0/4096.0; - prolongation[6](0,55) = -81.0/4096.0; - prolongation[6](0,56) = 729.0/4096.0; - prolongation[6](0,57) = 729.0/4096.0; - prolongation[6](0,58) = 729.0/4096.0; - prolongation[6](0,59) = 729.0/4096.0; - prolongation[6](0,60) = 729.0/4096.0; - prolongation[6](0,61) = 729.0/4096.0; - prolongation[6](0,62) = 729.0/4096.0; - prolongation[6](0,63) = 729.0/4096.0; - prolongation[6](1,1) = 1.0/256.0; - prolongation[6](1,2) = 1.0/256.0; - prolongation[6](1,5) = 1.0/256.0; - prolongation[6](1,6) = 1.0/256.0; - prolongation[6](1,10) = -9.0/256.0; - prolongation[6](1,11) = -9.0/256.0; - prolongation[6](1,18) = -9.0/256.0; - prolongation[6](1,19) = -9.0/256.0; - prolongation[6](1,26) = -9.0/256.0; - prolongation[6](1,27) = -9.0/256.0; - prolongation[6](1,28) = -9.0/256.0; - prolongation[6](1,29) = -9.0/256.0; - prolongation[6](1,44) = 81.0/256.0; - prolongation[6](1,45) = 81.0/256.0; - prolongation[6](1,46) = 81.0/256.0; - prolongation[6](1,47) = 81.0/256.0; - prolongation[6](2,2) = -1.0/16.0; - prolongation[6](2,6) = -1.0/16.0; - prolongation[6](2,28) = 9.0/16.0; - prolongation[6](2,29) = 9.0/16.0; - prolongation[6](3,2) = 1.0/256.0; - prolongation[6](3,3) = 1.0/256.0; - prolongation[6](3,6) = 1.0/256.0; - prolongation[6](3,7) = 1.0/256.0; - prolongation[6](3,12) = -9.0/256.0; - prolongation[6](3,13) = -9.0/256.0; - prolongation[6](3,20) = -9.0/256.0; - prolongation[6](3,21) = -9.0/256.0; - prolongation[6](3,28) = -9.0/256.0; - prolongation[6](3,29) = -9.0/256.0; - prolongation[6](3,30) = -9.0/256.0; - prolongation[6](3,31) = -9.0/256.0; - prolongation[6](3,48) = 81.0/256.0; - prolongation[6](3,49) = 81.0/256.0; - prolongation[6](3,50) = 81.0/256.0; - prolongation[6](3,51) = 81.0/256.0; - prolongation[6](4,4) = 1.0/256.0; - prolongation[6](4,5) = 1.0/256.0; - prolongation[6](4,6) = 1.0/256.0; - prolongation[6](4,7) = 1.0/256.0; - prolongation[6](4,16) = -9.0/256.0; - prolongation[6](4,17) = -9.0/256.0; - prolongation[6](4,18) = -9.0/256.0; - prolongation[6](4,19) = -9.0/256.0; - prolongation[6](4,20) = -9.0/256.0; - prolongation[6](4,21) = -9.0/256.0; - prolongation[6](4,22) = -9.0/256.0; - prolongation[6](4,23) = -9.0/256.0; - prolongation[6](4,36) = 81.0/256.0; - prolongation[6](4,37) = 81.0/256.0; - prolongation[6](4,38) = 81.0/256.0; - prolongation[6](4,39) = 81.0/256.0; - prolongation[6](5,5) = -1.0/16.0; - prolongation[6](5,6) = -1.0/16.0; - prolongation[6](5,18) = 9.0/16.0; - prolongation[6](5,19) = 9.0/16.0; - prolongation[6](6,6) = 1.0; - prolongation[6](7,6) = -1.0/16.0; - prolongation[6](7,7) = -1.0/16.0; - prolongation[6](7,20) = 9.0/16.0; - prolongation[6](7,21) = 9.0/16.0; - prolongation[6](8,9) = 1.0/256.0; - prolongation[6](8,13) = 1.0/256.0; - prolongation[6](8,17) = 1.0/256.0; - prolongation[6](8,21) = 1.0/256.0; - prolongation[6](8,33) = -9.0/256.0; - prolongation[6](8,35) = -9.0/256.0; - prolongation[6](8,37) = -9.0/256.0; - prolongation[6](8,39) = -9.0/256.0; - prolongation[6](8,41) = -9.0/256.0; - prolongation[6](8,43) = -9.0/256.0; - prolongation[6](8,49) = -9.0/256.0; - prolongation[6](8,51) = -9.0/256.0; - prolongation[6](8,57) = 81.0/256.0; - prolongation[6](8,59) = 81.0/256.0; - prolongation[6](8,61) = 81.0/256.0; - prolongation[6](8,63) = 81.0/256.0; - prolongation[6](9,0) = 1.0/4096.0; - prolongation[6](9,1) = 5.0/4096.0; - prolongation[6](9,2) = 5.0/4096.0; - prolongation[6](9,3) = 1.0/4096.0; - prolongation[6](9,4) = 1.0/4096.0; - prolongation[6](9,5) = 5.0/4096.0; - prolongation[6](9,6) = 5.0/4096.0; - prolongation[6](9,7) = 1.0/4096.0; - prolongation[6](9,8) = -5.0/4096.0; - prolongation[6](9,9) = 15.0/4096.0; - prolongation[6](9,10) = -45.0/4096.0; - prolongation[6](9,11) = -45.0/4096.0; - prolongation[6](9,12) = -5.0/4096.0; - prolongation[6](9,13) = 15.0/4096.0; - prolongation[6](9,14) = -9.0/4096.0; - prolongation[6](9,15) = -9.0/4096.0; - prolongation[6](9,16) = -5.0/4096.0; - prolongation[6](9,17) = 15.0/4096.0; - prolongation[6](9,18) = -45.0/4096.0; - prolongation[6](9,19) = -45.0/4096.0; - prolongation[6](9,20) = -5.0/4096.0; - prolongation[6](9,21) = 15.0/4096.0; - prolongation[6](9,22) = -9.0/4096.0; - prolongation[6](9,23) = -9.0/4096.0; - prolongation[6](9,24) = -9.0/4096.0; - prolongation[6](9,25) = -9.0/4096.0; - prolongation[6](9,26) = -45.0/4096.0; - prolongation[6](9,27) = -45.0/4096.0; - prolongation[6](9,28) = -45.0/4096.0; - prolongation[6](9,29) = -45.0/4096.0; - prolongation[6](9,30) = -9.0/4096.0; - prolongation[6](9,31) = -9.0/4096.0; - prolongation[6](9,32) = 45.0/4096.0; - prolongation[6](9,33) = -135.0/4096.0; - prolongation[6](9,34) = 45.0/4096.0; - prolongation[6](9,35) = -135.0/4096.0; - prolongation[6](9,36) = 45.0/4096.0; - prolongation[6](9,37) = -135.0/4096.0; - prolongation[6](9,38) = 45.0/4096.0; - prolongation[6](9,39) = -135.0/4096.0; - prolongation[6](9,40) = 45.0/4096.0; - prolongation[6](9,41) = -135.0/4096.0; - prolongation[6](9,42) = 45.0/4096.0; - prolongation[6](9,43) = -135.0/4096.0; - prolongation[6](9,44) = 405.0/4096.0; - prolongation[6](9,45) = 405.0/4096.0; - prolongation[6](9,46) = 405.0/4096.0; - prolongation[6](9,47) = 405.0/4096.0; - prolongation[6](9,48) = 45.0/4096.0; - prolongation[6](9,49) = -135.0/4096.0; - prolongation[6](9,50) = 45.0/4096.0; - prolongation[6](9,51) = -135.0/4096.0; - prolongation[6](9,52) = 81.0/4096.0; - prolongation[6](9,53) = 81.0/4096.0; - prolongation[6](9,54) = 81.0/4096.0; - prolongation[6](9,55) = 81.0/4096.0; - prolongation[6](9,56) = -405.0/4096.0; - prolongation[6](9,57) = 1215.0/4096.0; - prolongation[6](9,58) = -405.0/4096.0; - prolongation[6](9,59) = 1215.0/4096.0; - prolongation[6](9,60) = -405.0/4096.0; - prolongation[6](9,61) = 1215.0/4096.0; - prolongation[6](9,62) = -405.0/4096.0; - prolongation[6](9,63) = 1215.0/4096.0; - prolongation[6](10,11) = -1.0/16.0; - prolongation[6](10,19) = -1.0/16.0; - prolongation[6](10,46) = 9.0/16.0; - prolongation[6](10,47) = 9.0/16.0; - prolongation[6](11,1) = -1.0/256.0; - prolongation[6](11,2) = -5.0/256.0; - prolongation[6](11,5) = -1.0/256.0; - prolongation[6](11,6) = -5.0/256.0; - prolongation[6](11,10) = 5.0/256.0; - prolongation[6](11,11) = -15.0/256.0; - prolongation[6](11,18) = 5.0/256.0; - prolongation[6](11,19) = -15.0/256.0; - prolongation[6](11,26) = 9.0/256.0; - prolongation[6](11,27) = 9.0/256.0; - prolongation[6](11,28) = 45.0/256.0; - prolongation[6](11,29) = 45.0/256.0; - prolongation[6](11,44) = -45.0/256.0; - prolongation[6](11,45) = -45.0/256.0; - prolongation[6](11,46) = 135.0/256.0; - prolongation[6](11,47) = 135.0/256.0; - prolongation[6](12,13) = -1.0/16.0; - prolongation[6](12,21) = -1.0/16.0; - prolongation[6](12,49) = 9.0/16.0; - prolongation[6](12,51) = 9.0/16.0; - prolongation[6](13,2) = -5.0/256.0; - prolongation[6](13,3) = -1.0/256.0; - prolongation[6](13,6) = -5.0/256.0; - prolongation[6](13,7) = -1.0/256.0; - prolongation[6](13,12) = 5.0/256.0; - prolongation[6](13,13) = -15.0/256.0; - prolongation[6](13,20) = 5.0/256.0; - prolongation[6](13,21) = -15.0/256.0; - prolongation[6](13,28) = 45.0/256.0; - prolongation[6](13,29) = 45.0/256.0; - prolongation[6](13,30) = 9.0/256.0; - prolongation[6](13,31) = 9.0/256.0; - prolongation[6](13,48) = -45.0/256.0; - prolongation[6](13,49) = 135.0/256.0; - prolongation[6](13,50) = -45.0/256.0; - prolongation[6](13,51) = 135.0/256.0; - prolongation[6](14,11) = 1.0/256.0; - prolongation[6](14,15) = 1.0/256.0; - prolongation[6](14,19) = 1.0/256.0; - prolongation[6](14,23) = 1.0/256.0; - prolongation[6](14,34) = -9.0/256.0; - prolongation[6](14,35) = -9.0/256.0; - prolongation[6](14,38) = -9.0/256.0; - prolongation[6](14,39) = -9.0/256.0; - prolongation[6](14,46) = -9.0/256.0; - prolongation[6](14,47) = -9.0/256.0; - prolongation[6](14,54) = -9.0/256.0; - prolongation[6](14,55) = -9.0/256.0; - prolongation[6](14,60) = 81.0/256.0; - prolongation[6](14,61) = 81.0/256.0; - prolongation[6](14,62) = 81.0/256.0; - prolongation[6](14,63) = 81.0/256.0; - prolongation[6](15,0) = 1.0/4096.0; - prolongation[6](15,1) = 1.0/4096.0; - prolongation[6](15,2) = 5.0/4096.0; - prolongation[6](15,3) = 5.0/4096.0; - prolongation[6](15,4) = 1.0/4096.0; - prolongation[6](15,5) = 1.0/4096.0; - prolongation[6](15,6) = 5.0/4096.0; - prolongation[6](15,7) = 5.0/4096.0; - prolongation[6](15,8) = -9.0/4096.0; - prolongation[6](15,9) = -9.0/4096.0; - prolongation[6](15,10) = -5.0/4096.0; - prolongation[6](15,11) = 15.0/4096.0; - prolongation[6](15,12) = -45.0/4096.0; - prolongation[6](15,13) = -45.0/4096.0; - prolongation[6](15,14) = -5.0/4096.0; - prolongation[6](15,15) = 15.0/4096.0; - prolongation[6](15,16) = -9.0/4096.0; - prolongation[6](15,17) = -9.0/4096.0; - prolongation[6](15,18) = -5.0/4096.0; - prolongation[6](15,19) = 15.0/4096.0; - prolongation[6](15,20) = -45.0/4096.0; - prolongation[6](15,21) = -45.0/4096.0; - prolongation[6](15,22) = -5.0/4096.0; - prolongation[6](15,23) = 15.0/4096.0; - prolongation[6](15,24) = -9.0/4096.0; - prolongation[6](15,25) = -9.0/4096.0; - prolongation[6](15,26) = -9.0/4096.0; - prolongation[6](15,27) = -9.0/4096.0; - prolongation[6](15,28) = -45.0/4096.0; - prolongation[6](15,29) = -45.0/4096.0; - prolongation[6](15,30) = -45.0/4096.0; - prolongation[6](15,31) = -45.0/4096.0; - prolongation[6](15,32) = 45.0/4096.0; - prolongation[6](15,33) = 45.0/4096.0; - prolongation[6](15,34) = -135.0/4096.0; - prolongation[6](15,35) = -135.0/4096.0; - prolongation[6](15,36) = 45.0/4096.0; - prolongation[6](15,37) = 45.0/4096.0; - prolongation[6](15,38) = -135.0/4096.0; - prolongation[6](15,39) = -135.0/4096.0; - prolongation[6](15,40) = 81.0/4096.0; - prolongation[6](15,41) = 81.0/4096.0; - prolongation[6](15,42) = 81.0/4096.0; - prolongation[6](15,43) = 81.0/4096.0; - prolongation[6](15,44) = 45.0/4096.0; - prolongation[6](15,45) = 45.0/4096.0; - prolongation[6](15,46) = -135.0/4096.0; - prolongation[6](15,47) = -135.0/4096.0; - prolongation[6](15,48) = 405.0/4096.0; - prolongation[6](15,49) = 405.0/4096.0; - prolongation[6](15,50) = 405.0/4096.0; - prolongation[6](15,51) = 405.0/4096.0; - prolongation[6](15,52) = 45.0/4096.0; - prolongation[6](15,53) = 45.0/4096.0; - prolongation[6](15,54) = -135.0/4096.0; - prolongation[6](15,55) = -135.0/4096.0; - prolongation[6](15,56) = -405.0/4096.0; - prolongation[6](15,57) = -405.0/4096.0; - prolongation[6](15,58) = -405.0/4096.0; - prolongation[6](15,59) = -405.0/4096.0; - prolongation[6](15,60) = 1215.0/4096.0; - prolongation[6](15,61) = 1215.0/4096.0; - prolongation[6](15,62) = 1215.0/4096.0; - prolongation[6](15,63) = 1215.0/4096.0; - prolongation[6](16,17) = -1.0/16.0; - prolongation[6](16,21) = -1.0/16.0; - prolongation[6](16,37) = 9.0/16.0; - prolongation[6](16,39) = 9.0/16.0; - prolongation[6](17,4) = -1.0/256.0; - prolongation[6](17,5) = -5.0/256.0; - prolongation[6](17,6) = -5.0/256.0; - prolongation[6](17,7) = -1.0/256.0; - prolongation[6](17,16) = 5.0/256.0; - prolongation[6](17,17) = -15.0/256.0; - prolongation[6](17,18) = 45.0/256.0; - prolongation[6](17,19) = 45.0/256.0; - prolongation[6](17,20) = 5.0/256.0; - prolongation[6](17,21) = -15.0/256.0; - prolongation[6](17,22) = 9.0/256.0; - prolongation[6](17,23) = 9.0/256.0; - prolongation[6](17,36) = -45.0/256.0; - prolongation[6](17,37) = 135.0/256.0; - prolongation[6](17,38) = -45.0/256.0; - prolongation[6](17,39) = 135.0/256.0; - prolongation[6](18,19) = 1.0; - prolongation[6](19,5) = 1.0/16.0; - prolongation[6](19,6) = 5.0/16.0; - prolongation[6](19,18) = -5.0/16.0; - prolongation[6](19,19) = 15.0/16.0; - prolongation[6](20,21) = 1.0; - prolongation[6](21,6) = 5.0/16.0; - prolongation[6](21,7) = 1.0/16.0; - prolongation[6](21,20) = -5.0/16.0; - prolongation[6](21,21) = 15.0/16.0; - prolongation[6](22,19) = -1.0/16.0; - prolongation[6](22,23) = -1.0/16.0; - prolongation[6](22,38) = 9.0/16.0; - prolongation[6](22,39) = 9.0/16.0; - prolongation[6](23,4) = -1.0/256.0; - prolongation[6](23,5) = -1.0/256.0; - prolongation[6](23,6) = -5.0/256.0; - prolongation[6](23,7) = -5.0/256.0; - prolongation[6](23,16) = 9.0/256.0; - prolongation[6](23,17) = 9.0/256.0; - prolongation[6](23,18) = 5.0/256.0; - prolongation[6](23,19) = -15.0/256.0; - prolongation[6](23,20) = 45.0/256.0; - prolongation[6](23,21) = 45.0/256.0; - prolongation[6](23,22) = 5.0/256.0; - prolongation[6](23,23) = -15.0/256.0; - prolongation[6](23,36) = -45.0/256.0; - prolongation[6](23,37) = -45.0/256.0; - prolongation[6](23,38) = 135.0/256.0; - prolongation[6](23,39) = 135.0/256.0; - prolongation[6](24,25) = 1.0/256.0; - prolongation[6](24,27) = 1.0/256.0; - prolongation[6](24,29) = 1.0/256.0; - prolongation[6](24,31) = 1.0/256.0; - prolongation[6](24,42) = -9.0/256.0; - prolongation[6](24,43) = -9.0/256.0; - prolongation[6](24,45) = -9.0/256.0; - prolongation[6](24,47) = -9.0/256.0; - prolongation[6](24,50) = -9.0/256.0; - prolongation[6](24,51) = -9.0/256.0; - prolongation[6](24,53) = -9.0/256.0; - prolongation[6](24,55) = -9.0/256.0; - prolongation[6](24,58) = 81.0/256.0; - prolongation[6](24,59) = 81.0/256.0; - prolongation[6](24,62) = 81.0/256.0; - prolongation[6](24,63) = 81.0/256.0; - prolongation[6](25,0) = 1.0/4096.0; - prolongation[6](25,1) = 1.0/4096.0; - prolongation[6](25,2) = 1.0/4096.0; - prolongation[6](25,3) = 1.0/4096.0; - prolongation[6](25,4) = 5.0/4096.0; - prolongation[6](25,5) = 5.0/4096.0; - prolongation[6](25,6) = 5.0/4096.0; - prolongation[6](25,7) = 5.0/4096.0; - prolongation[6](25,8) = -9.0/4096.0; - prolongation[6](25,9) = -9.0/4096.0; - prolongation[6](25,10) = -9.0/4096.0; - prolongation[6](25,11) = -9.0/4096.0; - prolongation[6](25,12) = -9.0/4096.0; - prolongation[6](25,13) = -9.0/4096.0; - prolongation[6](25,14) = -9.0/4096.0; - prolongation[6](25,15) = -9.0/4096.0; - prolongation[6](25,16) = -45.0/4096.0; - prolongation[6](25,17) = -45.0/4096.0; - prolongation[6](25,18) = -45.0/4096.0; - prolongation[6](25,19) = -45.0/4096.0; - prolongation[6](25,20) = -45.0/4096.0; - prolongation[6](25,21) = -45.0/4096.0; - prolongation[6](25,22) = -45.0/4096.0; - prolongation[6](25,23) = -45.0/4096.0; - prolongation[6](25,24) = -5.0/4096.0; - prolongation[6](25,25) = 15.0/4096.0; - prolongation[6](25,26) = -5.0/4096.0; - prolongation[6](25,27) = 15.0/4096.0; - prolongation[6](25,28) = -5.0/4096.0; - prolongation[6](25,29) = 15.0/4096.0; - prolongation[6](25,30) = -5.0/4096.0; - prolongation[6](25,31) = 15.0/4096.0; - prolongation[6](25,32) = 81.0/4096.0; - prolongation[6](25,33) = 81.0/4096.0; - prolongation[6](25,34) = 81.0/4096.0; - prolongation[6](25,35) = 81.0/4096.0; - prolongation[6](25,36) = 405.0/4096.0; - prolongation[6](25,37) = 405.0/4096.0; - prolongation[6](25,38) = 405.0/4096.0; - prolongation[6](25,39) = 405.0/4096.0; - prolongation[6](25,40) = 45.0/4096.0; - prolongation[6](25,41) = 45.0/4096.0; - prolongation[6](25,42) = -135.0/4096.0; - prolongation[6](25,43) = -135.0/4096.0; - prolongation[6](25,44) = 45.0/4096.0; - prolongation[6](25,45) = -135.0/4096.0; - prolongation[6](25,46) = 45.0/4096.0; - prolongation[6](25,47) = -135.0/4096.0; - prolongation[6](25,48) = 45.0/4096.0; - prolongation[6](25,49) = 45.0/4096.0; - prolongation[6](25,50) = -135.0/4096.0; - prolongation[6](25,51) = -135.0/4096.0; - prolongation[6](25,52) = 45.0/4096.0; - prolongation[6](25,53) = -135.0/4096.0; - prolongation[6](25,54) = 45.0/4096.0; - prolongation[6](25,55) = -135.0/4096.0; - prolongation[6](25,56) = -405.0/4096.0; - prolongation[6](25,57) = -405.0/4096.0; - prolongation[6](25,58) = 1215.0/4096.0; - prolongation[6](25,59) = 1215.0/4096.0; - prolongation[6](25,60) = -405.0/4096.0; - prolongation[6](25,61) = -405.0/4096.0; - prolongation[6](25,62) = 1215.0/4096.0; - prolongation[6](25,63) = 1215.0/4096.0; - prolongation[6](26,27) = -1.0/16.0; - prolongation[6](26,29) = -1.0/16.0; - prolongation[6](26,45) = 9.0/16.0; - prolongation[6](26,47) = 9.0/16.0; - prolongation[6](27,1) = -1.0/256.0; - prolongation[6](27,2) = -1.0/256.0; - prolongation[6](27,5) = -5.0/256.0; - prolongation[6](27,6) = -5.0/256.0; - prolongation[6](27,10) = 9.0/256.0; - prolongation[6](27,11) = 9.0/256.0; - prolongation[6](27,18) = 45.0/256.0; - prolongation[6](27,19) = 45.0/256.0; - prolongation[6](27,26) = 5.0/256.0; - prolongation[6](27,27) = -15.0/256.0; - prolongation[6](27,28) = 5.0/256.0; - prolongation[6](27,29) = -15.0/256.0; - prolongation[6](27,44) = -45.0/256.0; - prolongation[6](27,45) = 135.0/256.0; - prolongation[6](27,46) = -45.0/256.0; - prolongation[6](27,47) = 135.0/256.0; - prolongation[6](28,29) = 1.0; - prolongation[6](29,2) = 1.0/16.0; - prolongation[6](29,6) = 5.0/16.0; - prolongation[6](29,28) = -5.0/16.0; - prolongation[6](29,29) = 15.0/16.0; - prolongation[6](30,29) = -1.0/16.0; - prolongation[6](30,31) = -1.0/16.0; - prolongation[6](30,50) = 9.0/16.0; - prolongation[6](30,51) = 9.0/16.0; - prolongation[6](31,2) = -1.0/256.0; - prolongation[6](31,3) = -1.0/256.0; - prolongation[6](31,6) = -5.0/256.0; - prolongation[6](31,7) = -5.0/256.0; - prolongation[6](31,12) = 9.0/256.0; - prolongation[6](31,13) = 9.0/256.0; - prolongation[6](31,20) = 45.0/256.0; - prolongation[6](31,21) = 45.0/256.0; - prolongation[6](31,28) = 5.0/256.0; - prolongation[6](31,29) = -15.0/256.0; - prolongation[6](31,30) = 5.0/256.0; - prolongation[6](31,31) = -15.0/256.0; - prolongation[6](31,48) = -45.0/256.0; - prolongation[6](31,49) = -45.0/256.0; - prolongation[6](31,50) = 135.0/256.0; - prolongation[6](31,51) = 135.0/256.0; - prolongation[6](32,35) = -1.0/16.0; - prolongation[6](32,39) = -1.0/16.0; - prolongation[6](32,61) = 9.0/16.0; - prolongation[6](32,63) = 9.0/16.0; - prolongation[6](33,11) = -5.0/256.0; - prolongation[6](33,15) = -1.0/256.0; - prolongation[6](33,19) = -5.0/256.0; - prolongation[6](33,23) = -1.0/256.0; - prolongation[6](33,34) = 5.0/256.0; - prolongation[6](33,35) = -15.0/256.0; - prolongation[6](33,38) = 5.0/256.0; - prolongation[6](33,39) = -15.0/256.0; - prolongation[6](33,46) = 45.0/256.0; - prolongation[6](33,47) = 45.0/256.0; - prolongation[6](33,54) = 9.0/256.0; - prolongation[6](33,55) = 9.0/256.0; - prolongation[6](33,60) = -45.0/256.0; - prolongation[6](33,61) = 135.0/256.0; - prolongation[6](33,62) = -45.0/256.0; - prolongation[6](33,63) = 135.0/256.0; - prolongation[6](34,9) = -1.0/256.0; - prolongation[6](34,13) = -5.0/256.0; - prolongation[6](34,17) = -1.0/256.0; - prolongation[6](34,21) = -5.0/256.0; - prolongation[6](34,33) = 5.0/256.0; - prolongation[6](34,35) = -15.0/256.0; - prolongation[6](34,37) = 5.0/256.0; - prolongation[6](34,39) = -15.0/256.0; - prolongation[6](34,41) = 9.0/256.0; - prolongation[6](34,43) = 9.0/256.0; - prolongation[6](34,49) = 45.0/256.0; - prolongation[6](34,51) = 45.0/256.0; - prolongation[6](34,57) = -45.0/256.0; - prolongation[6](34,59) = -45.0/256.0; - prolongation[6](34,61) = 135.0/256.0; - prolongation[6](34,63) = 135.0/256.0; - prolongation[6](35,0) = -1.0/4096.0; - prolongation[6](35,1) = -5.0/4096.0; - prolongation[6](35,2) = -25.0/4096.0; - prolongation[6](35,3) = -5.0/4096.0; - prolongation[6](35,4) = -1.0/4096.0; - prolongation[6](35,5) = -5.0/4096.0; - prolongation[6](35,6) = -25.0/4096.0; - prolongation[6](35,7) = -5.0/4096.0; - prolongation[6](35,8) = 5.0/4096.0; - prolongation[6](35,9) = -15.0/4096.0; - prolongation[6](35,10) = 25.0/4096.0; - prolongation[6](35,11) = -75.0/4096.0; - prolongation[6](35,12) = 25.0/4096.0; - prolongation[6](35,13) = -75.0/4096.0; - prolongation[6](35,14) = 5.0/4096.0; - prolongation[6](35,15) = -15.0/4096.0; - prolongation[6](35,16) = 5.0/4096.0; - prolongation[6](35,17) = -15.0/4096.0; - prolongation[6](35,18) = 25.0/4096.0; - prolongation[6](35,19) = -75.0/4096.0; - prolongation[6](35,20) = 25.0/4096.0; - prolongation[6](35,21) = -75.0/4096.0; - prolongation[6](35,22) = 5.0/4096.0; - prolongation[6](35,23) = -15.0/4096.0; - prolongation[6](35,24) = 9.0/4096.0; - prolongation[6](35,25) = 9.0/4096.0; - prolongation[6](35,26) = 45.0/4096.0; - prolongation[6](35,27) = 45.0/4096.0; - prolongation[6](35,28) = 225.0/4096.0; - prolongation[6](35,29) = 225.0/4096.0; - prolongation[6](35,30) = 45.0/4096.0; - prolongation[6](35,31) = 45.0/4096.0; - prolongation[6](35,32) = -25.0/4096.0; - prolongation[6](35,33) = 75.0/4096.0; - prolongation[6](35,34) = 75.0/4096.0; - prolongation[6](35,35) = -225.0/4096.0; - prolongation[6](35,36) = -25.0/4096.0; - prolongation[6](35,37) = 75.0/4096.0; - prolongation[6](35,38) = 75.0/4096.0; - prolongation[6](35,39) = -225.0/4096.0; - prolongation[6](35,40) = -45.0/4096.0; - prolongation[6](35,41) = 135.0/4096.0; - prolongation[6](35,42) = -45.0/4096.0; - prolongation[6](35,43) = 135.0/4096.0; - prolongation[6](35,44) = -225.0/4096.0; - prolongation[6](35,45) = -225.0/4096.0; - prolongation[6](35,46) = 675.0/4096.0; - prolongation[6](35,47) = 675.0/4096.0; - prolongation[6](35,48) = -225.0/4096.0; - prolongation[6](35,49) = 675.0/4096.0; - prolongation[6](35,50) = -225.0/4096.0; - prolongation[6](35,51) = 675.0/4096.0; - prolongation[6](35,52) = -45.0/4096.0; - prolongation[6](35,53) = -45.0/4096.0; - prolongation[6](35,54) = 135.0/4096.0; - prolongation[6](35,55) = 135.0/4096.0; - prolongation[6](35,56) = 225.0/4096.0; - prolongation[6](35,57) = -675.0/4096.0; - prolongation[6](35,58) = 225.0/4096.0; - prolongation[6](35,59) = -675.0/4096.0; - prolongation[6](35,60) = -675.0/4096.0; - prolongation[6](35,61) = 2025.0/4096.0; - prolongation[6](35,62) = -675.0/4096.0; - prolongation[6](35,63) = 2025.0/4096.0; - prolongation[6](36,39) = 1.0; - prolongation[6](37,19) = 5.0/16.0; - prolongation[6](37,23) = 1.0/16.0; - prolongation[6](37,38) = -5.0/16.0; - prolongation[6](37,39) = 15.0/16.0; - prolongation[6](38,17) = 1.0/16.0; - prolongation[6](38,21) = 5.0/16.0; - prolongation[6](38,37) = -5.0/16.0; - prolongation[6](38,39) = 15.0/16.0; - prolongation[6](39,4) = 1.0/256.0; - prolongation[6](39,5) = 5.0/256.0; - prolongation[6](39,6) = 25.0/256.0; - prolongation[6](39,7) = 5.0/256.0; - prolongation[6](39,16) = -5.0/256.0; - prolongation[6](39,17) = 15.0/256.0; - prolongation[6](39,18) = -25.0/256.0; - prolongation[6](39,19) = 75.0/256.0; - prolongation[6](39,20) = -25.0/256.0; - prolongation[6](39,21) = 75.0/256.0; - prolongation[6](39,22) = -5.0/256.0; - prolongation[6](39,23) = 15.0/256.0; - prolongation[6](39,36) = 25.0/256.0; - prolongation[6](39,37) = -75.0/256.0; - prolongation[6](39,38) = -75.0/256.0; - prolongation[6](39,39) = 225.0/256.0; - prolongation[6](40,43) = -1.0/16.0; - prolongation[6](40,51) = -1.0/16.0; - prolongation[6](40,59) = 9.0/16.0; - prolongation[6](40,63) = 9.0/16.0; - prolongation[6](41,25) = -1.0/256.0; - prolongation[6](41,27) = -5.0/256.0; - prolongation[6](41,29) = -5.0/256.0; - prolongation[6](41,31) = -1.0/256.0; - prolongation[6](41,42) = 5.0/256.0; - prolongation[6](41,43) = -15.0/256.0; - prolongation[6](41,45) = 45.0/256.0; - prolongation[6](41,47) = 45.0/256.0; - prolongation[6](41,50) = 5.0/256.0; - prolongation[6](41,51) = -15.0/256.0; - prolongation[6](41,53) = 9.0/256.0; - prolongation[6](41,55) = 9.0/256.0; - prolongation[6](41,58) = -45.0/256.0; - prolongation[6](41,59) = 135.0/256.0; - prolongation[6](41,62) = -45.0/256.0; - prolongation[6](41,63) = 135.0/256.0; - prolongation[6](42,9) = -1.0/256.0; - prolongation[6](42,13) = -1.0/256.0; - prolongation[6](42,17) = -5.0/256.0; - prolongation[6](42,21) = -5.0/256.0; - prolongation[6](42,33) = 9.0/256.0; - prolongation[6](42,35) = 9.0/256.0; - prolongation[6](42,37) = 45.0/256.0; - prolongation[6](42,39) = 45.0/256.0; - prolongation[6](42,41) = 5.0/256.0; - prolongation[6](42,43) = -15.0/256.0; - prolongation[6](42,49) = 5.0/256.0; - prolongation[6](42,51) = -15.0/256.0; - prolongation[6](42,57) = -45.0/256.0; - prolongation[6](42,59) = 135.0/256.0; - prolongation[6](42,61) = -45.0/256.0; - prolongation[6](42,63) = 135.0/256.0; - prolongation[6](43,0) = -1.0/4096.0; - prolongation[6](43,1) = -5.0/4096.0; - prolongation[6](43,2) = -5.0/4096.0; - prolongation[6](43,3) = -1.0/4096.0; - prolongation[6](43,4) = -5.0/4096.0; - prolongation[6](43,5) = -25.0/4096.0; - prolongation[6](43,6) = -25.0/4096.0; - prolongation[6](43,7) = -5.0/4096.0; - prolongation[6](43,8) = 5.0/4096.0; - prolongation[6](43,9) = -15.0/4096.0; - prolongation[6](43,10) = 45.0/4096.0; - prolongation[6](43,11) = 45.0/4096.0; - prolongation[6](43,12) = 5.0/4096.0; - prolongation[6](43,13) = -15.0/4096.0; - prolongation[6](43,14) = 9.0/4096.0; - prolongation[6](43,15) = 9.0/4096.0; - prolongation[6](43,16) = 25.0/4096.0; - prolongation[6](43,17) = -75.0/4096.0; - prolongation[6](43,18) = 225.0/4096.0; - prolongation[6](43,19) = 225.0/4096.0; - prolongation[6](43,20) = 25.0/4096.0; - prolongation[6](43,21) = -75.0/4096.0; - prolongation[6](43,22) = 45.0/4096.0; - prolongation[6](43,23) = 45.0/4096.0; - prolongation[6](43,24) = 5.0/4096.0; - prolongation[6](43,25) = -15.0/4096.0; - prolongation[6](43,26) = 25.0/4096.0; - prolongation[6](43,27) = -75.0/4096.0; - prolongation[6](43,28) = 25.0/4096.0; - prolongation[6](43,29) = -75.0/4096.0; - prolongation[6](43,30) = 5.0/4096.0; - prolongation[6](43,31) = -15.0/4096.0; - prolongation[6](43,32) = -45.0/4096.0; - prolongation[6](43,33) = 135.0/4096.0; - prolongation[6](43,34) = -45.0/4096.0; - prolongation[6](43,35) = 135.0/4096.0; - prolongation[6](43,36) = -225.0/4096.0; - prolongation[6](43,37) = 675.0/4096.0; - prolongation[6](43,38) = -225.0/4096.0; - prolongation[6](43,39) = 675.0/4096.0; - prolongation[6](43,40) = -25.0/4096.0; - prolongation[6](43,41) = 75.0/4096.0; - prolongation[6](43,42) = 75.0/4096.0; - prolongation[6](43,43) = -225.0/4096.0; - prolongation[6](43,44) = -225.0/4096.0; - prolongation[6](43,45) = 675.0/4096.0; - prolongation[6](43,46) = -225.0/4096.0; - prolongation[6](43,47) = 675.0/4096.0; - prolongation[6](43,48) = -25.0/4096.0; - prolongation[6](43,49) = 75.0/4096.0; - prolongation[6](43,50) = 75.0/4096.0; - prolongation[6](43,51) = -225.0/4096.0; - prolongation[6](43,52) = -45.0/4096.0; - prolongation[6](43,53) = 135.0/4096.0; - prolongation[6](43,54) = -45.0/4096.0; - prolongation[6](43,55) = 135.0/4096.0; - prolongation[6](43,56) = 225.0/4096.0; - prolongation[6](43,57) = -675.0/4096.0; - prolongation[6](43,58) = -675.0/4096.0; - prolongation[6](43,59) = 2025.0/4096.0; - prolongation[6](43,60) = 225.0/4096.0; - prolongation[6](43,61) = -675.0/4096.0; - prolongation[6](43,62) = -675.0/4096.0; - prolongation[6](43,63) = 2025.0/4096.0; - prolongation[6](44,47) = 1.0; - prolongation[6](45,11) = 1.0/16.0; - prolongation[6](45,19) = 5.0/16.0; - prolongation[6](45,46) = -5.0/16.0; - prolongation[6](45,47) = 15.0/16.0; - prolongation[6](46,27) = 1.0/16.0; - prolongation[6](46,29) = 5.0/16.0; - prolongation[6](46,45) = -5.0/16.0; - prolongation[6](46,47) = 15.0/16.0; - prolongation[6](47,1) = 1.0/256.0; - prolongation[6](47,2) = 5.0/256.0; - prolongation[6](47,5) = 5.0/256.0; - prolongation[6](47,6) = 25.0/256.0; - prolongation[6](47,10) = -5.0/256.0; - prolongation[6](47,11) = 15.0/256.0; - prolongation[6](47,18) = -25.0/256.0; - prolongation[6](47,19) = 75.0/256.0; - prolongation[6](47,26) = -5.0/256.0; - prolongation[6](47,27) = 15.0/256.0; - prolongation[6](47,28) = -25.0/256.0; - prolongation[6](47,29) = 75.0/256.0; - prolongation[6](47,44) = 25.0/256.0; - prolongation[6](47,45) = -75.0/256.0; - prolongation[6](47,46) = -75.0/256.0; - prolongation[6](47,47) = 225.0/256.0; - prolongation[6](48,51) = 1.0; - prolongation[6](49,29) = 5.0/16.0; - prolongation[6](49,31) = 1.0/16.0; - prolongation[6](49,50) = -5.0/16.0; - prolongation[6](49,51) = 15.0/16.0; - prolongation[6](50,13) = 1.0/16.0; - prolongation[6](50,21) = 5.0/16.0; - prolongation[6](50,49) = -5.0/16.0; - prolongation[6](50,51) = 15.0/16.0; - prolongation[6](51,2) = 5.0/256.0; - prolongation[6](51,3) = 1.0/256.0; - prolongation[6](51,6) = 25.0/256.0; - prolongation[6](51,7) = 5.0/256.0; - prolongation[6](51,12) = -5.0/256.0; - prolongation[6](51,13) = 15.0/256.0; - prolongation[6](51,20) = -25.0/256.0; - prolongation[6](51,21) = 75.0/256.0; - prolongation[6](51,28) = -25.0/256.0; - prolongation[6](51,29) = 75.0/256.0; - prolongation[6](51,30) = -5.0/256.0; - prolongation[6](51,31) = 15.0/256.0; - prolongation[6](51,48) = 25.0/256.0; - prolongation[6](51,49) = -75.0/256.0; - prolongation[6](51,50) = -75.0/256.0; - prolongation[6](51,51) = 225.0/256.0; - prolongation[6](52,47) = -1.0/16.0; - prolongation[6](52,55) = -1.0/16.0; - prolongation[6](52,62) = 9.0/16.0; - prolongation[6](52,63) = 9.0/16.0; - prolongation[6](53,11) = -1.0/256.0; - prolongation[6](53,15) = -1.0/256.0; - prolongation[6](53,19) = -5.0/256.0; - prolongation[6](53,23) = -5.0/256.0; - prolongation[6](53,34) = 9.0/256.0; - prolongation[6](53,35) = 9.0/256.0; - prolongation[6](53,38) = 45.0/256.0; - prolongation[6](53,39) = 45.0/256.0; - prolongation[6](53,46) = 5.0/256.0; - prolongation[6](53,47) = -15.0/256.0; - prolongation[6](53,54) = 5.0/256.0; - prolongation[6](53,55) = -15.0/256.0; - prolongation[6](53,60) = -45.0/256.0; - prolongation[6](53,61) = -45.0/256.0; - prolongation[6](53,62) = 135.0/256.0; - prolongation[6](53,63) = 135.0/256.0; - prolongation[6](54,25) = -1.0/256.0; - prolongation[6](54,27) = -1.0/256.0; - prolongation[6](54,29) = -5.0/256.0; - prolongation[6](54,31) = -5.0/256.0; - prolongation[6](54,42) = 9.0/256.0; - prolongation[6](54,43) = 9.0/256.0; - prolongation[6](54,45) = 5.0/256.0; - prolongation[6](54,47) = -15.0/256.0; - prolongation[6](54,50) = 45.0/256.0; - prolongation[6](54,51) = 45.0/256.0; - prolongation[6](54,53) = 5.0/256.0; - prolongation[6](54,55) = -15.0/256.0; - prolongation[6](54,58) = -45.0/256.0; - prolongation[6](54,59) = -45.0/256.0; - prolongation[6](54,62) = 135.0/256.0; - prolongation[6](54,63) = 135.0/256.0; - prolongation[6](55,0) = -1.0/4096.0; - prolongation[6](55,1) = -1.0/4096.0; - prolongation[6](55,2) = -5.0/4096.0; - prolongation[6](55,3) = -5.0/4096.0; - prolongation[6](55,4) = -5.0/4096.0; - prolongation[6](55,5) = -5.0/4096.0; - prolongation[6](55,6) = -25.0/4096.0; - prolongation[6](55,7) = -25.0/4096.0; - prolongation[6](55,8) = 9.0/4096.0; - prolongation[6](55,9) = 9.0/4096.0; - prolongation[6](55,10) = 5.0/4096.0; - prolongation[6](55,11) = -15.0/4096.0; - prolongation[6](55,12) = 45.0/4096.0; - prolongation[6](55,13) = 45.0/4096.0; - prolongation[6](55,14) = 5.0/4096.0; - prolongation[6](55,15) = -15.0/4096.0; - prolongation[6](55,16) = 45.0/4096.0; - prolongation[6](55,17) = 45.0/4096.0; - prolongation[6](55,18) = 25.0/4096.0; - prolongation[6](55,19) = -75.0/4096.0; - prolongation[6](55,20) = 225.0/4096.0; - prolongation[6](55,21) = 225.0/4096.0; - prolongation[6](55,22) = 25.0/4096.0; - prolongation[6](55,23) = -75.0/4096.0; - prolongation[6](55,24) = 5.0/4096.0; - prolongation[6](55,25) = -15.0/4096.0; - prolongation[6](55,26) = 5.0/4096.0; - prolongation[6](55,27) = -15.0/4096.0; - prolongation[6](55,28) = 25.0/4096.0; - prolongation[6](55,29) = -75.0/4096.0; - prolongation[6](55,30) = 25.0/4096.0; - prolongation[6](55,31) = -75.0/4096.0; - prolongation[6](55,32) = -45.0/4096.0; - prolongation[6](55,33) = -45.0/4096.0; - prolongation[6](55,34) = 135.0/4096.0; - prolongation[6](55,35) = 135.0/4096.0; - prolongation[6](55,36) = -225.0/4096.0; - prolongation[6](55,37) = -225.0/4096.0; - prolongation[6](55,38) = 675.0/4096.0; - prolongation[6](55,39) = 675.0/4096.0; - prolongation[6](55,40) = -45.0/4096.0; - prolongation[6](55,41) = -45.0/4096.0; - prolongation[6](55,42) = 135.0/4096.0; - prolongation[6](55,43) = 135.0/4096.0; - prolongation[6](55,44) = -25.0/4096.0; - prolongation[6](55,45) = 75.0/4096.0; - prolongation[6](55,46) = 75.0/4096.0; - prolongation[6](55,47) = -225.0/4096.0; - prolongation[6](55,48) = -225.0/4096.0; - prolongation[6](55,49) = -225.0/4096.0; - prolongation[6](55,50) = 675.0/4096.0; - prolongation[6](55,51) = 675.0/4096.0; - prolongation[6](55,52) = -25.0/4096.0; - prolongation[6](55,53) = 75.0/4096.0; - prolongation[6](55,54) = 75.0/4096.0; - prolongation[6](55,55) = -225.0/4096.0; - prolongation[6](55,56) = 225.0/4096.0; - prolongation[6](55,57) = 225.0/4096.0; - prolongation[6](55,58) = -675.0/4096.0; - prolongation[6](55,59) = -675.0/4096.0; - prolongation[6](55,60) = -675.0/4096.0; - prolongation[6](55,61) = -675.0/4096.0; - prolongation[6](55,62) = 2025.0/4096.0; - prolongation[6](55,63) = 2025.0/4096.0; - prolongation[6](56,63) = 1.0; - prolongation[6](57,47) = 5.0/16.0; - prolongation[6](57,55) = 1.0/16.0; - prolongation[6](57,62) = -5.0/16.0; - prolongation[6](57,63) = 15.0/16.0; - prolongation[6](58,35) = 1.0/16.0; - prolongation[6](58,39) = 5.0/16.0; - prolongation[6](58,61) = -5.0/16.0; - prolongation[6](58,63) = 15.0/16.0; - prolongation[6](59,11) = 5.0/256.0; - prolongation[6](59,15) = 1.0/256.0; - prolongation[6](59,19) = 25.0/256.0; - prolongation[6](59,23) = 5.0/256.0; - prolongation[6](59,34) = -5.0/256.0; - prolongation[6](59,35) = 15.0/256.0; - prolongation[6](59,38) = -25.0/256.0; - prolongation[6](59,39) = 75.0/256.0; - prolongation[6](59,46) = -25.0/256.0; - prolongation[6](59,47) = 75.0/256.0; - prolongation[6](59,54) = -5.0/256.0; - prolongation[6](59,55) = 15.0/256.0; - prolongation[6](59,60) = 25.0/256.0; - prolongation[6](59,61) = -75.0/256.0; - prolongation[6](59,62) = -75.0/256.0; - prolongation[6](59,63) = 225.0/256.0; - prolongation[6](60,43) = 1.0/16.0; - prolongation[6](60,51) = 5.0/16.0; - prolongation[6](60,59) = -5.0/16.0; - prolongation[6](60,63) = 15.0/16.0; - prolongation[6](61,25) = 1.0/256.0; - prolongation[6](61,27) = 5.0/256.0; - prolongation[6](61,29) = 25.0/256.0; - prolongation[6](61,31) = 5.0/256.0; - prolongation[6](61,42) = -5.0/256.0; - prolongation[6](61,43) = 15.0/256.0; - prolongation[6](61,45) = -25.0/256.0; - prolongation[6](61,47) = 75.0/256.0; - prolongation[6](61,50) = -25.0/256.0; - prolongation[6](61,51) = 75.0/256.0; - prolongation[6](61,53) = -5.0/256.0; - prolongation[6](61,55) = 15.0/256.0; - prolongation[6](61,58) = 25.0/256.0; - prolongation[6](61,59) = -75.0/256.0; - prolongation[6](61,62) = -75.0/256.0; - prolongation[6](61,63) = 225.0/256.0; - prolongation[6](62,9) = 1.0/256.0; - prolongation[6](62,13) = 5.0/256.0; - prolongation[6](62,17) = 5.0/256.0; - prolongation[6](62,21) = 25.0/256.0; - prolongation[6](62,33) = -5.0/256.0; - prolongation[6](62,35) = 15.0/256.0; - prolongation[6](62,37) = -25.0/256.0; - prolongation[6](62,39) = 75.0/256.0; - prolongation[6](62,41) = -5.0/256.0; - prolongation[6](62,43) = 15.0/256.0; - prolongation[6](62,49) = -25.0/256.0; - prolongation[6](62,51) = 75.0/256.0; - prolongation[6](62,57) = 25.0/256.0; - prolongation[6](62,59) = -75.0/256.0; - prolongation[6](62,61) = -75.0/256.0; - prolongation[6](62,63) = 225.0/256.0; - prolongation[6](63,0) = 1.0/4096.0; - prolongation[6](63,1) = 5.0/4096.0; - prolongation[6](63,2) = 25.0/4096.0; - prolongation[6](63,3) = 5.0/4096.0; - prolongation[6](63,4) = 5.0/4096.0; - prolongation[6](63,5) = 25.0/4096.0; - prolongation[6](63,6) = 125.0/4096.0; - prolongation[6](63,7) = 25.0/4096.0; - prolongation[6](63,8) = -5.0/4096.0; - prolongation[6](63,9) = 15.0/4096.0; - prolongation[6](63,10) = -25.0/4096.0; - prolongation[6](63,11) = 75.0/4096.0; - prolongation[6](63,12) = -25.0/4096.0; - prolongation[6](63,13) = 75.0/4096.0; - prolongation[6](63,14) = -5.0/4096.0; - prolongation[6](63,15) = 15.0/4096.0; - prolongation[6](63,16) = -25.0/4096.0; - prolongation[6](63,17) = 75.0/4096.0; - prolongation[6](63,18) = -125.0/4096.0; - prolongation[6](63,19) = 375.0/4096.0; - prolongation[6](63,20) = -125.0/4096.0; - prolongation[6](63,21) = 375.0/4096.0; - prolongation[6](63,22) = -25.0/4096.0; - prolongation[6](63,23) = 75.0/4096.0; - prolongation[6](63,24) = -5.0/4096.0; - prolongation[6](63,25) = 15.0/4096.0; - prolongation[6](63,26) = -25.0/4096.0; - prolongation[6](63,27) = 75.0/4096.0; - prolongation[6](63,28) = -125.0/4096.0; - prolongation[6](63,29) = 375.0/4096.0; - prolongation[6](63,30) = -25.0/4096.0; - prolongation[6](63,31) = 75.0/4096.0; - prolongation[6](63,32) = 25.0/4096.0; - prolongation[6](63,33) = -75.0/4096.0; - prolongation[6](63,34) = -75.0/4096.0; - prolongation[6](63,35) = 225.0/4096.0; - prolongation[6](63,36) = 125.0/4096.0; - prolongation[6](63,37) = -375.0/4096.0; - prolongation[6](63,38) = -375.0/4096.0; - prolongation[6](63,39) = 1125.0/4096.0; - prolongation[6](63,40) = 25.0/4096.0; - prolongation[6](63,41) = -75.0/4096.0; - prolongation[6](63,42) = -75.0/4096.0; - prolongation[6](63,43) = 225.0/4096.0; - prolongation[6](63,44) = 125.0/4096.0; - prolongation[6](63,45) = -375.0/4096.0; - prolongation[6](63,46) = -375.0/4096.0; - prolongation[6](63,47) = 1125.0/4096.0; - prolongation[6](63,48) = 125.0/4096.0; - prolongation[6](63,49) = -375.0/4096.0; - prolongation[6](63,50) = -375.0/4096.0; - prolongation[6](63,51) = 1125.0/4096.0; - prolongation[6](63,52) = 25.0/4096.0; - prolongation[6](63,53) = -75.0/4096.0; - prolongation[6](63,54) = -75.0/4096.0; - prolongation[6](63,55) = 225.0/4096.0; - prolongation[6](63,56) = -125.0/4096.0; - prolongation[6](63,57) = 375.0/4096.0; - prolongation[6](63,58) = 375.0/4096.0; - prolongation[6](63,59) = -1125.0/4096.0; - prolongation[6](63,60) = 375.0/4096.0; - prolongation[6](63,61) = -1125.0/4096.0; - prolongation[6](63,62) = -1125.0/4096.0; - prolongation[6](63,63) = 3375.0/4096.0; - prolongation[7](0,0) = 1.0/256.0; - prolongation[7](0,3) = 1.0/256.0; - prolongation[7](0,4) = 1.0/256.0; - prolongation[7](0,7) = 1.0/256.0; - prolongation[7](0,14) = -9.0/256.0; - prolongation[7](0,15) = -9.0/256.0; - prolongation[7](0,22) = -9.0/256.0; - prolongation[7](0,23) = -9.0/256.0; - prolongation[7](0,24) = -9.0/256.0; - prolongation[7](0,25) = -9.0/256.0; - prolongation[7](0,30) = -9.0/256.0; - prolongation[7](0,31) = -9.0/256.0; - prolongation[7](0,52) = 81.0/256.0; - prolongation[7](0,53) = 81.0/256.0; - prolongation[7](0,54) = 81.0/256.0; - prolongation[7](0,55) = 81.0/256.0; - prolongation[7](1,0) = -1.0/4096.0; - prolongation[7](1,1) = -1.0/4096.0; - prolongation[7](1,2) = -1.0/4096.0; - prolongation[7](1,3) = -1.0/4096.0; - prolongation[7](1,4) = -1.0/4096.0; - prolongation[7](1,5) = -1.0/4096.0; - prolongation[7](1,6) = -1.0/4096.0; - prolongation[7](1,7) = -1.0/4096.0; - prolongation[7](1,8) = 9.0/4096.0; - prolongation[7](1,9) = 9.0/4096.0; - prolongation[7](1,10) = 9.0/4096.0; - prolongation[7](1,11) = 9.0/4096.0; - prolongation[7](1,12) = 9.0/4096.0; - prolongation[7](1,13) = 9.0/4096.0; - prolongation[7](1,14) = 9.0/4096.0; - prolongation[7](1,15) = 9.0/4096.0; - prolongation[7](1,16) = 9.0/4096.0; - prolongation[7](1,17) = 9.0/4096.0; - prolongation[7](1,18) = 9.0/4096.0; - prolongation[7](1,19) = 9.0/4096.0; - prolongation[7](1,20) = 9.0/4096.0; - prolongation[7](1,21) = 9.0/4096.0; - prolongation[7](1,22) = 9.0/4096.0; - prolongation[7](1,23) = 9.0/4096.0; - prolongation[7](1,24) = 9.0/4096.0; - prolongation[7](1,25) = 9.0/4096.0; - prolongation[7](1,26) = 9.0/4096.0; - prolongation[7](1,27) = 9.0/4096.0; - prolongation[7](1,28) = 9.0/4096.0; - prolongation[7](1,29) = 9.0/4096.0; - prolongation[7](1,30) = 9.0/4096.0; - prolongation[7](1,31) = 9.0/4096.0; - prolongation[7](1,32) = -81.0/4096.0; - prolongation[7](1,33) = -81.0/4096.0; - prolongation[7](1,34) = -81.0/4096.0; - prolongation[7](1,35) = -81.0/4096.0; - prolongation[7](1,36) = -81.0/4096.0; - prolongation[7](1,37) = -81.0/4096.0; - prolongation[7](1,38) = -81.0/4096.0; - prolongation[7](1,39) = -81.0/4096.0; - prolongation[7](1,40) = -81.0/4096.0; - prolongation[7](1,41) = -81.0/4096.0; - prolongation[7](1,42) = -81.0/4096.0; - prolongation[7](1,43) = -81.0/4096.0; - prolongation[7](1,44) = -81.0/4096.0; - prolongation[7](1,45) = -81.0/4096.0; - prolongation[7](1,46) = -81.0/4096.0; - prolongation[7](1,47) = -81.0/4096.0; - prolongation[7](1,48) = -81.0/4096.0; - prolongation[7](1,49) = -81.0/4096.0; - prolongation[7](1,50) = -81.0/4096.0; - prolongation[7](1,51) = -81.0/4096.0; - prolongation[7](1,52) = -81.0/4096.0; - prolongation[7](1,53) = -81.0/4096.0; - prolongation[7](1,54) = -81.0/4096.0; - prolongation[7](1,55) = -81.0/4096.0; - prolongation[7](1,56) = 729.0/4096.0; - prolongation[7](1,57) = 729.0/4096.0; - prolongation[7](1,58) = 729.0/4096.0; - prolongation[7](1,59) = 729.0/4096.0; - prolongation[7](1,60) = 729.0/4096.0; - prolongation[7](1,61) = 729.0/4096.0; - prolongation[7](1,62) = 729.0/4096.0; - prolongation[7](1,63) = 729.0/4096.0; - prolongation[7](2,2) = 1.0/256.0; - prolongation[7](2,3) = 1.0/256.0; - prolongation[7](2,6) = 1.0/256.0; - prolongation[7](2,7) = 1.0/256.0; - prolongation[7](2,12) = -9.0/256.0; - prolongation[7](2,13) = -9.0/256.0; - prolongation[7](2,20) = -9.0/256.0; - prolongation[7](2,21) = -9.0/256.0; - prolongation[7](2,28) = -9.0/256.0; - prolongation[7](2,29) = -9.0/256.0; - prolongation[7](2,30) = -9.0/256.0; - prolongation[7](2,31) = -9.0/256.0; - prolongation[7](2,48) = 81.0/256.0; - prolongation[7](2,49) = 81.0/256.0; - prolongation[7](2,50) = 81.0/256.0; - prolongation[7](2,51) = 81.0/256.0; - prolongation[7](3,3) = -1.0/16.0; - prolongation[7](3,7) = -1.0/16.0; - prolongation[7](3,30) = 9.0/16.0; - prolongation[7](3,31) = 9.0/16.0; - prolongation[7](4,4) = -1.0/16.0; - prolongation[7](4,7) = -1.0/16.0; - prolongation[7](4,22) = 9.0/16.0; - prolongation[7](4,23) = 9.0/16.0; - prolongation[7](5,4) = 1.0/256.0; - prolongation[7](5,5) = 1.0/256.0; - prolongation[7](5,6) = 1.0/256.0; - prolongation[7](5,7) = 1.0/256.0; - prolongation[7](5,16) = -9.0/256.0; - prolongation[7](5,17) = -9.0/256.0; - prolongation[7](5,18) = -9.0/256.0; - prolongation[7](5,19) = -9.0/256.0; - prolongation[7](5,20) = -9.0/256.0; - prolongation[7](5,21) = -9.0/256.0; - prolongation[7](5,22) = -9.0/256.0; - prolongation[7](5,23) = -9.0/256.0; - prolongation[7](5,36) = 81.0/256.0; - prolongation[7](5,37) = 81.0/256.0; - prolongation[7](5,38) = 81.0/256.0; - prolongation[7](5,39) = 81.0/256.0; - prolongation[7](6,6) = -1.0/16.0; - prolongation[7](6,7) = -1.0/16.0; - prolongation[7](6,20) = 9.0/16.0; - prolongation[7](6,21) = 9.0/16.0; - prolongation[7](7,7) = 1.0; - prolongation[7](8,0) = 5.0/4096.0; - prolongation[7](8,1) = 1.0/4096.0; - prolongation[7](8,2) = 1.0/4096.0; - prolongation[7](8,3) = 5.0/4096.0; - prolongation[7](8,4) = 5.0/4096.0; - prolongation[7](8,5) = 1.0/4096.0; - prolongation[7](8,6) = 1.0/4096.0; - prolongation[7](8,7) = 5.0/4096.0; - prolongation[7](8,8) = 15.0/4096.0; - prolongation[7](8,9) = -5.0/4096.0; - prolongation[7](8,10) = -9.0/4096.0; - prolongation[7](8,11) = -9.0/4096.0; - prolongation[7](8,12) = 15.0/4096.0; - prolongation[7](8,13) = -5.0/4096.0; - prolongation[7](8,14) = -45.0/4096.0; - prolongation[7](8,15) = -45.0/4096.0; - prolongation[7](8,16) = 15.0/4096.0; - prolongation[7](8,17) = -5.0/4096.0; - prolongation[7](8,18) = -9.0/4096.0; - prolongation[7](8,19) = -9.0/4096.0; - prolongation[7](8,20) = 15.0/4096.0; - prolongation[7](8,21) = -5.0/4096.0; - prolongation[7](8,22) = -45.0/4096.0; - prolongation[7](8,23) = -45.0/4096.0; - prolongation[7](8,24) = -45.0/4096.0; - prolongation[7](8,25) = -45.0/4096.0; - prolongation[7](8,26) = -9.0/4096.0; - prolongation[7](8,27) = -9.0/4096.0; - prolongation[7](8,28) = -9.0/4096.0; - prolongation[7](8,29) = -9.0/4096.0; - prolongation[7](8,30) = -45.0/4096.0; - prolongation[7](8,31) = -45.0/4096.0; - prolongation[7](8,32) = -135.0/4096.0; - prolongation[7](8,33) = 45.0/4096.0; - prolongation[7](8,34) = -135.0/4096.0; - prolongation[7](8,35) = 45.0/4096.0; - prolongation[7](8,36) = -135.0/4096.0; - prolongation[7](8,37) = 45.0/4096.0; - prolongation[7](8,38) = -135.0/4096.0; - prolongation[7](8,39) = 45.0/4096.0; - prolongation[7](8,40) = -135.0/4096.0; - prolongation[7](8,41) = 45.0/4096.0; - prolongation[7](8,42) = -135.0/4096.0; - prolongation[7](8,43) = 45.0/4096.0; - prolongation[7](8,44) = 81.0/4096.0; - prolongation[7](8,45) = 81.0/4096.0; - prolongation[7](8,46) = 81.0/4096.0; - prolongation[7](8,47) = 81.0/4096.0; - prolongation[7](8,48) = -135.0/4096.0; - prolongation[7](8,49) = 45.0/4096.0; - prolongation[7](8,50) = -135.0/4096.0; - prolongation[7](8,51) = 45.0/4096.0; - prolongation[7](8,52) = 405.0/4096.0; - prolongation[7](8,53) = 405.0/4096.0; - prolongation[7](8,54) = 405.0/4096.0; - prolongation[7](8,55) = 405.0/4096.0; - prolongation[7](8,56) = 1215.0/4096.0; - prolongation[7](8,57) = -405.0/4096.0; - prolongation[7](8,58) = 1215.0/4096.0; - prolongation[7](8,59) = -405.0/4096.0; - prolongation[7](8,60) = 1215.0/4096.0; - prolongation[7](8,61) = -405.0/4096.0; - prolongation[7](8,62) = 1215.0/4096.0; - prolongation[7](8,63) = -405.0/4096.0; - prolongation[7](9,8) = 1.0/256.0; - prolongation[7](9,12) = 1.0/256.0; - prolongation[7](9,16) = 1.0/256.0; - prolongation[7](9,20) = 1.0/256.0; - prolongation[7](9,32) = -9.0/256.0; - prolongation[7](9,34) = -9.0/256.0; - prolongation[7](9,36) = -9.0/256.0; - prolongation[7](9,38) = -9.0/256.0; - prolongation[7](9,40) = -9.0/256.0; - prolongation[7](9,42) = -9.0/256.0; - prolongation[7](9,48) = -9.0/256.0; - prolongation[7](9,50) = -9.0/256.0; - prolongation[7](9,56) = 81.0/256.0; - prolongation[7](9,58) = 81.0/256.0; - prolongation[7](9,60) = 81.0/256.0; - prolongation[7](9,62) = 81.0/256.0; - prolongation[7](10,11) = 1.0/256.0; - prolongation[7](10,15) = 1.0/256.0; - prolongation[7](10,19) = 1.0/256.0; - prolongation[7](10,23) = 1.0/256.0; - prolongation[7](10,34) = -9.0/256.0; - prolongation[7](10,35) = -9.0/256.0; - prolongation[7](10,38) = -9.0/256.0; - prolongation[7](10,39) = -9.0/256.0; - prolongation[7](10,46) = -9.0/256.0; - prolongation[7](10,47) = -9.0/256.0; - prolongation[7](10,54) = -9.0/256.0; - prolongation[7](10,55) = -9.0/256.0; - prolongation[7](10,60) = 81.0/256.0; - prolongation[7](10,61) = 81.0/256.0; - prolongation[7](10,62) = 81.0/256.0; - prolongation[7](10,63) = 81.0/256.0; - prolongation[7](11,0) = 1.0/4096.0; - prolongation[7](11,1) = 1.0/4096.0; - prolongation[7](11,2) = 5.0/4096.0; - prolongation[7](11,3) = 5.0/4096.0; - prolongation[7](11,4) = 1.0/4096.0; - prolongation[7](11,5) = 1.0/4096.0; - prolongation[7](11,6) = 5.0/4096.0; - prolongation[7](11,7) = 5.0/4096.0; - prolongation[7](11,8) = -9.0/4096.0; - prolongation[7](11,9) = -9.0/4096.0; - prolongation[7](11,10) = -5.0/4096.0; - prolongation[7](11,11) = 15.0/4096.0; - prolongation[7](11,12) = -45.0/4096.0; - prolongation[7](11,13) = -45.0/4096.0; - prolongation[7](11,14) = -5.0/4096.0; - prolongation[7](11,15) = 15.0/4096.0; - prolongation[7](11,16) = -9.0/4096.0; - prolongation[7](11,17) = -9.0/4096.0; - prolongation[7](11,18) = -5.0/4096.0; - prolongation[7](11,19) = 15.0/4096.0; - prolongation[7](11,20) = -45.0/4096.0; - prolongation[7](11,21) = -45.0/4096.0; - prolongation[7](11,22) = -5.0/4096.0; - prolongation[7](11,23) = 15.0/4096.0; - prolongation[7](11,24) = -9.0/4096.0; - prolongation[7](11,25) = -9.0/4096.0; - prolongation[7](11,26) = -9.0/4096.0; - prolongation[7](11,27) = -9.0/4096.0; - prolongation[7](11,28) = -45.0/4096.0; - prolongation[7](11,29) = -45.0/4096.0; - prolongation[7](11,30) = -45.0/4096.0; - prolongation[7](11,31) = -45.0/4096.0; - prolongation[7](11,32) = 45.0/4096.0; - prolongation[7](11,33) = 45.0/4096.0; - prolongation[7](11,34) = -135.0/4096.0; - prolongation[7](11,35) = -135.0/4096.0; - prolongation[7](11,36) = 45.0/4096.0; - prolongation[7](11,37) = 45.0/4096.0; - prolongation[7](11,38) = -135.0/4096.0; - prolongation[7](11,39) = -135.0/4096.0; - prolongation[7](11,40) = 81.0/4096.0; - prolongation[7](11,41) = 81.0/4096.0; - prolongation[7](11,42) = 81.0/4096.0; - prolongation[7](11,43) = 81.0/4096.0; - prolongation[7](11,44) = 45.0/4096.0; - prolongation[7](11,45) = 45.0/4096.0; - prolongation[7](11,46) = -135.0/4096.0; - prolongation[7](11,47) = -135.0/4096.0; - prolongation[7](11,48) = 405.0/4096.0; - prolongation[7](11,49) = 405.0/4096.0; - prolongation[7](11,50) = 405.0/4096.0; - prolongation[7](11,51) = 405.0/4096.0; - prolongation[7](11,52) = 45.0/4096.0; - prolongation[7](11,53) = 45.0/4096.0; - prolongation[7](11,54) = -135.0/4096.0; - prolongation[7](11,55) = -135.0/4096.0; - prolongation[7](11,56) = -405.0/4096.0; - prolongation[7](11,57) = -405.0/4096.0; - prolongation[7](11,58) = -405.0/4096.0; - prolongation[7](11,59) = -405.0/4096.0; - prolongation[7](11,60) = 1215.0/4096.0; - prolongation[7](11,61) = 1215.0/4096.0; - prolongation[7](11,62) = 1215.0/4096.0; - prolongation[7](11,63) = 1215.0/4096.0; - prolongation[7](12,2) = -1.0/256.0; - prolongation[7](12,3) = -5.0/256.0; - prolongation[7](12,6) = -1.0/256.0; - prolongation[7](12,7) = -5.0/256.0; - prolongation[7](12,12) = -15.0/256.0; - prolongation[7](12,13) = 5.0/256.0; - prolongation[7](12,20) = -15.0/256.0; - prolongation[7](12,21) = 5.0/256.0; - prolongation[7](12,28) = 9.0/256.0; - prolongation[7](12,29) = 9.0/256.0; - prolongation[7](12,30) = 45.0/256.0; - prolongation[7](12,31) = 45.0/256.0; - prolongation[7](12,48) = 135.0/256.0; - prolongation[7](12,49) = -45.0/256.0; - prolongation[7](12,50) = 135.0/256.0; - prolongation[7](12,51) = -45.0/256.0; - prolongation[7](13,12) = -1.0/16.0; - prolongation[7](13,20) = -1.0/16.0; - prolongation[7](13,48) = 9.0/16.0; - prolongation[7](13,50) = 9.0/16.0; - prolongation[7](14,15) = -1.0/16.0; - prolongation[7](14,23) = -1.0/16.0; - prolongation[7](14,54) = 9.0/16.0; - prolongation[7](14,55) = 9.0/16.0; - prolongation[7](15,0) = -1.0/256.0; - prolongation[7](15,3) = -5.0/256.0; - prolongation[7](15,4) = -1.0/256.0; - prolongation[7](15,7) = -5.0/256.0; - prolongation[7](15,14) = 5.0/256.0; - prolongation[7](15,15) = -15.0/256.0; - prolongation[7](15,22) = 5.0/256.0; - prolongation[7](15,23) = -15.0/256.0; - prolongation[7](15,24) = 9.0/256.0; - prolongation[7](15,25) = 9.0/256.0; - prolongation[7](15,30) = 45.0/256.0; - prolongation[7](15,31) = 45.0/256.0; - prolongation[7](15,52) = -45.0/256.0; - prolongation[7](15,53) = -45.0/256.0; - prolongation[7](15,54) = 135.0/256.0; - prolongation[7](15,55) = 135.0/256.0; - prolongation[7](16,4) = -5.0/256.0; - prolongation[7](16,5) = -1.0/256.0; - prolongation[7](16,6) = -1.0/256.0; - prolongation[7](16,7) = -5.0/256.0; - prolongation[7](16,16) = -15.0/256.0; - prolongation[7](16,17) = 5.0/256.0; - prolongation[7](16,18) = 9.0/256.0; - prolongation[7](16,19) = 9.0/256.0; - prolongation[7](16,20) = -15.0/256.0; - prolongation[7](16,21) = 5.0/256.0; - prolongation[7](16,22) = 45.0/256.0; - prolongation[7](16,23) = 45.0/256.0; - prolongation[7](16,36) = 135.0/256.0; - prolongation[7](16,37) = -45.0/256.0; - prolongation[7](16,38) = 135.0/256.0; - prolongation[7](16,39) = -45.0/256.0; - prolongation[7](17,16) = -1.0/16.0; - prolongation[7](17,20) = -1.0/16.0; - prolongation[7](17,36) = 9.0/16.0; - prolongation[7](17,38) = 9.0/16.0; - prolongation[7](18,19) = -1.0/16.0; - prolongation[7](18,23) = -1.0/16.0; - prolongation[7](18,38) = 9.0/16.0; - prolongation[7](18,39) = 9.0/16.0; - prolongation[7](19,4) = -1.0/256.0; - prolongation[7](19,5) = -1.0/256.0; - prolongation[7](19,6) = -5.0/256.0; - prolongation[7](19,7) = -5.0/256.0; - prolongation[7](19,16) = 9.0/256.0; - prolongation[7](19,17) = 9.0/256.0; - prolongation[7](19,18) = 5.0/256.0; - prolongation[7](19,19) = -15.0/256.0; - prolongation[7](19,20) = 45.0/256.0; - prolongation[7](19,21) = 45.0/256.0; - prolongation[7](19,22) = 5.0/256.0; - prolongation[7](19,23) = -15.0/256.0; - prolongation[7](19,36) = -45.0/256.0; - prolongation[7](19,37) = -45.0/256.0; - prolongation[7](19,38) = 135.0/256.0; - prolongation[7](19,39) = 135.0/256.0; - prolongation[7](20,6) = 1.0/16.0; - prolongation[7](20,7) = 5.0/16.0; - prolongation[7](20,20) = 15.0/16.0; - prolongation[7](20,21) = -5.0/16.0; - prolongation[7](21,20) = 1.0; - prolongation[7](22,23) = 1.0; - prolongation[7](23,4) = 1.0/16.0; - prolongation[7](23,7) = 5.0/16.0; - prolongation[7](23,22) = -5.0/16.0; - prolongation[7](23,23) = 15.0/16.0; - prolongation[7](24,25) = -1.0/16.0; - prolongation[7](24,31) = -1.0/16.0; - prolongation[7](24,53) = 9.0/16.0; - prolongation[7](24,55) = 9.0/16.0; - prolongation[7](25,0) = -1.0/256.0; - prolongation[7](25,3) = -1.0/256.0; - prolongation[7](25,4) = -5.0/256.0; - prolongation[7](25,7) = -5.0/256.0; - prolongation[7](25,14) = 9.0/256.0; - prolongation[7](25,15) = 9.0/256.0; - prolongation[7](25,22) = 45.0/256.0; - prolongation[7](25,23) = 45.0/256.0; - prolongation[7](25,24) = 5.0/256.0; - prolongation[7](25,25) = -15.0/256.0; - prolongation[7](25,30) = 5.0/256.0; - prolongation[7](25,31) = -15.0/256.0; - prolongation[7](25,52) = -45.0/256.0; - prolongation[7](25,53) = 135.0/256.0; - prolongation[7](25,54) = -45.0/256.0; - prolongation[7](25,55) = 135.0/256.0; - prolongation[7](26,25) = 1.0/256.0; - prolongation[7](26,27) = 1.0/256.0; - prolongation[7](26,29) = 1.0/256.0; - prolongation[7](26,31) = 1.0/256.0; - prolongation[7](26,42) = -9.0/256.0; - prolongation[7](26,43) = -9.0/256.0; - prolongation[7](26,45) = -9.0/256.0; - prolongation[7](26,47) = -9.0/256.0; - prolongation[7](26,50) = -9.0/256.0; - prolongation[7](26,51) = -9.0/256.0; - prolongation[7](26,53) = -9.0/256.0; - prolongation[7](26,55) = -9.0/256.0; - prolongation[7](26,58) = 81.0/256.0; - prolongation[7](26,59) = 81.0/256.0; - prolongation[7](26,62) = 81.0/256.0; - prolongation[7](26,63) = 81.0/256.0; - prolongation[7](27,0) = 1.0/4096.0; - prolongation[7](27,1) = 1.0/4096.0; - prolongation[7](27,2) = 1.0/4096.0; - prolongation[7](27,3) = 1.0/4096.0; - prolongation[7](27,4) = 5.0/4096.0; - prolongation[7](27,5) = 5.0/4096.0; - prolongation[7](27,6) = 5.0/4096.0; - prolongation[7](27,7) = 5.0/4096.0; - prolongation[7](27,8) = -9.0/4096.0; - prolongation[7](27,9) = -9.0/4096.0; - prolongation[7](27,10) = -9.0/4096.0; - prolongation[7](27,11) = -9.0/4096.0; - prolongation[7](27,12) = -9.0/4096.0; - prolongation[7](27,13) = -9.0/4096.0; - prolongation[7](27,14) = -9.0/4096.0; - prolongation[7](27,15) = -9.0/4096.0; - prolongation[7](27,16) = -45.0/4096.0; - prolongation[7](27,17) = -45.0/4096.0; - prolongation[7](27,18) = -45.0/4096.0; - prolongation[7](27,19) = -45.0/4096.0; - prolongation[7](27,20) = -45.0/4096.0; - prolongation[7](27,21) = -45.0/4096.0; - prolongation[7](27,22) = -45.0/4096.0; - prolongation[7](27,23) = -45.0/4096.0; - prolongation[7](27,24) = -5.0/4096.0; - prolongation[7](27,25) = 15.0/4096.0; - prolongation[7](27,26) = -5.0/4096.0; - prolongation[7](27,27) = 15.0/4096.0; - prolongation[7](27,28) = -5.0/4096.0; - prolongation[7](27,29) = 15.0/4096.0; - prolongation[7](27,30) = -5.0/4096.0; - prolongation[7](27,31) = 15.0/4096.0; - prolongation[7](27,32) = 81.0/4096.0; - prolongation[7](27,33) = 81.0/4096.0; - prolongation[7](27,34) = 81.0/4096.0; - prolongation[7](27,35) = 81.0/4096.0; - prolongation[7](27,36) = 405.0/4096.0; - prolongation[7](27,37) = 405.0/4096.0; - prolongation[7](27,38) = 405.0/4096.0; - prolongation[7](27,39) = 405.0/4096.0; - prolongation[7](27,40) = 45.0/4096.0; - prolongation[7](27,41) = 45.0/4096.0; - prolongation[7](27,42) = -135.0/4096.0; - prolongation[7](27,43) = -135.0/4096.0; - prolongation[7](27,44) = 45.0/4096.0; - prolongation[7](27,45) = -135.0/4096.0; - prolongation[7](27,46) = 45.0/4096.0; - prolongation[7](27,47) = -135.0/4096.0; - prolongation[7](27,48) = 45.0/4096.0; - prolongation[7](27,49) = 45.0/4096.0; - prolongation[7](27,50) = -135.0/4096.0; - prolongation[7](27,51) = -135.0/4096.0; - prolongation[7](27,52) = 45.0/4096.0; - prolongation[7](27,53) = -135.0/4096.0; - prolongation[7](27,54) = 45.0/4096.0; - prolongation[7](27,55) = -135.0/4096.0; - prolongation[7](27,56) = -405.0/4096.0; - prolongation[7](27,57) = -405.0/4096.0; - prolongation[7](27,58) = 1215.0/4096.0; - prolongation[7](27,59) = 1215.0/4096.0; - prolongation[7](27,60) = -405.0/4096.0; - prolongation[7](27,61) = -405.0/4096.0; - prolongation[7](27,62) = 1215.0/4096.0; - prolongation[7](27,63) = 1215.0/4096.0; - prolongation[7](28,29) = -1.0/16.0; - prolongation[7](28,31) = -1.0/16.0; - prolongation[7](28,50) = 9.0/16.0; - prolongation[7](28,51) = 9.0/16.0; - prolongation[7](29,2) = -1.0/256.0; - prolongation[7](29,3) = -1.0/256.0; - prolongation[7](29,6) = -5.0/256.0; - prolongation[7](29,7) = -5.0/256.0; - prolongation[7](29,12) = 9.0/256.0; - prolongation[7](29,13) = 9.0/256.0; - prolongation[7](29,20) = 45.0/256.0; - prolongation[7](29,21) = 45.0/256.0; - prolongation[7](29,28) = 5.0/256.0; - prolongation[7](29,29) = -15.0/256.0; - prolongation[7](29,30) = 5.0/256.0; - prolongation[7](29,31) = -15.0/256.0; - prolongation[7](29,48) = -45.0/256.0; - prolongation[7](29,49) = -45.0/256.0; - prolongation[7](29,50) = 135.0/256.0; - prolongation[7](29,51) = 135.0/256.0; - prolongation[7](30,31) = 1.0; - prolongation[7](31,3) = 1.0/16.0; - prolongation[7](31,7) = 5.0/16.0; - prolongation[7](31,30) = -5.0/16.0; - prolongation[7](31,31) = 15.0/16.0; - prolongation[7](32,11) = -1.0/256.0; - prolongation[7](32,15) = -5.0/256.0; - prolongation[7](32,19) = -1.0/256.0; - prolongation[7](32,23) = -5.0/256.0; - prolongation[7](32,34) = -15.0/256.0; - prolongation[7](32,35) = 5.0/256.0; - prolongation[7](32,38) = -15.0/256.0; - prolongation[7](32,39) = 5.0/256.0; - prolongation[7](32,46) = 9.0/256.0; - prolongation[7](32,47) = 9.0/256.0; - prolongation[7](32,54) = 45.0/256.0; - prolongation[7](32,55) = 45.0/256.0; - prolongation[7](32,60) = 135.0/256.0; - prolongation[7](32,61) = -45.0/256.0; - prolongation[7](32,62) = 135.0/256.0; - prolongation[7](32,63) = -45.0/256.0; - prolongation[7](33,34) = -1.0/16.0; - prolongation[7](33,38) = -1.0/16.0; - prolongation[7](33,60) = 9.0/16.0; - prolongation[7](33,62) = 9.0/16.0; - prolongation[7](34,0) = -5.0/4096.0; - prolongation[7](34,1) = -1.0/4096.0; - prolongation[7](34,2) = -5.0/4096.0; - prolongation[7](34,3) = -25.0/4096.0; - prolongation[7](34,4) = -5.0/4096.0; - prolongation[7](34,5) = -1.0/4096.0; - prolongation[7](34,6) = -5.0/4096.0; - prolongation[7](34,7) = -25.0/4096.0; - prolongation[7](34,8) = -15.0/4096.0; - prolongation[7](34,9) = 5.0/4096.0; - prolongation[7](34,10) = 5.0/4096.0; - prolongation[7](34,11) = -15.0/4096.0; - prolongation[7](34,12) = -75.0/4096.0; - prolongation[7](34,13) = 25.0/4096.0; - prolongation[7](34,14) = 25.0/4096.0; - prolongation[7](34,15) = -75.0/4096.0; - prolongation[7](34,16) = -15.0/4096.0; - prolongation[7](34,17) = 5.0/4096.0; - prolongation[7](34,18) = 5.0/4096.0; - prolongation[7](34,19) = -15.0/4096.0; - prolongation[7](34,20) = -75.0/4096.0; - prolongation[7](34,21) = 25.0/4096.0; - prolongation[7](34,22) = 25.0/4096.0; - prolongation[7](34,23) = -75.0/4096.0; - prolongation[7](34,24) = 45.0/4096.0; - prolongation[7](34,25) = 45.0/4096.0; - prolongation[7](34,26) = 9.0/4096.0; - prolongation[7](34,27) = 9.0/4096.0; - prolongation[7](34,28) = 45.0/4096.0; - prolongation[7](34,29) = 45.0/4096.0; - prolongation[7](34,30) = 225.0/4096.0; - prolongation[7](34,31) = 225.0/4096.0; - prolongation[7](34,32) = 75.0/4096.0; - prolongation[7](34,33) = -25.0/4096.0; - prolongation[7](34,34) = -225.0/4096.0; - prolongation[7](34,35) = 75.0/4096.0; - prolongation[7](34,36) = 75.0/4096.0; - prolongation[7](34,37) = -25.0/4096.0; - prolongation[7](34,38) = -225.0/4096.0; - prolongation[7](34,39) = 75.0/4096.0; - prolongation[7](34,40) = 135.0/4096.0; - prolongation[7](34,41) = -45.0/4096.0; - prolongation[7](34,42) = 135.0/4096.0; - prolongation[7](34,43) = -45.0/4096.0; - prolongation[7](34,44) = -45.0/4096.0; - prolongation[7](34,45) = -45.0/4096.0; - prolongation[7](34,46) = 135.0/4096.0; - prolongation[7](34,47) = 135.0/4096.0; - prolongation[7](34,48) = 675.0/4096.0; - prolongation[7](34,49) = -225.0/4096.0; - prolongation[7](34,50) = 675.0/4096.0; - prolongation[7](34,51) = -225.0/4096.0; - prolongation[7](34,52) = -225.0/4096.0; - prolongation[7](34,53) = -225.0/4096.0; - prolongation[7](34,54) = 675.0/4096.0; - prolongation[7](34,55) = 675.0/4096.0; - prolongation[7](34,56) = -675.0/4096.0; - prolongation[7](34,57) = 225.0/4096.0; - prolongation[7](34,58) = -675.0/4096.0; - prolongation[7](34,59) = 225.0/4096.0; - prolongation[7](34,60) = 2025.0/4096.0; - prolongation[7](34,61) = -675.0/4096.0; - prolongation[7](34,62) = 2025.0/4096.0; - prolongation[7](34,63) = -675.0/4096.0; - prolongation[7](35,8) = -1.0/256.0; - prolongation[7](35,12) = -5.0/256.0; - prolongation[7](35,16) = -1.0/256.0; - prolongation[7](35,20) = -5.0/256.0; - prolongation[7](35,32) = 5.0/256.0; - prolongation[7](35,34) = -15.0/256.0; - prolongation[7](35,36) = 5.0/256.0; - prolongation[7](35,38) = -15.0/256.0; - prolongation[7](35,40) = 9.0/256.0; - prolongation[7](35,42) = 9.0/256.0; - prolongation[7](35,48) = 45.0/256.0; - prolongation[7](35,50) = 45.0/256.0; - prolongation[7](35,56) = -45.0/256.0; - prolongation[7](35,58) = -45.0/256.0; - prolongation[7](35,60) = 135.0/256.0; - prolongation[7](35,62) = 135.0/256.0; - prolongation[7](36,19) = 1.0/16.0; - prolongation[7](36,23) = 5.0/16.0; - prolongation[7](36,38) = 15.0/16.0; - prolongation[7](36,39) = -5.0/16.0; - prolongation[7](37,38) = 1.0; - prolongation[7](38,4) = 5.0/256.0; - prolongation[7](38,5) = 1.0/256.0; - prolongation[7](38,6) = 5.0/256.0; - prolongation[7](38,7) = 25.0/256.0; - prolongation[7](38,16) = 15.0/256.0; - prolongation[7](38,17) = -5.0/256.0; - prolongation[7](38,18) = -5.0/256.0; - prolongation[7](38,19) = 15.0/256.0; - prolongation[7](38,20) = 75.0/256.0; - prolongation[7](38,21) = -25.0/256.0; - prolongation[7](38,22) = -25.0/256.0; - prolongation[7](38,23) = 75.0/256.0; - prolongation[7](38,36) = -75.0/256.0; - prolongation[7](38,37) = 25.0/256.0; - prolongation[7](38,38) = 225.0/256.0; - prolongation[7](38,39) = -75.0/256.0; - prolongation[7](39,16) = 1.0/16.0; - prolongation[7](39,20) = 5.0/16.0; - prolongation[7](39,36) = -5.0/16.0; - prolongation[7](39,38) = 15.0/16.0; - prolongation[7](40,25) = -5.0/256.0; - prolongation[7](40,27) = -1.0/256.0; - prolongation[7](40,29) = -1.0/256.0; - prolongation[7](40,31) = -5.0/256.0; - prolongation[7](40,42) = -15.0/256.0; - prolongation[7](40,43) = 5.0/256.0; - prolongation[7](40,45) = 9.0/256.0; - prolongation[7](40,47) = 9.0/256.0; - prolongation[7](40,50) = -15.0/256.0; - prolongation[7](40,51) = 5.0/256.0; - prolongation[7](40,53) = 45.0/256.0; - prolongation[7](40,55) = 45.0/256.0; - prolongation[7](40,58) = 135.0/256.0; - prolongation[7](40,59) = -45.0/256.0; - prolongation[7](40,62) = 135.0/256.0; - prolongation[7](40,63) = -45.0/256.0; - prolongation[7](41,42) = -1.0/16.0; - prolongation[7](41,50) = -1.0/16.0; - prolongation[7](41,58) = 9.0/16.0; - prolongation[7](41,62) = 9.0/16.0; - prolongation[7](42,0) = -5.0/4096.0; - prolongation[7](42,1) = -1.0/4096.0; - prolongation[7](42,2) = -1.0/4096.0; - prolongation[7](42,3) = -5.0/4096.0; - prolongation[7](42,4) = -25.0/4096.0; - prolongation[7](42,5) = -5.0/4096.0; - prolongation[7](42,6) = -5.0/4096.0; - prolongation[7](42,7) = -25.0/4096.0; - prolongation[7](42,8) = -15.0/4096.0; - prolongation[7](42,9) = 5.0/4096.0; - prolongation[7](42,10) = 9.0/4096.0; - prolongation[7](42,11) = 9.0/4096.0; - prolongation[7](42,12) = -15.0/4096.0; - prolongation[7](42,13) = 5.0/4096.0; - prolongation[7](42,14) = 45.0/4096.0; - prolongation[7](42,15) = 45.0/4096.0; - prolongation[7](42,16) = -75.0/4096.0; - prolongation[7](42,17) = 25.0/4096.0; - prolongation[7](42,18) = 45.0/4096.0; - prolongation[7](42,19) = 45.0/4096.0; - prolongation[7](42,20) = -75.0/4096.0; - prolongation[7](42,21) = 25.0/4096.0; - prolongation[7](42,22) = 225.0/4096.0; - prolongation[7](42,23) = 225.0/4096.0; - prolongation[7](42,24) = 25.0/4096.0; - prolongation[7](42,25) = -75.0/4096.0; - prolongation[7](42,26) = 5.0/4096.0; - prolongation[7](42,27) = -15.0/4096.0; - prolongation[7](42,28) = 5.0/4096.0; - prolongation[7](42,29) = -15.0/4096.0; - prolongation[7](42,30) = 25.0/4096.0; - prolongation[7](42,31) = -75.0/4096.0; - prolongation[7](42,32) = 135.0/4096.0; - prolongation[7](42,33) = -45.0/4096.0; - prolongation[7](42,34) = 135.0/4096.0; - prolongation[7](42,35) = -45.0/4096.0; - prolongation[7](42,36) = 675.0/4096.0; - prolongation[7](42,37) = -225.0/4096.0; - prolongation[7](42,38) = 675.0/4096.0; - prolongation[7](42,39) = -225.0/4096.0; - prolongation[7](42,40) = 75.0/4096.0; - prolongation[7](42,41) = -25.0/4096.0; - prolongation[7](42,42) = -225.0/4096.0; - prolongation[7](42,43) = 75.0/4096.0; - prolongation[7](42,44) = -45.0/4096.0; - prolongation[7](42,45) = 135.0/4096.0; - prolongation[7](42,46) = -45.0/4096.0; - prolongation[7](42,47) = 135.0/4096.0; - prolongation[7](42,48) = 75.0/4096.0; - prolongation[7](42,49) = -25.0/4096.0; - prolongation[7](42,50) = -225.0/4096.0; - prolongation[7](42,51) = 75.0/4096.0; - prolongation[7](42,52) = -225.0/4096.0; - prolongation[7](42,53) = 675.0/4096.0; - prolongation[7](42,54) = -225.0/4096.0; - prolongation[7](42,55) = 675.0/4096.0; - prolongation[7](42,56) = -675.0/4096.0; - prolongation[7](42,57) = 225.0/4096.0; - prolongation[7](42,58) = 2025.0/4096.0; - prolongation[7](42,59) = -675.0/4096.0; - prolongation[7](42,60) = -675.0/4096.0; - prolongation[7](42,61) = 225.0/4096.0; - prolongation[7](42,62) = 2025.0/4096.0; - prolongation[7](42,63) = -675.0/4096.0; - prolongation[7](43,8) = -1.0/256.0; - prolongation[7](43,12) = -1.0/256.0; - prolongation[7](43,16) = -5.0/256.0; - prolongation[7](43,20) = -5.0/256.0; - prolongation[7](43,32) = 9.0/256.0; - prolongation[7](43,34) = 9.0/256.0; - prolongation[7](43,36) = 45.0/256.0; - prolongation[7](43,38) = 45.0/256.0; - prolongation[7](43,40) = 5.0/256.0; - prolongation[7](43,42) = -15.0/256.0; - prolongation[7](43,48) = 5.0/256.0; - prolongation[7](43,50) = -15.0/256.0; - prolongation[7](43,56) = -45.0/256.0; - prolongation[7](43,58) = 135.0/256.0; - prolongation[7](43,60) = -45.0/256.0; - prolongation[7](43,62) = 135.0/256.0; - prolongation[7](44,47) = -1.0/16.0; - prolongation[7](44,55) = -1.0/16.0; - prolongation[7](44,62) = 9.0/16.0; - prolongation[7](44,63) = 9.0/16.0; - prolongation[7](45,11) = -1.0/256.0; - prolongation[7](45,15) = -1.0/256.0; - prolongation[7](45,19) = -5.0/256.0; - prolongation[7](45,23) = -5.0/256.0; - prolongation[7](45,34) = 9.0/256.0; - prolongation[7](45,35) = 9.0/256.0; - prolongation[7](45,38) = 45.0/256.0; - prolongation[7](45,39) = 45.0/256.0; - prolongation[7](45,46) = 5.0/256.0; - prolongation[7](45,47) = -15.0/256.0; - prolongation[7](45,54) = 5.0/256.0; - prolongation[7](45,55) = -15.0/256.0; - prolongation[7](45,60) = -45.0/256.0; - prolongation[7](45,61) = -45.0/256.0; - prolongation[7](45,62) = 135.0/256.0; - prolongation[7](45,63) = 135.0/256.0; - prolongation[7](46,25) = -1.0/256.0; - prolongation[7](46,27) = -1.0/256.0; - prolongation[7](46,29) = -5.0/256.0; - prolongation[7](46,31) = -5.0/256.0; - prolongation[7](46,42) = 9.0/256.0; - prolongation[7](46,43) = 9.0/256.0; - prolongation[7](46,45) = 5.0/256.0; - prolongation[7](46,47) = -15.0/256.0; - prolongation[7](46,50) = 45.0/256.0; - prolongation[7](46,51) = 45.0/256.0; - prolongation[7](46,53) = 5.0/256.0; - prolongation[7](46,55) = -15.0/256.0; - prolongation[7](46,58) = -45.0/256.0; - prolongation[7](46,59) = -45.0/256.0; - prolongation[7](46,62) = 135.0/256.0; - prolongation[7](46,63) = 135.0/256.0; - prolongation[7](47,0) = -1.0/4096.0; - prolongation[7](47,1) = -1.0/4096.0; - prolongation[7](47,2) = -5.0/4096.0; - prolongation[7](47,3) = -5.0/4096.0; - prolongation[7](47,4) = -5.0/4096.0; - prolongation[7](47,5) = -5.0/4096.0; - prolongation[7](47,6) = -25.0/4096.0; - prolongation[7](47,7) = -25.0/4096.0; - prolongation[7](47,8) = 9.0/4096.0; - prolongation[7](47,9) = 9.0/4096.0; - prolongation[7](47,10) = 5.0/4096.0; - prolongation[7](47,11) = -15.0/4096.0; - prolongation[7](47,12) = 45.0/4096.0; - prolongation[7](47,13) = 45.0/4096.0; - prolongation[7](47,14) = 5.0/4096.0; - prolongation[7](47,15) = -15.0/4096.0; - prolongation[7](47,16) = 45.0/4096.0; - prolongation[7](47,17) = 45.0/4096.0; - prolongation[7](47,18) = 25.0/4096.0; - prolongation[7](47,19) = -75.0/4096.0; - prolongation[7](47,20) = 225.0/4096.0; - prolongation[7](47,21) = 225.0/4096.0; - prolongation[7](47,22) = 25.0/4096.0; - prolongation[7](47,23) = -75.0/4096.0; - prolongation[7](47,24) = 5.0/4096.0; - prolongation[7](47,25) = -15.0/4096.0; - prolongation[7](47,26) = 5.0/4096.0; - prolongation[7](47,27) = -15.0/4096.0; - prolongation[7](47,28) = 25.0/4096.0; - prolongation[7](47,29) = -75.0/4096.0; - prolongation[7](47,30) = 25.0/4096.0; - prolongation[7](47,31) = -75.0/4096.0; - prolongation[7](47,32) = -45.0/4096.0; - prolongation[7](47,33) = -45.0/4096.0; - prolongation[7](47,34) = 135.0/4096.0; - prolongation[7](47,35) = 135.0/4096.0; - prolongation[7](47,36) = -225.0/4096.0; - prolongation[7](47,37) = -225.0/4096.0; - prolongation[7](47,38) = 675.0/4096.0; - prolongation[7](47,39) = 675.0/4096.0; - prolongation[7](47,40) = -45.0/4096.0; - prolongation[7](47,41) = -45.0/4096.0; - prolongation[7](47,42) = 135.0/4096.0; - prolongation[7](47,43) = 135.0/4096.0; - prolongation[7](47,44) = -25.0/4096.0; - prolongation[7](47,45) = 75.0/4096.0; - prolongation[7](47,46) = 75.0/4096.0; - prolongation[7](47,47) = -225.0/4096.0; - prolongation[7](47,48) = -225.0/4096.0; - prolongation[7](47,49) = -225.0/4096.0; - prolongation[7](47,50) = 675.0/4096.0; - prolongation[7](47,51) = 675.0/4096.0; - prolongation[7](47,52) = -25.0/4096.0; - prolongation[7](47,53) = 75.0/4096.0; - prolongation[7](47,54) = 75.0/4096.0; - prolongation[7](47,55) = -225.0/4096.0; - prolongation[7](47,56) = 225.0/4096.0; - prolongation[7](47,57) = 225.0/4096.0; - prolongation[7](47,58) = -675.0/4096.0; - prolongation[7](47,59) = -675.0/4096.0; - prolongation[7](47,60) = -675.0/4096.0; - prolongation[7](47,61) = -675.0/4096.0; - prolongation[7](47,62) = 2025.0/4096.0; - prolongation[7](47,63) = 2025.0/4096.0; - prolongation[7](48,29) = 1.0/16.0; - prolongation[7](48,31) = 5.0/16.0; - prolongation[7](48,50) = 15.0/16.0; - prolongation[7](48,51) = -5.0/16.0; - prolongation[7](49,50) = 1.0; - prolongation[7](50,2) = 1.0/256.0; - prolongation[7](50,3) = 5.0/256.0; - prolongation[7](50,6) = 5.0/256.0; - prolongation[7](50,7) = 25.0/256.0; - prolongation[7](50,12) = 15.0/256.0; - prolongation[7](50,13) = -5.0/256.0; - prolongation[7](50,20) = 75.0/256.0; - prolongation[7](50,21) = -25.0/256.0; - prolongation[7](50,28) = -5.0/256.0; - prolongation[7](50,29) = 15.0/256.0; - prolongation[7](50,30) = -25.0/256.0; - prolongation[7](50,31) = 75.0/256.0; - prolongation[7](50,48) = -75.0/256.0; - prolongation[7](50,49) = 25.0/256.0; - prolongation[7](50,50) = 225.0/256.0; - prolongation[7](50,51) = -75.0/256.0; - prolongation[7](51,12) = 1.0/16.0; - prolongation[7](51,20) = 5.0/16.0; - prolongation[7](51,48) = -5.0/16.0; - prolongation[7](51,50) = 15.0/16.0; - prolongation[7](52,55) = 1.0; - prolongation[7](53,15) = 1.0/16.0; - prolongation[7](53,23) = 5.0/16.0; - prolongation[7](53,54) = -5.0/16.0; - prolongation[7](53,55) = 15.0/16.0; - prolongation[7](54,25) = 1.0/16.0; - prolongation[7](54,31) = 5.0/16.0; - prolongation[7](54,53) = -5.0/16.0; - prolongation[7](54,55) = 15.0/16.0; - prolongation[7](55,0) = 1.0/256.0; - prolongation[7](55,3) = 5.0/256.0; - prolongation[7](55,4) = 5.0/256.0; - prolongation[7](55,7) = 25.0/256.0; - prolongation[7](55,14) = -5.0/256.0; - prolongation[7](55,15) = 15.0/256.0; - prolongation[7](55,22) = -25.0/256.0; - prolongation[7](55,23) = 75.0/256.0; - prolongation[7](55,24) = -5.0/256.0; - prolongation[7](55,25) = 15.0/256.0; - prolongation[7](55,30) = -25.0/256.0; - prolongation[7](55,31) = 75.0/256.0; - prolongation[7](55,52) = 25.0/256.0; - prolongation[7](55,53) = -75.0/256.0; - prolongation[7](55,54) = -75.0/256.0; - prolongation[7](55,55) = 225.0/256.0; - prolongation[7](56,47) = 1.0/16.0; - prolongation[7](56,55) = 5.0/16.0; - prolongation[7](56,62) = 15.0/16.0; - prolongation[7](56,63) = -5.0/16.0; - prolongation[7](57,62) = 1.0; - prolongation[7](58,11) = 1.0/256.0; - prolongation[7](58,15) = 5.0/256.0; - prolongation[7](58,19) = 5.0/256.0; - prolongation[7](58,23) = 25.0/256.0; - prolongation[7](58,34) = 15.0/256.0; - prolongation[7](58,35) = -5.0/256.0; - prolongation[7](58,38) = 75.0/256.0; - prolongation[7](58,39) = -25.0/256.0; - prolongation[7](58,46) = -5.0/256.0; - prolongation[7](58,47) = 15.0/256.0; - prolongation[7](58,54) = -25.0/256.0; - prolongation[7](58,55) = 75.0/256.0; - prolongation[7](58,60) = -75.0/256.0; - prolongation[7](58,61) = 25.0/256.0; - prolongation[7](58,62) = 225.0/256.0; - prolongation[7](58,63) = -75.0/256.0; - prolongation[7](59,34) = 1.0/16.0; - prolongation[7](59,38) = 5.0/16.0; - prolongation[7](59,60) = -5.0/16.0; - prolongation[7](59,62) = 15.0/16.0; - prolongation[7](60,25) = 5.0/256.0; - prolongation[7](60,27) = 1.0/256.0; - prolongation[7](60,29) = 5.0/256.0; - prolongation[7](60,31) = 25.0/256.0; - prolongation[7](60,42) = 15.0/256.0; - prolongation[7](60,43) = -5.0/256.0; - prolongation[7](60,45) = -5.0/256.0; - prolongation[7](60,47) = 15.0/256.0; - prolongation[7](60,50) = 75.0/256.0; - prolongation[7](60,51) = -25.0/256.0; - prolongation[7](60,53) = -25.0/256.0; - prolongation[7](60,55) = 75.0/256.0; - prolongation[7](60,58) = -75.0/256.0; - prolongation[7](60,59) = 25.0/256.0; - prolongation[7](60,62) = 225.0/256.0; - prolongation[7](60,63) = -75.0/256.0; - prolongation[7](61,42) = 1.0/16.0; - prolongation[7](61,50) = 5.0/16.0; - prolongation[7](61,58) = -5.0/16.0; - prolongation[7](61,62) = 15.0/16.0; - prolongation[7](62,0) = 5.0/4096.0; - prolongation[7](62,1) = 1.0/4096.0; - prolongation[7](62,2) = 5.0/4096.0; - prolongation[7](62,3) = 25.0/4096.0; - prolongation[7](62,4) = 25.0/4096.0; - prolongation[7](62,5) = 5.0/4096.0; - prolongation[7](62,6) = 25.0/4096.0; - prolongation[7](62,7) = 125.0/4096.0; - prolongation[7](62,8) = 15.0/4096.0; - prolongation[7](62,9) = -5.0/4096.0; - prolongation[7](62,10) = -5.0/4096.0; - prolongation[7](62,11) = 15.0/4096.0; - prolongation[7](62,12) = 75.0/4096.0; - prolongation[7](62,13) = -25.0/4096.0; - prolongation[7](62,14) = -25.0/4096.0; - prolongation[7](62,15) = 75.0/4096.0; - prolongation[7](62,16) = 75.0/4096.0; - prolongation[7](62,17) = -25.0/4096.0; - prolongation[7](62,18) = -25.0/4096.0; - prolongation[7](62,19) = 75.0/4096.0; - prolongation[7](62,20) = 375.0/4096.0; - prolongation[7](62,21) = -125.0/4096.0; - prolongation[7](62,22) = -125.0/4096.0; - prolongation[7](62,23) = 375.0/4096.0; - prolongation[7](62,24) = -25.0/4096.0; - prolongation[7](62,25) = 75.0/4096.0; - prolongation[7](62,26) = -5.0/4096.0; - prolongation[7](62,27) = 15.0/4096.0; - prolongation[7](62,28) = -25.0/4096.0; - prolongation[7](62,29) = 75.0/4096.0; - prolongation[7](62,30) = -125.0/4096.0; - prolongation[7](62,31) = 375.0/4096.0; - prolongation[7](62,32) = -75.0/4096.0; - prolongation[7](62,33) = 25.0/4096.0; - prolongation[7](62,34) = 225.0/4096.0; - prolongation[7](62,35) = -75.0/4096.0; - prolongation[7](62,36) = -375.0/4096.0; - prolongation[7](62,37) = 125.0/4096.0; - prolongation[7](62,38) = 1125.0/4096.0; - prolongation[7](62,39) = -375.0/4096.0; - prolongation[7](62,40) = -75.0/4096.0; - prolongation[7](62,41) = 25.0/4096.0; - prolongation[7](62,42) = 225.0/4096.0; - prolongation[7](62,43) = -75.0/4096.0; - prolongation[7](62,44) = 25.0/4096.0; - prolongation[7](62,45) = -75.0/4096.0; - prolongation[7](62,46) = -75.0/4096.0; - prolongation[7](62,47) = 225.0/4096.0; - prolongation[7](62,48) = -375.0/4096.0; - prolongation[7](62,49) = 125.0/4096.0; - prolongation[7](62,50) = 1125.0/4096.0; - prolongation[7](62,51) = -375.0/4096.0; - prolongation[7](62,52) = 125.0/4096.0; - prolongation[7](62,53) = -375.0/4096.0; - prolongation[7](62,54) = -375.0/4096.0; - prolongation[7](62,55) = 1125.0/4096.0; - prolongation[7](62,56) = 375.0/4096.0; - prolongation[7](62,57) = -125.0/4096.0; - prolongation[7](62,58) = -1125.0/4096.0; - prolongation[7](62,59) = 375.0/4096.0; - prolongation[7](62,60) = -1125.0/4096.0; - prolongation[7](62,61) = 375.0/4096.0; - prolongation[7](62,62) = 3375.0/4096.0; - prolongation[7](62,63) = -1125.0/4096.0; - prolongation[7](63,8) = 1.0/256.0; - prolongation[7](63,12) = 5.0/256.0; - prolongation[7](63,16) = 5.0/256.0; - prolongation[7](63,20) = 25.0/256.0; - prolongation[7](63,32) = -5.0/256.0; - prolongation[7](63,34) = 15.0/256.0; - prolongation[7](63,36) = -25.0/256.0; - prolongation[7](63,38) = 75.0/256.0; - prolongation[7](63,40) = -5.0/256.0; - prolongation[7](63,42) = 15.0/256.0; - prolongation[7](63,48) = -25.0/256.0; - prolongation[7](63,50) = 75.0/256.0; - prolongation[7](63,56) = 25.0/256.0; - prolongation[7](63,58) = -75.0/256.0; - prolongation[7](63,60) = -75.0/256.0; - prolongation[7](63,62) = 225.0/256.0; - - - restriction[0](0,0) = 1.0; - restriction[0](8,9) = 1.0; - restriction[0](14,15) = 1.0; - restriction[0](24,25) = 1.0; - restriction[0](32,35) = 1.0; - restriction[0](40,43) = 1.0; - restriction[0](52,55) = 1.0; - restriction[0](56,63) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](9,8) = 1.0; - restriction[1](10,11) = 1.0; - restriction[1](26,27) = 1.0; - restriction[1](33,34) = 1.0; - restriction[1](41,42) = 1.0; - restriction[1](44,47) = 1.0; - restriction[1](57,62) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](11,10) = 1.0; - restriction[2](13,12) = 1.0; - restriction[2](28,29) = 1.0; - restriction[2](35,32) = 1.0; - restriction[2](46,45) = 1.0; - restriction[2](49,50) = 1.0; - restriction[2](61,58) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](12,13) = 1.0; - restriction[3](15,14) = 1.0; - restriction[3](30,31) = 1.0; - restriction[3](34,33) = 1.0; - restriction[3](48,51) = 1.0; - restriction[3](54,53) = 1.0; - restriction[3](60,59) = 1.0; - restriction[4](4,4) = 1.0; - restriction[4](16,17) = 1.0; - restriction[4](22,23) = 1.0; - restriction[4](25,24) = 1.0; - restriction[4](36,39) = 1.0; - restriction[4](42,41) = 1.0; - restriction[4](53,54) = 1.0; - restriction[4](58,61) = 1.0; - restriction[5](5,5) = 1.0; - restriction[5](17,16) = 1.0; - restriction[5](18,19) = 1.0; - restriction[5](27,26) = 1.0; - restriction[5](37,38) = 1.0; - restriction[5](43,40) = 1.0; - restriction[5](45,46) = 1.0; - restriction[5](59,60) = 1.0; - restriction[6](6,6) = 1.0; - restriction[6](19,18) = 1.0; - restriction[6](21,20) = 1.0; - restriction[6](29,28) = 1.0; - restriction[6](39,36) = 1.0; - restriction[6](47,44) = 1.0; - restriction[6](51,48) = 1.0; - restriction[6](63,56) = 1.0; - restriction[7](7,7) = 1.0; - restriction[7](20,21) = 1.0; - restriction[7](23,22) = 1.0; - restriction[7](31,30) = 1.0; - restriction[7](38,37) = 1.0; - restriction[7](50,49) = 1.0; - restriction[7](55,52) = 1.0; - restriction[7](62,57) = 1.0; -}; - - -template <> -double -FEQ3<3>::shape_value (const unsigned int i, - const Point<3> &p) const -{ - Assert (i -Tensor<1,3> -FEQ3<3>::shape_grad (const unsigned int i, - const Point<3> &p) const -{ - Assert (i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(-11.0/2.0+18.0*xi-27.0/2.0*xi*xi+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi+(-1331.0/8.0+1089.0/2.0*xi-3267.0/8.0*xi*xi)*eta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta)*zeta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+(121.0/4.0-1331.0/8.0*xi+1089.0/4.0*xi*xi-1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+(121.0/4.0-1331.0/8.0*xi+1089.0/4.0*xi*xi-1089.0/8.0*xi*xi*xi)*eta+(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta*eta+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 1: return Point<3>(1.0-9.0*xi+27.0/2.0*xi*xi+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(9.0-81.0*xi+243.0/2.0*xi*xi)*eta*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+(121.0/4.0-1089.0/4.0*xi+3267.0/8.0*xi*xi)*eta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta)*zeta+(9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+(121.0/4.0*xi-1089.0/8.0*xi*xi+1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+(121.0/4.0*xi-1089.0/8.0*xi*xi+1089.0/8.0*xi*xi*xi)*eta+(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta*eta+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 2: return Point<3>((1.0-9.0*xi+27.0/2.0*xi*xi+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(9.0-81.0*xi+243.0/2.0*xi*xi)*eta*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta*eta)*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta)*zeta+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+(-11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi)*eta+(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta*eta+(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi+(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 3: return Point<3>((-11.0/2.0+18.0*xi-27.0/2.0*xi*xi+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta*eta)*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta)*zeta+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+(-11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi)*eta+(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta*eta+(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi+(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 4: return Point<3>((-11.0/2.0+18.0*xi-27.0/2.0*xi*xi)*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+((121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+(-11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta)*zeta+(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi)*eta+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta+(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 5: return Point<3>((1.0-9.0*xi+27.0/2.0*xi*xi)*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+((-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta)*zeta+((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+(-11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta)*zeta+(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi)*eta+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta+(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 6: return Point<3>(((1.0-9.0*xi+27.0/2.0*xi*xi)*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi)*eta+(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 7: return Point<3>(((-11.0/2.0+18.0*xi-27.0/2.0*xi*xi)*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta*eta)*zeta+((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi)*eta+(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 8: return Point<3>(9.0-45.0*xi+81.0/2.0*xi*xi+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(81.0-405.0*xi+729.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+(1089.0/4.0-5445.0/4.0*xi+9801.0/8.0*xi*xi)*eta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+(81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+(1089.0/4.0*xi-5445.0/8.0*xi*xi+3267.0/8.0*xi*xi*xi+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+3.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+(1089.0/4.0*xi-5445.0/8.0*xi*xi+3267.0/8.0*xi*xi*xi)*eta+(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta*eta+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 9: return Point<3>(-9.0/2.0+36.0*xi-81.0/2.0*xi*xi+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi+(-1089.0/8.0+1089.0*xi-9801.0/8.0*xi*xi)*eta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+(-1089.0/8.0*xi+1089.0/2.0*xi*xi-3267.0/8.0*xi*xi*xi+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+3.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+(-1089.0/8.0*xi+1089.0/2.0*xi*xi-3267.0/8.0*xi*xi*xi)*eta+(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta*eta+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 10: return Point<3>((9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi+(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta+(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 11: return Point<3>((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+(18.0-162.0*xi+243.0*xi*xi+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 12: return Point<3>((9.0-45.0*xi+81.0/2.0*xi*xi+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(81.0-405.0*xi+729.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta)*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+(-99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi)*eta+(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta*eta+(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 13: return Point<3>((-9.0/2.0+36.0*xi-81.0/2.0*xi*xi+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta*eta)*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+(99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi)*eta+(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 14: return Point<3>((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi+(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta+(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi+(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 15: return Point<3>((99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+(-99.0+324.0*xi-243.0*xi*xi+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi+(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 16: return Point<3>((9.0-45.0*xi+81.0/2.0*xi*xi)*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+((-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+(-99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+3.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi)*eta+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 17: return Point<3>((-9.0/2.0+36.0*xi-81.0/2.0*xi*xi)*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+((99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+(99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+3.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi)*eta+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 18: return Point<3>(((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 19: return Point<3>(((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+((18.0-162.0*xi+243.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 20: return Point<3>(((9.0-45.0*xi+81.0/2.0*xi*xi)*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi)*eta+(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 21: return Point<3>(((-9.0/2.0+36.0*xi-81.0/2.0*xi*xi)*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi)*eta+(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 22: return Point<3>(((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 23: return Point<3>(((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-99.0+324.0*xi-243.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 24: return Point<3>((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta*eta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+((1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta*eta+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta*eta+(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta*eta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 25: return Point<3>((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-99.0+324.0*xi-243.0*xi*xi)*eta*eta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+((-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta*eta+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta*eta+(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta*eta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 26: return Point<3>((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta*eta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+((-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta*eta+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta*eta+(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta*eta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 27: return Point<3>((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(18.0-162.0*xi+243.0*xi*xi)*eta*eta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+((99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta*eta+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta*eta+(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta*eta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 28: return Point<3>(((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta*eta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta*eta+(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 29: return Point<3>(((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(18.0-162.0*xi+243.0*xi*xi)*eta*eta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta*eta+(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 30: return Point<3>(((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta*eta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta*eta+(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 31: return Point<3>(((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-99.0+324.0*xi-243.0*xi*xi)*eta*eta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta)*zeta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta*eta+(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 32: return Point<3>((81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi+(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta+(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 33: return Point<3>((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi+(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta+(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi+(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 34: return Point<3>((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+(162.0-810.0*xi+729.0*xi*xi+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 35: return Point<3>((81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+(-81.0+648.0*xi-729.0*xi*xi+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi+(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 36: return Point<3>(((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 37: return Point<3>(((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 38: return Point<3>(((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((162.0-810.0*xi+729.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 39: return Point<3>(((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-81.0+648.0*xi-729.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 40: return Point<3>((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta*eta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+((-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta*eta+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta)*zeta+((729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta+3.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta)*zeta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta*eta+(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta*eta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 41: return Point<3>((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+((891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta+3.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta*eta+(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 42: return Point<3>((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(162.0-810.0*xi+729.0*xi*xi)*eta*eta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+((891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta*eta+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta+3.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta*eta+(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta*eta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 43: return Point<3>((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-81.0+648.0*xi-729.0*xi*xi)*eta*eta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+((-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta)*zeta+((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta+3.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta)*zeta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta*eta+(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 44: return Point<3>(((81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+(2025.0/4.0-18225.0/4.0*xi+54675.0/8.0*xi*xi)*eta*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0*xi-18225.0/8.0*xi*xi+18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta*eta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+(2025.0/4.0*xi-18225.0/8.0*xi*xi+18225.0/8.0*xi*xi*xi)*eta*eta+(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 45: return Point<3>(((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta*eta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta*eta+(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 46: return Point<3>(((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((162.0-1458.0*xi+2187.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta*eta+(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 47: return Point<3>(((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+(324.0-2916.0*xi+4374.0*xi*xi)*eta*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi)*eta+3.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi)*eta*eta+(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 48: return Point<3>(((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta*eta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta*eta+(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 49: return Point<3>(((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 50: return Point<3>(((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(162.0-810.0*xi+729.0*xi*xi)*eta*eta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta*eta+(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 51: return Point<3>(((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-81.0+648.0*xi-729.0*xi*xi)*eta*eta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 52: return Point<3>(((-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+(-22275.0/8.0+18225.0/2.0*xi-54675.0/8.0*xi*xi)*eta*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0-22275.0/8.0*xi+18225.0/4.0*xi*xi-18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta*eta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+(2025.0/4.0-22275.0/8.0*xi+18225.0/4.0*xi*xi-18225.0/8.0*xi*xi*xi)*eta*eta+(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 53: return Point<3>(((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta*eta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta*eta+(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 54: return Point<3>(((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-891.0+2916.0*xi-2187.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta*eta+(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 55: return Point<3>(((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+((891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+(-1782.0+5832.0*xi-4374.0*xi*xi)*eta*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi)*eta+3.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi)*eta*eta+(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 56: return Point<3>(((729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+(18225.0/4.0-91125.0/4.0*xi+164025.0/8.0*xi*xi)*eta*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi+2.0*(18225.0/4.0*xi-91125.0/8.0*xi*xi+54675.0/8.0*xi*xi*xi)*eta+3.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta*eta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+(18225.0/4.0*xi-91125.0/8.0*xi*xi+54675.0/8.0*xi*xi*xi)*eta*eta+(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta+(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 57: return Point<3>(((-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+((3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+(-18225.0/8.0+18225.0*xi-164025.0/8.0*xi*xi)*eta*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi+2.0*(-18225.0/8.0*xi+18225.0/2.0*xi*xi-54675.0/8.0*xi*xi*xi)*eta+3.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+(-18225.0/8.0*xi+18225.0/2.0*xi*xi-54675.0/8.0*xi*xi*xi)*eta*eta+(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta+(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 58: return Point<3>(((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+((3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta*eta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta*eta+(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta+(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 59: return Point<3>(((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+((-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta+2.0*((-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta*eta+(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta+(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 60: return Point<3>(((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+((1458.0-7290.0*xi+6561.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta*eta+(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta+(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 61: return Point<3>(((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-729.0+5832.0*xi-6561.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta+(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 62: return Point<3>(((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+((-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+(2916.0-14580.0*xi+13122.0*xi*xi)*eta*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi)*eta+3.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi)*eta*eta+(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta+(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - case 63: return Point<3>(((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+((729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+(-1458.0+11664.0*xi-13122.0*xi*xi)*eta*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta*zeta, - (-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta*zeta, - (-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta+2.0*((729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi)*eta*eta+(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta+(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta*zeta); - }; - return Point<3> (); -}; - - -template <> -Tensor<2,3> -FEQ3<3>::shape_grad_grad (const unsigned int i, - const Point<3> &p) const -{ - Assert (i return_value; - - switch (i) - { -case 0: -return_value[0][0] = 18.0-27.0*xi+(-99.0+297.0/2.0*xi)*eta+(162.0-243.0*xi)*eta*eta+(-81.0+243.0/2.0*xi)*eta*eta*eta+(-99.0+297.0/2.0*xi+(1089.0/2.0-3267.0/4.0*xi)*eta+(-891.0+2673.0/2.0*xi)*eta*eta+(891.0/2.0-2673.0/4.0*xi)*eta*eta*eta)*zeta+(162.0-243.0*xi+(-891.0+2673.0/2.0*xi)*eta+(1458.0-2187.0*xi)*eta*eta+(-729.0+2187.0/2.0*xi)*eta*eta*eta)*zeta*zeta+(-81.0+243.0/2.0*xi+(891.0/2.0-2673.0/4.0*xi)*eta+(-729.0+2187.0/2.0*xi)*eta*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-1331.0/8.0+1089.0/2.0*xi-3267.0/8.0*xi*xi+2.0*(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+3.0*(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta)*zeta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+(-1331.0/8.0+1089.0/2.0*xi-3267.0/8.0*xi*xi)*eta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-1331.0/8.0+1089.0/2.0*xi-3267.0/8.0*xi*xi+2.0*(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+3.0*(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta)*zeta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+6.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi+6.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta)*zeta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+6.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 121.0/4.0-1331.0/8.0*xi+1089.0/4.0*xi*xi-1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 121.0/4.0-99.0*xi+297.0/4.0*xi*xi+(-1331.0/8.0+1089.0/2.0*xi-3267.0/8.0*xi*xi)*eta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 121.0/4.0-1331.0/8.0*xi+1089.0/4.0*xi*xi-1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+2.0*(-99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi)*eta+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 1: -return_value[0][0] = -9.0+27.0*xi+(99.0/2.0-297.0/2.0*xi)*eta+(-81.0+243.0*xi)*eta*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta*eta+(99.0/2.0-297.0/2.0*xi+(-1089.0/4.0+3267.0/4.0*xi)*eta+(891.0/2.0-2673.0/2.0*xi)*eta*eta+(-891.0/4.0+2673.0/4.0*xi)*eta*eta*eta)*zeta+(-81.0+243.0*xi+(891.0/2.0-2673.0/2.0*xi)*eta+(-729.0+2187.0*xi)*eta*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta*eta)*zeta*zeta+(81.0/2.0-243.0/2.0*xi+(-891.0/4.0+2673.0/4.0*xi)*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(121.0/4.0-1089.0/4.0*xi+3267.0/8.0*xi*xi+2.0*(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+3.0*(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+(121.0/4.0-1089.0/4.0*xi+3267.0/8.0*xi*xi)*eta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(121.0/4.0-1089.0/4.0*xi+3267.0/8.0*xi*xi+2.0*(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+3.0*(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+6.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi+6.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta)*zeta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+6.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 121.0/4.0*xi-1089.0/8.0*xi*xi+1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+(121.0/4.0-1089.0/4.0*xi+3267.0/8.0*xi*xi)*eta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 121.0/4.0*xi-1089.0/8.0*xi*xi+1089.0/8.0*xi*xi*xi+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+3.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+2.0*(-99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi)*eta+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 2: -return_value[0][0] = (-9.0+27.0*xi+(99.0/2.0-297.0/2.0*xi)*eta+(-81.0+243.0*xi)*eta*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta*eta)*zeta+(81.0/2.0-243.0/2.0*xi+(-891.0/4.0+2673.0/4.0*xi)*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(-81.0/2.0+243.0/2.0*xi+(891.0/4.0-2673.0/4.0*xi)*eta+(-729.0/2.0+2187.0/2.0*xi)*eta*eta+(729.0/4.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta)*zeta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi+2.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 1.0-9.0*xi+27.0/2.0*xi*xi+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(9.0-81.0*xi+243.0/2.0*xi*xi)*eta*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(9.0-81.0*xi+243.0/2.0*xi*xi)*eta+3.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta)*zeta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi+2.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+6.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta)*zeta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 1.0-9.0*xi+27.0/2.0*xi*xi+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(9.0-81.0*xi+243.0/2.0*xi*xi)*eta*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -9.0*xi+81.0/2.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi+(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 3: -return_value[0][0] = (18.0-27.0*xi+(-99.0+297.0/2.0*xi)*eta+(162.0-243.0*xi)*eta*eta+(-81.0+243.0/2.0*xi)*eta*eta*eta)*zeta+(-81.0+243.0/2.0*xi+(891.0/2.0-2673.0/4.0*xi)*eta+(-729.0+2187.0/2.0*xi)*eta*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(81.0-243.0/2.0*xi+(-891.0/2.0+2673.0/4.0*xi)*eta+(729.0-2187.0/2.0*xi)*eta*eta+(-729.0/2.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta)*zeta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi+2.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+3.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta)*zeta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi+2.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+6.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta)*zeta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -9.0+99.0/2.0*xi-81.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi+(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 4: -return_value[0][0] = (18.0-27.0*xi)*eta+(-81.0+243.0/2.0*xi)*eta*eta+(81.0-243.0/2.0*xi)*eta*eta*eta+((-99.0+297.0/2.0*xi)*eta+(891.0/2.0-2673.0/4.0*xi)*eta*eta+(-891.0/2.0+2673.0/4.0*xi)*eta*eta*eta)*zeta+((162.0-243.0*xi)*eta+(-729.0+2187.0/2.0*xi)*eta*eta+(729.0-2187.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-81.0+243.0/2.0*xi)*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta+(-729.0/2.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+3.0*(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta+2.0*((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta+(121.0/4.0-99.0*xi+297.0/4.0*xi*xi+2.0*(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+3.0*(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -9.0+99.0/2.0*xi-81.0*xi*xi+81.0/2.0*xi*xi*xi+6.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(99.0/2.0-1089.0/4.0*xi+891.0/2.0*xi*xi-891.0/4.0*xi*xi*xi+6.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta)*zeta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (121.0/4.0-99.0*xi+297.0/4.0*xi*xi)*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta*eta+(1089.0/8.0-891.0/2.0*xi+2673.0/8.0*xi*xi)*eta*eta*eta+2.0*((-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -11.0/2.0+121.0/4.0*xi-99.0/2.0*xi*xi+99.0/4.0*xi*xi*xi+2.0*(99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0+1089.0/8.0*xi-891.0/4.0*xi*xi+891.0/8.0*xi*xi*xi)*eta*eta+2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi)*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 5: -return_value[0][0] = (-9.0+27.0*xi)*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta+(-81.0/2.0+243.0/2.0*xi)*eta*eta*eta+((99.0/2.0-297.0/2.0*xi)*eta+(-891.0/4.0+2673.0/4.0*xi)*eta*eta+(891.0/4.0-2673.0/4.0*xi)*eta*eta*eta)*zeta+((-81.0+243.0*xi)*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta+(-729.0/2.0+2187.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((81.0/2.0-243.0/2.0*xi)*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta+(729.0/4.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+3.0*(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta*eta)*zeta+(9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta+2.0*((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta+(-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi+2.0*(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+3.0*(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta*eta)*zeta+(9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -9.0*xi+81.0/2.0*xi*xi-81.0/2.0*xi*xi*xi+6.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(99.0/2.0*xi-891.0/4.0*xi*xi+891.0/4.0*xi*xi*xi+6.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta)*zeta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-11.0/2.0+99.0/2.0*xi-297.0/4.0*xi*xi)*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta*eta+(-99.0/4.0+891.0/4.0*xi-2673.0/8.0*xi*xi)*eta*eta*eta+2.0*((9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -11.0/2.0*xi+99.0/4.0*xi*xi-99.0/4.0*xi*xi*xi+2.0*(99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi)*eta+3.0*(-99.0/4.0*xi+891.0/8.0*xi*xi-891.0/8.0*xi*xi*xi)*eta*eta+2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi)*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 6: -return_value[0][0] = ((-9.0+27.0*xi)*eta+(81.0/2.0-243.0/2.0*xi)*eta*eta+(-81.0/2.0+243.0/2.0*xi)*eta*eta*eta)*zeta+((81.0/2.0-243.0/2.0*xi)*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta+(729.0/4.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-81.0/2.0+243.0/2.0*xi)*eta+(729.0/4.0-2187.0/4.0*xi)*eta*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta)*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi+2.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (1.0-9.0*xi+27.0/2.0*xi*xi)*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+2.0*((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (1.0-9.0*xi+27.0/2.0*xi*xi+2.0*(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+3.0*(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta)*zeta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi+2.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-9.0*xi+81.0/2.0*xi*xi-81.0/2.0*xi*xi*xi+6.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta)*zeta+(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+6.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (1.0-9.0*xi+27.0/2.0*xi*xi)*eta+(-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta*eta+(9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta*eta*eta+2.0*((-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((9.0/2.0-81.0/2.0*xi+243.0/4.0*xi*xi)*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = xi-9.0/2.0*xi*xi+9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta*eta+2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((9.0/2.0*xi-81.0/4.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 7: -return_value[0][0] = ((18.0-27.0*xi)*eta+(-81.0+243.0/2.0*xi)*eta*eta+(81.0-243.0/2.0*xi)*eta*eta*eta)*zeta+((-81.0+243.0/2.0*xi)*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta+(-729.0/2.0+2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((81.0-243.0/2.0*xi)*eta+(-729.0/2.0+2187.0/4.0*xi)*eta*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta)*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi+2.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-11.0/2.0+18.0*xi-27.0/2.0*xi*xi)*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+2.0*((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-11.0/2.0+18.0*xi-27.0/2.0*xi*xi+2.0*(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+3.0*(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta)*zeta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi+2.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-9.0+99.0/2.0*xi-81.0*xi*xi+81.0/2.0*xi*xi*xi+6.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta)*zeta+(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+6.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-11.0/2.0+18.0*xi-27.0/2.0*xi*xi)*eta+(99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta*eta+(-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta*eta*eta+2.0*((99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-99.0/4.0+81.0*xi-243.0/4.0*xi*xi)*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 1.0-11.0/2.0*xi+9.0*xi*xi-9.0/2.0*xi*xi*xi+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta*eta+2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi)*eta+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((9.0/2.0-99.0/4.0*xi+81.0/2.0*xi*xi-81.0/4.0*xi*xi*xi)*eta+(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 8: -return_value[0][0] = -45.0+81.0*xi+(495.0/2.0-891.0/2.0*xi)*eta+(-405.0+729.0*xi)*eta*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta*eta+(495.0/2.0-891.0/2.0*xi+(-5445.0/4.0+9801.0/4.0*xi)*eta+(4455.0/2.0-8019.0/2.0*xi)*eta*eta+(-4455.0/4.0+8019.0/4.0*xi)*eta*eta*eta)*zeta+(-405.0+729.0*xi+(4455.0/2.0-8019.0/2.0*xi)*eta+(-3645.0+6561.0*xi)*eta*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+(405.0/2.0-729.0/2.0*xi+(-4455.0/4.0+8019.0/4.0*xi)*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(1089.0/4.0-5445.0/4.0*xi+9801.0/8.0*xi*xi+2.0*(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+3.0*(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+(1089.0/4.0-5445.0/4.0*xi+9801.0/8.0*xi*xi)*eta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(1089.0/4.0-5445.0/4.0*xi+9801.0/8.0*xi*xi+2.0*(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+3.0*(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+6.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi+6.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta)*zeta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+6.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 1089.0/4.0*xi-5445.0/8.0*xi*xi+3267.0/8.0*xi*xi*xi+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+3.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+(1089.0/4.0-5445.0/4.0*xi+9801.0/8.0*xi*xi)*eta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 1089.0/4.0*xi-5445.0/8.0*xi*xi+3267.0/8.0*xi*xi*xi+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+3.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+2.0*(-891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi)*eta+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -break; -case 9: -return_value[0][0] = 36.0-81.0*xi+(-198.0+891.0/2.0*xi)*eta+(324.0-729.0*xi)*eta*eta+(-162.0+729.0/2.0*xi)*eta*eta*eta+(-198.0+891.0/2.0*xi+(1089.0-9801.0/4.0*xi)*eta+(-1782.0+8019.0/2.0*xi)*eta*eta+(891.0-8019.0/4.0*xi)*eta*eta*eta)*zeta+(324.0-729.0*xi+(-1782.0+8019.0/2.0*xi)*eta+(2916.0-6561.0*xi)*eta*eta+(-1458.0+6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+(-162.0+729.0/2.0*xi+(891.0-8019.0/4.0*xi)*eta+(-1458.0+6561.0/2.0*xi)*eta*eta+(729.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+1089.0*xi-9801.0/8.0*xi*xi+2.0*(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+(-1089.0/8.0+1089.0*xi-9801.0/8.0*xi*xi)*eta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+1089.0*xi-9801.0/8.0*xi*xi+2.0*(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+6.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi+6.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta)*zeta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+6.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -1089.0/8.0*xi+1089.0/2.0*xi*xi-3267.0/8.0*xi*xi*xi+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+3.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 99.0/4.0-198.0*xi+891.0/4.0*xi*xi+(-1089.0/8.0+1089.0*xi-9801.0/8.0*xi*xi)*eta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -1089.0/8.0*xi+1089.0/2.0*xi*xi-3267.0/8.0*xi*xi*xi+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+3.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+2.0*(891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi)*eta+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-81.0+243.0*xi+(891.0/2.0-2673.0/2.0*xi)*eta+(-729.0+2187.0*xi)*eta*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta*eta)*zeta+(405.0/2.0-1215.0/2.0*xi+(-4455.0/4.0+13365.0/4.0*xi)*eta+(3645.0/2.0-10935.0/2.0*xi)*eta*eta+(-3645.0/4.0+10935.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(-243.0/2.0+729.0/2.0*xi+(2673.0/4.0-8019.0/4.0*xi)*eta+(-2187.0/2.0+6561.0/2.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi+2.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi+2.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+6.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta+(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi+6.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 9.0-81.0*xi+243.0/2.0*xi*xi+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -45.0*xi+405.0/2.0*xi*xi-405.0/2.0*xi*xi*xi+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (81.0/2.0-243.0/2.0*xi+(-891.0/4.0+2673.0/4.0*xi)*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta*eta)*zeta+(-162.0+486.0*xi+(891.0-2673.0*xi)*eta+(-1458.0+4374.0*xi)*eta*eta+(729.0-2187.0*xi)*eta*eta*eta)*zeta*zeta+(243.0/2.0-729.0/2.0*xi+(-2673.0/4.0+8019.0/4.0*xi)*eta+(2187.0/2.0-6561.0/2.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0+891.0*xi-2673.0/2.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta+2.0*(18.0-162.0*xi+243.0*xi*xi+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0+891.0*xi-2673.0/2.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta+(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi+6.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta+2.0*(18.0-162.0*xi+243.0*xi*xi+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 36.0*xi-162.0*xi*xi+162.0*xi*xi*xi+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta*eta+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-45.0+81.0*xi+(495.0/2.0-891.0/2.0*xi)*eta+(-405.0+729.0*xi)*eta*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta*eta)*zeta+(405.0/2.0-729.0/2.0*xi+(-4455.0/4.0+8019.0/4.0*xi)*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(-405.0/2.0+729.0/2.0*xi+(4455.0/4.0-8019.0/4.0*xi)*eta+(-3645.0/2.0+6561.0/2.0*xi)*eta*eta+(3645.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 9.0-45.0*xi+81.0/2.0*xi*xi+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(81.0-405.0*xi+729.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(81.0-405.0*xi+729.0/2.0*xi*xi)*eta+3.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+6.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta)*zeta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 9.0-45.0*xi+81.0/2.0*xi*xi+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(81.0-405.0*xi+729.0/2.0*xi*xi)*eta*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -81.0*xi+405.0/2.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (36.0-81.0*xi+(-198.0+891.0/2.0*xi)*eta+(324.0-729.0*xi)*eta*eta+(-162.0+729.0/2.0*xi)*eta*eta*eta)*zeta+(-162.0+729.0/2.0*xi+(891.0-8019.0/4.0*xi)*eta+(-1458.0+6561.0/2.0*xi)*eta*eta+(729.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(162.0-729.0/2.0*xi+(-891.0+8019.0/4.0*xi)*eta+(1458.0-6561.0/2.0*xi)*eta*eta+(-729.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+3.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+6.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta)*zeta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 81.0/2.0*xi-162.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi+(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (162.0-243.0*xi+(-891.0+2673.0/2.0*xi)*eta+(1458.0-2187.0*xi)*eta*eta+(-729.0+2187.0/2.0*xi)*eta*eta*eta)*zeta+(-405.0+1215.0/2.0*xi+(4455.0/2.0-13365.0/4.0*xi)*eta+(-3645.0+10935.0/2.0*xi)*eta*eta+(3645.0/2.0-10935.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(243.0-729.0/2.0*xi+(-2673.0/2.0+8019.0/4.0*xi)*eta+(2187.0-6561.0/2.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi+2.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi+2.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+6.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta+(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi+6.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -45.0+495.0/2.0*xi-405.0*xi*xi+405.0/2.0*xi*xi*xi+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi+(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-81.0+243.0/2.0*xi+(891.0/2.0-2673.0/4.0*xi)*eta+(-729.0+2187.0/2.0*xi)*eta*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta*eta)*zeta+(324.0-486.0*xi+(-1782.0+2673.0*xi)*eta+(2916.0-4374.0*xi)*eta*eta+(-1458.0+2187.0*xi)*eta*eta*eta)*zeta*zeta+(-243.0+729.0/2.0*xi+(2673.0/2.0-8019.0/4.0*xi)*eta+(-2187.0+6561.0/2.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi+2.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta+2.0*(-99.0+324.0*xi-243.0*xi*xi+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi+2.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta+(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi+6.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta+2.0*(-99.0+324.0*xi-243.0*xi*xi+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 36.0-198.0*xi+324.0*xi*xi-162.0*xi*xi*xi+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta*eta+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi+(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-45.0+81.0*xi)*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta+(-405.0/2.0+729.0/2.0*xi)*eta*eta*eta+((495.0/2.0-891.0/2.0*xi)*eta+(-4455.0/4.0+8019.0/4.0*xi)*eta*eta+(4455.0/4.0-8019.0/4.0*xi)*eta*eta*eta)*zeta+((-405.0+729.0*xi)*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta+(-3645.0/2.0+6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((405.0/2.0-729.0/2.0*xi)*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta+(3645.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+3.0*(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta+(-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi+2.0*(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+3.0*(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -81.0*xi+405.0/2.0*xi*xi-243.0/2.0*xi*xi*xi+6.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(891.0/2.0*xi-4455.0/4.0*xi*xi+2673.0/4.0*xi*xi*xi+6.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta)*zeta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+3.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-99.0/2.0+495.0/2.0*xi-891.0/4.0*xi*xi)*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta+(-891.0/4.0+4455.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0*xi+495.0/4.0*xi*xi-297.0/4.0*xi*xi*xi+2.0*(891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta+3.0*(-891.0/4.0*xi+4455.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi)*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (36.0-81.0*xi)*eta+(-162.0+729.0/2.0*xi)*eta*eta+(162.0-729.0/2.0*xi)*eta*eta*eta+((-198.0+891.0/2.0*xi)*eta+(891.0-8019.0/4.0*xi)*eta*eta+(-891.0+8019.0/4.0*xi)*eta*eta*eta)*zeta+((324.0-729.0*xi)*eta+(-1458.0+6561.0/2.0*xi)*eta*eta+(1458.0-6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-162.0+729.0/2.0*xi)*eta+(729.0-6561.0/4.0*xi)*eta*eta+(-729.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta+(99.0/4.0-198.0*xi+891.0/4.0*xi*xi+2.0*(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 81.0/2.0*xi-162.0*xi*xi+243.0/2.0*xi*xi*xi+6.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(-891.0/4.0*xi+891.0*xi*xi-2673.0/4.0*xi*xi*xi+6.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta)*zeta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+3.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (99.0/4.0-198.0*xi+891.0/4.0*xi*xi)*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta*eta+(891.0/8.0-891.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0*xi-99.0*xi*xi+297.0/4.0*xi*xi*xi+2.0*(-891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta+3.0*(891.0/8.0*xi-891.0/2.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi)*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-81.0+243.0*xi)*eta+(729.0/2.0-2187.0/2.0*xi)*eta*eta+(-729.0/2.0+2187.0/2.0*xi)*eta*eta*eta)*zeta+((405.0/2.0-1215.0/2.0*xi)*eta+(-3645.0/4.0+10935.0/4.0*xi)*eta*eta+(3645.0/4.0-10935.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-243.0/2.0+729.0/2.0*xi)*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi+2.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi+2.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+6.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta+(405.0/2.0*xi-3645.0/4.0*xi*xi+3645.0/4.0*xi*xi*xi+6.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+2.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((81.0/2.0-243.0/2.0*xi)*eta+(-729.0/4.0+2187.0/4.0*xi)*eta*eta+(729.0/4.0-2187.0/4.0*xi)*eta*eta*eta)*zeta+((-162.0+486.0*xi)*eta+(729.0-2187.0*xi)*eta*eta+(-729.0+2187.0*xi)*eta*eta*eta)*zeta*zeta+((243.0/2.0-729.0/2.0*xi)*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta+(18.0-162.0*xi+243.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi+2.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta+2.0*((18.0-162.0*xi+243.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+3.0*(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta)*zeta+(18.0-162.0*xi+243.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi+2.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta)*zeta+(-162.0*xi+729.0*xi*xi-729.0*xi*xi*xi+6.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta*eta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta*eta*eta+2.0*((18.0-162.0*xi+243.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta*eta+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-45.0+81.0*xi)*eta+(405.0/2.0-729.0/2.0*xi)*eta*eta+(-405.0/2.0+729.0/2.0*xi)*eta*eta*eta)*zeta+((405.0/2.0-729.0/2.0*xi)*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta+(3645.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-405.0/2.0+729.0/2.0*xi)*eta+(3645.0/4.0-6561.0/4.0*xi)*eta*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (9.0-45.0*xi+81.0/2.0*xi*xi)*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (9.0-45.0*xi+81.0/2.0*xi*xi+2.0*(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+3.0*(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0*xi+405.0/2.0*xi*xi-243.0/2.0*xi*xi*xi+6.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta)*zeta+(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (9.0-45.0*xi+81.0/2.0*xi*xi)*eta+(-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0-405.0/2.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 9.0*xi-45.0/2.0*xi*xi+27.0/2.0*xi*xi*xi+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/2.0*xi-405.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((36.0-81.0*xi)*eta+(-162.0+729.0/2.0*xi)*eta*eta+(162.0-729.0/2.0*xi)*eta*eta*eta)*zeta+((-162.0+729.0/2.0*xi)*eta+(729.0-6561.0/4.0*xi)*eta*eta+(-729.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((162.0-729.0/2.0*xi)*eta+(-729.0+6561.0/4.0*xi)*eta*eta+(729.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi+2.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-9.0/2.0+36.0*xi-81.0/2.0*xi*xi)*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-9.0/2.0+36.0*xi-81.0/2.0*xi*xi+2.0*(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+3.0*(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi+2.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (81.0/2.0*xi-162.0*xi*xi+243.0/2.0*xi*xi*xi+6.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta)*zeta+(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-9.0/2.0+36.0*xi-81.0/2.0*xi*xi)*eta+(81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta*eta+(-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0+162.0*xi-729.0/4.0*xi*xi)*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -9.0/2.0*xi+18.0*xi*xi-27.0/2.0*xi*xi*xi+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/4.0*xi+81.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((162.0-243.0*xi)*eta+(-729.0+2187.0/2.0*xi)*eta*eta+(729.0-2187.0/2.0*xi)*eta*eta*eta)*zeta+((-405.0+1215.0/2.0*xi)*eta+(3645.0/2.0-10935.0/4.0*xi)*eta*eta+(-3645.0/2.0+10935.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((243.0-729.0/2.0*xi)*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi+2.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+3.0*(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi+2.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+6.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta+(405.0/2.0-4455.0/4.0*xi+3645.0/2.0*xi*xi-3645.0/4.0*xi*xi*xi+6.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+2.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-81.0+243.0/2.0*xi)*eta+(729.0/2.0-2187.0/4.0*xi)*eta*eta+(-729.0/2.0+2187.0/4.0*xi)*eta*eta*eta)*zeta+((324.0-486.0*xi)*eta+(-1458.0+2187.0*xi)*eta*eta+(1458.0-2187.0*xi)*eta*eta*eta)*zeta*zeta+((-243.0+729.0/2.0*xi)*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0+324.0*xi-243.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi+2.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta+2.0*((-99.0+324.0*xi-243.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+3.0*(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta)*zeta+(-99.0+324.0*xi-243.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi+2.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+6.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta)*zeta+(-162.0+891.0*xi-1458.0*xi*xi+729.0*xi*xi*xi+6.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta*eta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta*eta*eta+2.0*((-99.0+324.0*xi-243.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta*eta+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (162.0-243.0*xi)*eta+(-405.0+1215.0/2.0*xi)*eta*eta+(243.0-729.0/2.0*xi)*eta*eta*eta+((-891.0+2673.0/2.0*xi)*eta+(4455.0/2.0-13365.0/4.0*xi)*eta*eta+(-2673.0/2.0+8019.0/4.0*xi)*eta*eta*eta)*zeta+((1458.0-2187.0*xi)*eta+(-3645.0+10935.0/2.0*xi)*eta*eta+(2187.0-6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-729.0+2187.0/2.0*xi)*eta+(3645.0/2.0-10935.0/4.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta+3.0*(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta*eta+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta+(1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi+2.0*(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta+3.0*(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -45.0+495.0/2.0*xi-405.0*xi*xi+405.0/2.0*xi*xi*xi+6.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(495.0/2.0-5445.0/4.0*xi+4455.0/2.0*xi*xi-4455.0/4.0*xi*xi*xi+6.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta)*zeta+(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi+6.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(405.0/2.0-4455.0/4.0*xi+3645.0/2.0*xi*xi-3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (1089.0/4.0-891.0*xi+2673.0/4.0*xi*xi)*eta+(-5445.0/8.0+4455.0/2.0*xi-13365.0/8.0*xi*xi)*eta*eta+(3267.0/8.0-2673.0/2.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0+1089.0/4.0*xi-891.0/2.0*xi*xi+891.0/4.0*xi*xi*xi+2.0*(495.0/4.0-5445.0/8.0*xi+4455.0/4.0*xi*xi-4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0+3267.0/8.0*xi-2673.0/4.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta*eta+2.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-81.0+243.0/2.0*xi)*eta+(324.0-486.0*xi)*eta*eta+(-243.0+729.0/2.0*xi)*eta*eta*eta+((891.0/2.0-2673.0/4.0*xi)*eta+(-1782.0+2673.0*xi)*eta*eta+(2673.0/2.0-8019.0/4.0*xi)*eta*eta*eta)*zeta+((-729.0+2187.0/2.0*xi)*eta+(2916.0-4374.0*xi)*eta*eta+(-2187.0+6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((729.0/2.0-2187.0/4.0*xi)*eta+(-1458.0+2187.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta+3.0*(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta*eta+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta+(-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi+2.0*(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta+3.0*(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 36.0-198.0*xi+324.0*xi*xi-162.0*xi*xi*xi+6.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(-198.0+1089.0*xi-1782.0*xi*xi+891.0*xi*xi*xi+6.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta)*zeta+(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi+6.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-162.0+891.0*xi-1458.0*xi*xi+729.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-1089.0/8.0+891.0/2.0*xi-2673.0/8.0*xi*xi)*eta+(1089.0/2.0-1782.0*xi+2673.0/2.0*xi*xi)*eta*eta+(-3267.0/8.0+2673.0/2.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0-1089.0/8.0*xi+891.0/4.0*xi*xi-891.0/8.0*xi*xi*xi+2.0*(-99.0+1089.0/2.0*xi-891.0*xi*xi+891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0-3267.0/8.0*xi+2673.0/4.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta*eta+2.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-81.0+243.0*xi)*eta+(405.0/2.0-1215.0/2.0*xi)*eta*eta+(-243.0/2.0+729.0/2.0*xi)*eta*eta*eta+((891.0/2.0-2673.0/2.0*xi)*eta+(-4455.0/4.0+13365.0/4.0*xi)*eta*eta+(2673.0/4.0-8019.0/4.0*xi)*eta*eta*eta)*zeta+((-729.0+2187.0*xi)*eta+(3645.0/2.0-10935.0/2.0*xi)*eta*eta+(-2187.0/2.0+6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((729.0/2.0-2187.0/2.0*xi)*eta+(-3645.0/4.0+10935.0/4.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta+3.0*(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(81.0-729.0*xi+2187.0/2.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta*eta+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta+(-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi+2.0*(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta+3.0*(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta)*zeta+(81.0-729.0*xi+2187.0/2.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -45.0*xi+405.0/2.0*xi*xi-405.0/2.0*xi*xi*xi+6.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta+(495.0/2.0*xi-4455.0/4.0*xi*xi+4455.0/4.0*xi*xi*xi+6.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta)*zeta+(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi+6.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(405.0/2.0*xi-3645.0/4.0*xi*xi+3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-99.0/2.0+891.0/2.0*xi-2673.0/4.0*xi*xi)*eta+(495.0/4.0-4455.0/4.0*xi+13365.0/8.0*xi*xi)*eta*eta+(-297.0/4.0+2673.0/4.0*xi-8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -99.0/2.0*xi+891.0/4.0*xi*xi-891.0/4.0*xi*xi*xi+2.0*(495.0/4.0*xi-4455.0/8.0*xi*xi+4455.0/8.0*xi*xi*xi)*eta+3.0*(-297.0/4.0*xi+2673.0/8.0*xi*xi-2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta*eta+2.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (81.0/2.0-243.0/2.0*xi)*eta+(-162.0+486.0*xi)*eta*eta+(243.0/2.0-729.0/2.0*xi)*eta*eta*eta+((-891.0/4.0+2673.0/4.0*xi)*eta+(891.0-2673.0*xi)*eta*eta+(-2673.0/4.0+8019.0/4.0*xi)*eta*eta*eta)*zeta+((729.0/2.0-2187.0/2.0*xi)*eta+(-1458.0+4374.0*xi)*eta*eta+(2187.0/2.0-6561.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-729.0/4.0+2187.0/4.0*xi)*eta+(729.0-2187.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta+3.0*(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta*eta+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta+(99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi+2.0*(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta+3.0*(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 36.0*xi-162.0*xi*xi+162.0*xi*xi*xi+6.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta+(-198.0*xi+891.0*xi*xi-891.0*xi*xi*xi+6.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta)*zeta+(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi+6.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-162.0*xi+729.0*xi*xi-729.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (99.0/4.0-891.0/4.0*xi+2673.0/8.0*xi*xi)*eta+(-99.0+891.0*xi-2673.0/2.0*xi*xi)*eta*eta+(297.0/4.0-2673.0/4.0*xi+8019.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 99.0/4.0*xi-891.0/8.0*xi*xi+891.0/8.0*xi*xi*xi+2.0*(-99.0*xi+891.0/2.0*xi*xi-891.0/2.0*xi*xi*xi)*eta+3.0*(297.0/4.0*xi-2673.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta*eta+2.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-81.0+243.0*xi)*eta+(405.0/2.0-1215.0/2.0*xi)*eta*eta+(-243.0/2.0+729.0/2.0*xi)*eta*eta*eta)*zeta+((729.0/2.0-2187.0/2.0*xi)*eta+(-3645.0/4.0+10935.0/4.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-729.0/2.0+2187.0/2.0*xi)*eta+(3645.0/4.0-10935.0/4.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi+2.0*(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta*eta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (9.0-81.0*xi+243.0/2.0*xi*xi+2.0*(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta+3.0*(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi+2.0*(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-45.0*xi+405.0/2.0*xi*xi-405.0/2.0*xi*xi*xi+6.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta)*zeta+(405.0/2.0*xi-3645.0/4.0*xi*xi+3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (9.0-81.0*xi+243.0/2.0*xi*xi)*eta+(-45.0/2.0+405.0/2.0*xi-1215.0/4.0*xi*xi)*eta*eta+(27.0/2.0-243.0/2.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((81.0/2.0-729.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-405.0/4.0+3645.0/4.0*xi-10935.0/8.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 9.0*xi-81.0/2.0*xi*xi+81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0*xi+405.0/4.0*xi*xi-405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0*xi-243.0/4.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+2.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/2.0*xi-729.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-405.0/4.0*xi+3645.0/8.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((81.0/2.0-243.0/2.0*xi)*eta+(-162.0+486.0*xi)*eta*eta+(243.0/2.0-729.0/2.0*xi)*eta*eta*eta)*zeta+((-729.0/4.0+2187.0/4.0*xi)*eta+(729.0-2187.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((729.0/4.0-2187.0/4.0*xi)*eta+(-729.0+2187.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(18.0-162.0*xi+243.0*xi*xi)*eta*eta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi+2.0*(18.0-162.0*xi+243.0*xi*xi)*eta+3.0*(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi+2.0*(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (36.0*xi-162.0*xi*xi+162.0*xi*xi*xi+6.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta)*zeta+(-162.0*xi+729.0*xi*xi-729.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-9.0/2.0+81.0/2.0*xi-243.0/4.0*xi*xi)*eta+(18.0-162.0*xi+243.0*xi*xi)*eta*eta+(-27.0/2.0+243.0/2.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-81.0/4.0+729.0/4.0*xi-2187.0/8.0*xi*xi)*eta+(81.0-729.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -9.0/2.0*xi+81.0/4.0*xi*xi-81.0/4.0*xi*xi*xi+2.0*(18.0*xi-81.0*xi*xi+81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0*xi+243.0/4.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+2.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/4.0*xi+729.0/8.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+(81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((162.0-243.0*xi)*eta+(-405.0+1215.0/2.0*xi)*eta*eta+(243.0-729.0/2.0*xi)*eta*eta*eta)*zeta+((-729.0+2187.0/2.0*xi)*eta+(3645.0/2.0-10935.0/4.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((729.0-2187.0/2.0*xi)*eta+(-3645.0/2.0+10935.0/4.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi+2.0*(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta*eta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi+2.0*(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta+3.0*(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta)*zeta+(891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi+2.0*(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-45.0+495.0/2.0*xi-405.0*xi*xi+405.0/2.0*xi*xi*xi+6.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta)*zeta+(405.0/2.0-4455.0/4.0*xi+3645.0/2.0*xi*xi-3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-99.0/2.0+162.0*xi-243.0/2.0*xi*xi)*eta+(495.0/4.0-405.0*xi+1215.0/4.0*xi*xi)*eta*eta+(-297.0/4.0+243.0*xi-729.0/4.0*xi*xi)*eta*eta*eta+2.0*((891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-891.0/4.0+729.0*xi-2187.0/4.0*xi*xi)*eta+(4455.0/8.0-3645.0/2.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 9.0-99.0/2.0*xi+81.0*xi*xi-81.0/2.0*xi*xi*xi+2.0*(-45.0/2.0+495.0/4.0*xi-405.0/2.0*xi*xi+405.0/4.0*xi*xi*xi)*eta+3.0*(27.0/2.0-297.0/4.0*xi+243.0/2.0*xi*xi-243.0/4.0*xi*xi*xi)*eta*eta+2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta*eta+2.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((81.0/2.0-891.0/4.0*xi+729.0/2.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(-405.0/4.0+4455.0/8.0*xi-3645.0/4.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta*eta+(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-81.0+243.0/2.0*xi)*eta+(324.0-486.0*xi)*eta*eta+(-243.0+729.0/2.0*xi)*eta*eta*eta)*zeta+((729.0/2.0-2187.0/4.0*xi)*eta+(-1458.0+2187.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-729.0/2.0+2187.0/4.0*xi)*eta+(1458.0-2187.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-99.0+324.0*xi-243.0*xi*xi)*eta*eta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi+2.0*(-99.0+324.0*xi-243.0*xi*xi)*eta+3.0*(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta)*zeta+(-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi+2.0*(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (36.0-198.0*xi+324.0*xi*xi-162.0*xi*xi*xi+6.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta)*zeta+(-162.0+891.0*xi-1458.0*xi*xi+729.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (99.0/4.0-81.0*xi+243.0/4.0*xi*xi)*eta+(-99.0+324.0*xi-243.0*xi*xi)*eta*eta+(297.0/4.0-243.0*xi+729.0/4.0*xi*xi)*eta*eta*eta+2.0*((-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((891.0/8.0-729.0/2.0*xi+2187.0/8.0*xi*xi)*eta+(-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -9.0/2.0+99.0/4.0*xi-81.0/2.0*xi*xi+81.0/4.0*xi*xi*xi+2.0*(18.0-99.0*xi+162.0*xi*xi-81.0*xi*xi*xi)*eta+3.0*(-27.0/2.0+297.0/4.0*xi-243.0/2.0*xi*xi+243.0/4.0*xi*xi*xi)*eta*eta+2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi)*eta+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta*eta+2.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-81.0/4.0+891.0/8.0*xi-729.0/4.0*xi*xi+729.0/8.0*xi*xi*xi)*eta+(81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi)*eta*eta+(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-405.0+729.0*xi+(4455.0/2.0-8019.0/2.0*xi)*eta+(-3645.0+6561.0*xi)*eta*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta*eta)*zeta+(2025.0/2.0-3645.0/2.0*xi+(-22275.0/4.0+40095.0/4.0*xi)*eta+(18225.0/2.0-32805.0/2.0*xi)*eta*eta+(-18225.0/4.0+32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(-1215.0/2.0+2187.0/2.0*xi+(13365.0/4.0-24057.0/4.0*xi)*eta+(-10935.0/2.0+19683.0/2.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi+2.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi+2.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+6.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta+(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi+6.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 81.0-405.0*xi+729.0/2.0*xi*xi+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -405.0*xi+2025.0/2.0*xi*xi-1215.0/2.0*xi*xi*xi+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta*eta+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (324.0-729.0*xi+(-1782.0+8019.0/2.0*xi)*eta+(2916.0-6561.0*xi)*eta*eta+(-1458.0+6561.0/2.0*xi)*eta*eta*eta)*zeta+(-810.0+3645.0/2.0*xi+(4455.0-40095.0/4.0*xi)*eta+(-7290.0+32805.0/2.0*xi)*eta*eta+(3645.0-32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+(486.0-2187.0/2.0*xi+(-2673.0+24057.0/4.0*xi)*eta+(4374.0-19683.0/2.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi+2.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi+2.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+6.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta+(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi+6.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 405.0/2.0*xi-810.0*xi*xi+1215.0/2.0*xi*xi*xi+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi+(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (405.0/2.0-729.0/2.0*xi+(-4455.0/4.0+8019.0/4.0*xi)*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta+(-810.0+1458.0*xi+(4455.0-8019.0*xi)*eta+(-7290.0+13122.0*xi)*eta*eta+(3645.0-6561.0*xi)*eta*eta*eta)*zeta*zeta+(1215.0/2.0-2187.0/2.0*xi+(-13365.0/4.0+24057.0/4.0*xi)*eta+(10935.0/2.0-19683.0/2.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0+4455.0*xi-8019.0/2.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi+2.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*(162.0-810.0*xi+729.0*xi*xi+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0+4455.0*xi-8019.0/2.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi+2.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta+(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi+6.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*(162.0-810.0*xi+729.0*xi*xi+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 324.0*xi-810.0*xi*xi+486.0*xi*xi*xi+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta*eta+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-162.0+729.0/2.0*xi+(891.0-8019.0/4.0*xi)*eta+(-1458.0+6561.0/2.0*xi)*eta*eta+(729.0-6561.0/4.0*xi)*eta*eta*eta)*zeta+(648.0-1458.0*xi+(-3564.0+8019.0*xi)*eta+(5832.0-13122.0*xi)*eta*eta+(-2916.0+6561.0*xi)*eta*eta*eta)*zeta*zeta+(-486.0+2187.0/2.0*xi+(2673.0-24057.0/4.0*xi)*eta+(-4374.0+19683.0/2.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi+2.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*(-81.0+648.0*xi-729.0*xi*xi+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi+2.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta+(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi+6.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*(-81.0+648.0*xi-729.0*xi*xi+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi+2.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = -162.0*xi+648.0*xi*xi-486.0*xi*xi*xi+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta*eta+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi+(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-405.0+729.0*xi)*eta+(3645.0/2.0-6561.0/2.0*xi)*eta*eta+(-3645.0/2.0+6561.0/2.0*xi)*eta*eta*eta)*zeta+((2025.0/2.0-3645.0/2.0*xi)*eta+(-18225.0/4.0+32805.0/4.0*xi)*eta*eta+(18225.0/4.0-32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-1215.0/2.0+2187.0/2.0*xi)*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi+2.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+3.0*(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi+2.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+6.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta+(3645.0/2.0*xi-18225.0/4.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((324.0-729.0*xi)*eta+(-1458.0+6561.0/2.0*xi)*eta*eta+(1458.0-6561.0/2.0*xi)*eta*eta*eta)*zeta+((-810.0+3645.0/2.0*xi)*eta+(3645.0-32805.0/4.0*xi)*eta*eta+(-3645.0+32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((486.0-2187.0/2.0*xi)*eta+(-2187.0+19683.0/4.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi+2.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+3.0*(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi+2.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+6.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta+(-3645.0/4.0*xi+3645.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta*eta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+2.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((405.0/2.0-729.0/2.0*xi)*eta+(-3645.0/4.0+6561.0/4.0*xi)*eta*eta+(3645.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta+((-810.0+1458.0*xi)*eta+(3645.0-6561.0*xi)*eta*eta+(-3645.0+6561.0*xi)*eta*eta*eta)*zeta*zeta+((1215.0/2.0-2187.0/2.0*xi)*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(162.0-810.0*xi+729.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((162.0-810.0*xi+729.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(162.0-810.0*xi+729.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+6.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta+(-1458.0*xi+3645.0*xi*xi-2187.0*xi*xi*xi+6.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((162.0-810.0*xi+729.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-162.0+729.0/2.0*xi)*eta+(729.0-6561.0/4.0*xi)*eta*eta+(-729.0+6561.0/4.0*xi)*eta*eta*eta)*zeta+((648.0-1458.0*xi)*eta+(-2916.0+6561.0*xi)*eta*eta+(2916.0-6561.0*xi)*eta*eta*eta)*zeta*zeta+((-486.0+2187.0/2.0*xi)*eta+(2187.0-19683.0/4.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0+648.0*xi-729.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi+2.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0+648.0*xi-729.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+3.0*(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0+648.0*xi-729.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi+2.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+6.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta+(729.0*xi-2916.0*xi*xi+2187.0*xi*xi*xi+6.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta*eta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0+648.0*xi-729.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-405.0+729.0*xi)*eta+(2025.0/2.0-3645.0/2.0*xi)*eta*eta+(-1215.0/2.0+2187.0/2.0*xi)*eta*eta*eta+((4455.0/2.0-8019.0/2.0*xi)*eta+(-22275.0/4.0+40095.0/4.0*xi)*eta*eta+(13365.0/4.0-24057.0/4.0*xi)*eta*eta*eta)*zeta+((-3645.0+6561.0*xi)*eta+(18225.0/2.0-32805.0/2.0*xi)*eta*eta+(-10935.0/2.0+19683.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((3645.0/2.0-6561.0/2.0*xi)*eta+(-18225.0/4.0+32805.0/4.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta+3.0*(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta*eta)*zeta+(729.0-3645.0*xi+6561.0/2.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta*eta+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi+2.0*(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta+3.0*(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta*eta)*zeta+(729.0-3645.0*xi+6561.0/2.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -405.0*xi+2025.0/2.0*xi*xi-1215.0/2.0*xi*xi*xi+6.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(4455.0/2.0*xi-22275.0/4.0*xi*xi+13365.0/4.0*xi*xi*xi+6.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta)*zeta+(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi+6.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(3645.0/2.0*xi-18225.0/4.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta+3.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-891.0/2.0+4455.0/2.0*xi-8019.0/4.0*xi*xi)*eta+(4455.0/4.0-22275.0/4.0*xi+40095.0/8.0*xi*xi)*eta*eta+(-2673.0/4.0+13365.0/4.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -891.0/2.0*xi+4455.0/4.0*xi*xi-2673.0/4.0*xi*xi*xi+2.0*(4455.0/4.0*xi-22275.0/8.0*xi*xi+13365.0/8.0*xi*xi*xi)*eta+3.0*(-2673.0/4.0*xi+13365.0/8.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta*eta+2.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (324.0-729.0*xi)*eta+(-810.0+3645.0/2.0*xi)*eta*eta+(486.0-2187.0/2.0*xi)*eta*eta*eta+((-1782.0+8019.0/2.0*xi)*eta+(4455.0-40095.0/4.0*xi)*eta*eta+(-2673.0+24057.0/4.0*xi)*eta*eta*eta)*zeta+((2916.0-6561.0*xi)*eta+(-7290.0+32805.0/2.0*xi)*eta*eta+(4374.0-19683.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-1458.0+6561.0/2.0*xi)*eta+(3645.0-32805.0/4.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi+2.0*(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 405.0/2.0*xi-810.0*xi*xi+1215.0/2.0*xi*xi*xi+6.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(-4455.0/4.0*xi+4455.0*xi*xi-13365.0/4.0*xi*xi*xi+6.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta)*zeta+(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-3645.0/4.0*xi+3645.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta+3.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (891.0/4.0-1782.0*xi+8019.0/4.0*xi*xi)*eta+(-4455.0/8.0+4455.0*xi-40095.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2673.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 891.0/4.0*xi-891.0*xi*xi+2673.0/4.0*xi*xi*xi+2.0*(-4455.0/8.0*xi+4455.0/2.0*xi*xi-13365.0/8.0*xi*xi*xi)*eta+3.0*(2673.0/8.0*xi-2673.0/2.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta*eta+2.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (405.0/2.0-729.0/2.0*xi)*eta+(-810.0+1458.0*xi)*eta*eta+(1215.0/2.0-2187.0/2.0*xi)*eta*eta*eta+((-4455.0/4.0+8019.0/4.0*xi)*eta+(4455.0-8019.0*xi)*eta*eta+(-13365.0/4.0+24057.0/4.0*xi)*eta*eta*eta)*zeta+((3645.0/2.0-6561.0/2.0*xi)*eta+(-7290.0+13122.0*xi)*eta*eta+(10935.0/2.0-19683.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((-3645.0/4.0+6561.0/4.0*xi)*eta+(3645.0-6561.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta+3.0*(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta*eta+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = -81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta+(891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi+2.0*(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta+3.0*(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = 324.0*xi-810.0*xi*xi+486.0*xi*xi*xi+6.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta+(-1782.0*xi+4455.0*xi*xi-2673.0*xi*xi*xi+6.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta)*zeta+(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi+6.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(-1458.0*xi+3645.0*xi*xi-2187.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta+3.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (891.0/4.0-4455.0/4.0*xi+8019.0/8.0*xi*xi)*eta+(-891.0+4455.0*xi-8019.0/2.0*xi*xi)*eta*eta+(2673.0/4.0-13365.0/4.0*xi+24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 891.0/4.0*xi-4455.0/8.0*xi*xi+2673.0/8.0*xi*xi*xi+2.0*(-891.0*xi+4455.0/2.0*xi*xi-2673.0/2.0*xi*xi*xi)*eta+3.0*(2673.0/4.0*xi-13365.0/8.0*xi*xi+8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta*eta+2.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = (-162.0+729.0/2.0*xi)*eta+(648.0-1458.0*xi)*eta*eta+(-486.0+2187.0/2.0*xi)*eta*eta*eta+((891.0-8019.0/4.0*xi)*eta+(-3564.0+8019.0*xi)*eta*eta+(2673.0-24057.0/4.0*xi)*eta*eta*eta)*zeta+((-1458.0+6561.0/2.0*xi)*eta+(5832.0-13122.0*xi)*eta*eta+(-4374.0+19683.0/2.0*xi)*eta*eta*eta)*zeta*zeta+((729.0-6561.0/4.0*xi)*eta+(-2916.0+6561.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = 81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta+(-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi+2.0*(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = -162.0*xi+648.0*xi*xi-486.0*xi*xi*xi+6.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta+(891.0*xi-3564.0*xi*xi+2673.0*xi*xi*xi+6.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta)*zeta+(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi+6.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta)*zeta*zeta+(729.0*xi-2916.0*xi*xi+2187.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta+3.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-891.0/8.0+891.0*xi-8019.0/8.0*xi*xi)*eta+(891.0/2.0-3564.0*xi+8019.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2673.0*xi-24057.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -891.0/8.0*xi+891.0/2.0*xi*xi-2673.0/8.0*xi*xi*xi+2.0*(891.0/2.0*xi-1782.0*xi*xi+2673.0/2.0*xi*xi*xi)*eta+3.0*(-2673.0/8.0*xi+2673.0/2.0*xi*xi-8019.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta*eta+2.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta*eta+6.0*((-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-729.0+2187.0*xi)*eta+(3645.0/2.0-10935.0/2.0*xi)*eta*eta+(-2187.0/2.0+6561.0/2.0*xi)*eta*eta*eta)*zeta+((3645.0/2.0-10935.0/2.0*xi)*eta+(-18225.0/4.0+54675.0/4.0*xi)*eta*eta+(10935.0/4.0-32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/2.0+6561.0/2.0*xi)*eta+(10935.0/4.0-32805.0/4.0*xi)*eta*eta+(-6561.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0-729.0*xi+2187.0/2.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi+2.0*(2025.0/4.0-18225.0/4.0*xi+54675.0/8.0*xi*xi)*eta+3.0*(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi+2.0*(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+(2025.0/4.0-18225.0/4.0*xi+54675.0/8.0*xi*xi)*eta*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0-729.0*xi+2187.0/2.0*xi*xi+2.0*(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi+2.0*(2025.0/4.0-18225.0/4.0*xi+54675.0/8.0*xi*xi)*eta+3.0*(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi+2.0*(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi+6.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta+(2025.0/2.0*xi-18225.0/4.0*xi*xi+18225.0/4.0*xi*xi*xi+6.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-1215.0/2.0*xi+10935.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0*xi-18225.0/8.0*xi*xi+18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0-729.0*xi+2187.0/2.0*xi*xi)*eta+(-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta*eta+(243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-405.0/2.0+3645.0/2.0*xi-10935.0/4.0*xi*xi)*eta+(2025.0/4.0-18225.0/4.0*xi+54675.0/8.0*xi*xi)*eta*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/2.0-2187.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-1215.0/4.0+10935.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0*xi-729.0/2.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0*xi-18225.0/8.0*xi*xi+18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-405.0/2.0*xi+3645.0/4.0*xi*xi-3645.0/4.0*xi*xi*xi)*eta+2.0*(2025.0/4.0*xi-18225.0/8.0*xi*xi+18225.0/8.0*xi*xi*xi)*eta*eta+2.0*(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/2.0*xi-2187.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-1215.0/4.0*xi+10935.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((729.0/2.0-2187.0/2.0*xi)*eta+(-1458.0+4374.0*xi)*eta*eta+(2187.0/2.0-6561.0/2.0*xi)*eta*eta*eta)*zeta+((-3645.0/4.0+10935.0/4.0*xi)*eta+(3645.0-10935.0*xi)*eta*eta+(-10935.0/4.0+32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((2187.0/4.0-6561.0/4.0*xi)*eta+(-2187.0+6561.0*xi)*eta*eta+(6561.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi+2.0*(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta+3.0*(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi+2.0*(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(162.0-1458.0*xi+2187.0*xi*xi)*eta+3.0*(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi+2.0*(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta+3.0*(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi+2.0*(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi+6.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta+(-810.0*xi+3645.0*xi*xi-3645.0*xi*xi*xi+6.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(486.0*xi-2187.0*xi*xi+2187.0*xi*xi*xi+6.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(162.0-1458.0*xi+2187.0*xi*xi)*eta*eta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta*eta+2.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((729.0/2.0-2187.0/2.0*xi)*eta+(-3645.0/4.0+10935.0/4.0*xi)*eta*eta+(2187.0/4.0-6561.0/4.0*xi)*eta*eta*eta)*zeta+((-1458.0+4374.0*xi)*eta+(3645.0-10935.0*xi)*eta*eta+(-2187.0+6561.0*xi)*eta*eta*eta)*zeta*zeta+((2187.0/2.0-6561.0/2.0*xi)*eta+(-10935.0/4.0+32805.0/4.0*xi)*eta*eta+(6561.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(162.0-1458.0*xi+2187.0*xi*xi+2.0*(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta+3.0*(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((162.0-1458.0*xi+2187.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi+2.0*(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta+3.0*(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(162.0-1458.0*xi+2187.0*xi*xi+2.0*(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta+3.0*(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (405.0/2.0*xi-3645.0/4.0*xi*xi+3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta+(-810.0*xi+3645.0*xi*xi-3645.0*xi*xi*xi+6.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(1215.0/2.0*xi-10935.0/4.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+729.0/2.0*xi-2187.0/4.0*xi*xi)*eta+(405.0/4.0-3645.0/4.0*xi+10935.0/8.0*xi*xi)*eta*eta+(-243.0/4.0+2187.0/4.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((162.0-1458.0*xi+2187.0*xi*xi)*eta+(-405.0+3645.0*xi-10935.0/2.0*xi*xi)*eta*eta+(243.0-2187.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-243.0/2.0+2187.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1215.0/4.0-10935.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-729.0/4.0+6561.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+729.0/4.0*xi*xi-729.0/4.0*xi*xi*xi+2.0*(405.0/4.0*xi-3645.0/8.0*xi*xi+3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+2187.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(162.0*xi-729.0*xi*xi+729.0*xi*xi*xi)*eta+2.0*(-405.0*xi+3645.0/2.0*xi*xi-3645.0/2.0*xi*xi*xi)*eta*eta+2.0*(243.0*xi-2187.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/2.0*xi+2187.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(1215.0/4.0*xi-10935.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0*xi+6561.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-729.0/4.0+2187.0/4.0*xi)*eta+(729.0-2187.0*xi)*eta*eta+(-2187.0/4.0+6561.0/4.0*xi)*eta*eta*eta)*zeta+((729.0-2187.0*xi)*eta+(-2916.0+8748.0*xi)*eta*eta+(2187.0-6561.0*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/4.0+6561.0/4.0*xi)*eta+(2187.0-6561.0*xi)*eta*eta+(-6561.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0+729.0*xi-2187.0/2.0*xi*xi+2.0*(324.0-2916.0*xi+4374.0*xi*xi)*eta+3.0*(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+(324.0-2916.0*xi+4374.0*xi*xi)*eta*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi+2.0*(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+3.0*(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-81.0+729.0*xi-2187.0/2.0*xi*xi+2.0*(324.0-2916.0*xi+4374.0*xi*xi)*eta+3.0*(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-162.0*xi+729.0*xi*xi-729.0*xi*xi*xi+6.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta+(648.0*xi-2916.0*xi*xi+2916.0*xi*xi*xi+6.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-486.0*xi+2187.0*xi*xi-2187.0*xi*xi*xi+6.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi)*eta+3.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0/4.0-729.0/4.0*xi+2187.0/8.0*xi*xi)*eta+(-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta*eta+(243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-81.0+729.0*xi-2187.0/2.0*xi*xi)*eta+(324.0-2916.0*xi+4374.0*xi*xi)*eta*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((243.0/4.0-2187.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-243.0+2187.0*xi-6561.0/2.0*xi*xi)*eta*eta+(729.0/4.0-6561.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0/4.0*xi-729.0/8.0*xi*xi+729.0/8.0*xi*xi*xi+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi)*eta+3.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0*xi+729.0/2.0*xi*xi-729.0/2.0*xi*xi*xi)*eta+2.0*(324.0*xi-1458.0*xi*xi+1458.0*xi*xi*xi)*eta*eta+2.0*(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/4.0*xi-2187.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-243.0*xi+2187.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0*xi-6561.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-405.0+729.0*xi)*eta+(2025.0/2.0-3645.0/2.0*xi)*eta*eta+(-1215.0/2.0+2187.0/2.0*xi)*eta*eta*eta)*zeta+((3645.0/2.0-6561.0/2.0*xi)*eta+(-18225.0/4.0+32805.0/4.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-3645.0/2.0+6561.0/2.0*xi)*eta+(18225.0/4.0-32805.0/4.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta*eta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0-405.0*xi+729.0/2.0*xi*xi+2.0*(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta+3.0*(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-405.0*xi+2025.0/2.0*xi*xi-1215.0/2.0*xi*xi*xi+6.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta+(3645.0/2.0*xi-18225.0/4.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0-405.0*xi+729.0/2.0*xi*xi)*eta+(-405.0/2.0+2025.0/2.0*xi-3645.0/4.0*xi*xi)*eta*eta+(243.0/2.0-1215.0/2.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/2.0-3645.0/2.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/4.0+18225.0/4.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0*xi-405.0/2.0*xi*xi+243.0/2.0*xi*xi*xi+2.0*(-405.0/2.0*xi+2025.0/4.0*xi*xi-1215.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0*xi-1215.0/4.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+2.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((729.0/2.0*xi-3645.0/4.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(-3645.0/4.0*xi+18225.0/8.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((324.0-729.0*xi)*eta+(-810.0+3645.0/2.0*xi)*eta*eta+(486.0-2187.0/2.0*xi)*eta*eta*eta)*zeta+((-1458.0+6561.0/2.0*xi)*eta+(3645.0-32805.0/4.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((1458.0-6561.0/2.0*xi)*eta+(-3645.0+32805.0/4.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi+2.0*(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta+3.0*(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (405.0/2.0*xi-810.0*xi*xi+1215.0/2.0*xi*xi*xi+6.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta+(-3645.0/4.0*xi+3645.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+324.0*xi-729.0/2.0*xi*xi)*eta+(405.0/4.0-810.0*xi+3645.0/4.0*xi*xi)*eta*eta+(-243.0/4.0+486.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0+1458.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/8.0-3645.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+162.0*xi*xi-243.0/2.0*xi*xi*xi+2.0*(405.0/4.0*xi-405.0*xi*xi+1215.0/4.0*xi*xi*xi)*eta+3.0*(-243.0/4.0*xi+243.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+2.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-729.0/4.0*xi+729.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(3645.0/8.0*xi-3645.0/2.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((405.0/2.0-729.0/2.0*xi)*eta+(-810.0+1458.0*xi)*eta*eta+(1215.0/2.0-2187.0/2.0*xi)*eta*eta*eta)*zeta+((-3645.0/4.0+6561.0/4.0*xi)*eta+(3645.0-6561.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((3645.0/4.0-6561.0/4.0*xi)*eta+(-3645.0+6561.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(162.0-810.0*xi+729.0*xi*xi)*eta*eta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi+2.0*(162.0-810.0*xi+729.0*xi*xi)*eta+3.0*(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta)*zeta+(729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi+2.0*(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (324.0*xi-810.0*xi*xi+486.0*xi*xi*xi+6.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta)*zeta+(-1458.0*xi+3645.0*xi*xi-2187.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-81.0/2.0+405.0/2.0*xi-729.0/4.0*xi*xi)*eta+(162.0-810.0*xi+729.0*xi*xi)*eta*eta+(-243.0/2.0+1215.0/2.0*xi-2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-729.0/4.0+3645.0/4.0*xi-6561.0/8.0*xi*xi)*eta+(729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0*xi+405.0/4.0*xi*xi-243.0/4.0*xi*xi*xi+2.0*(162.0*xi-405.0*xi*xi+243.0*xi*xi*xi)*eta+3.0*(-243.0/2.0*xi+1215.0/4.0*xi*xi-729.0/4.0*xi*xi*xi)*eta*eta+2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-729.0/4.0*xi+3645.0/8.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-162.0+729.0/2.0*xi)*eta+(648.0-1458.0*xi)*eta*eta+(-486.0+2187.0/2.0*xi)*eta*eta*eta)*zeta+((729.0-6561.0/4.0*xi)*eta+(-2916.0+6561.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-729.0+6561.0/4.0*xi)*eta+(2916.0-6561.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-81.0+648.0*xi-729.0*xi*xi)*eta*eta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi+2.0*(-81.0+648.0*xi-729.0*xi*xi)*eta+3.0*(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta)*zeta+(-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(729.0/8.0-729.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-162.0*xi+648.0*xi*xi-486.0*xi*xi*xi+6.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta)*zeta+(729.0*xi-2916.0*xi*xi+2187.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (81.0/4.0-162.0*xi+729.0/4.0*xi*xi)*eta+(-81.0+648.0*xi-729.0*xi*xi)*eta*eta+(243.0/4.0-486.0*xi+2187.0/4.0*xi*xi)*eta*eta*eta+2.0*((-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((729.0/8.0-729.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0/4.0*xi-81.0*xi*xi+243.0/4.0*xi*xi*xi+2.0*(-81.0*xi+324.0*xi*xi-243.0*xi*xi*xi)*eta+3.0*(243.0/4.0*xi-243.0*xi*xi+729.0/4.0*xi*xi*xi)*eta*eta+2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+2.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((729.0/8.0*xi-729.0/2.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(-729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((1458.0-2187.0*xi)*eta+(-3645.0+10935.0/2.0*xi)*eta*eta+(2187.0-6561.0/2.0*xi)*eta*eta*eta)*zeta+((-3645.0+10935.0/2.0*xi)*eta+(18225.0/2.0-54675.0/4.0*xi)*eta*eta+(-10935.0/2.0+32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((2187.0-6561.0/2.0*xi)*eta+(-10935.0/2.0+32805.0/4.0*xi)*eta*eta+(6561.0/2.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi+2.0*(-22275.0/8.0+18225.0/2.0*xi-54675.0/8.0*xi*xi)*eta+3.0*(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi+2.0*(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+(-22275.0/8.0+18225.0/2.0*xi-54675.0/8.0*xi*xi)*eta*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi+2.0*(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+3.0*(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta)*zeta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi+2.0*(-22275.0/8.0+18225.0/2.0*xi-54675.0/8.0*xi*xi)*eta+3.0*(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi+2.0*(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi+6.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta)*zeta+(2025.0/2.0-22275.0/4.0*xi+18225.0/2.0*xi*xi-18225.0/4.0*xi*xi*xi+6.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-1215.0/2.0+13365.0/4.0*xi-10935.0/2.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0-22275.0/8.0*xi+18225.0/4.0*xi*xi-18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-891.0/2.0+1458.0*xi-2187.0/2.0*xi*xi)*eta+(4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta*eta+(-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((4455.0/4.0-3645.0*xi+10935.0/4.0*xi*xi)*eta+(-22275.0/8.0+18225.0/2.0*xi-54675.0/8.0*xi*xi)*eta*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2673.0/4.0+2187.0*xi-6561.0/4.0*xi*xi)*eta+(13365.0/8.0-10935.0/2.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0-891.0/2.0*xi+729.0*xi*xi-729.0/2.0*xi*xi*xi+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi+2.0*(2025.0/4.0-22275.0/8.0*xi+18225.0/4.0*xi*xi-18225.0/8.0*xi*xi*xi)*eta+3.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-405.0/2.0+4455.0/4.0*xi-3645.0/2.0*xi*xi+3645.0/4.0*xi*xi*xi)*eta+2.0*(2025.0/4.0-22275.0/8.0*xi+18225.0/4.0*xi*xi-18225.0/8.0*xi*xi*xi)*eta*eta+2.0*(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/2.0-2673.0/4.0*xi+2187.0/2.0*xi*xi-2187.0/4.0*xi*xi*xi)*eta+(-1215.0/4.0+13365.0/8.0*xi-10935.0/4.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta*eta+(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-729.0+2187.0/2.0*xi)*eta+(2916.0-4374.0*xi)*eta*eta+(-2187.0+6561.0/2.0*xi)*eta*eta*eta)*zeta+((3645.0/2.0-10935.0/4.0*xi)*eta+(-7290.0+10935.0*xi)*eta*eta+(10935.0/2.0-32805.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-2187.0/2.0+6561.0/4.0*xi)*eta+(4374.0-6561.0*xi)*eta*eta+(-6561.0/2.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi+2.0*(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta+3.0*(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi+2.0*(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-891.0+2916.0*xi-2187.0*xi*xi)*eta+3.0*(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta)*zeta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi+2.0*(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta+3.0*(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi+2.0*(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi+6.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta)*zeta+(-810.0+4455.0*xi-7290.0*xi*xi+3645.0*xi*xi*xi+6.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(486.0-2673.0*xi+4374.0*xi*xi-2187.0*xi*xi*xi+6.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-891.0+2916.0*xi-2187.0*xi*xi)*eta*eta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta*eta*eta+2.0*((-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta*eta+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta*eta+2.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta+(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta+(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-729.0+2187.0/2.0*xi)*eta+(3645.0/2.0-10935.0/4.0*xi)*eta*eta+(-2187.0/2.0+6561.0/4.0*xi)*eta*eta*eta)*zeta+((2916.0-4374.0*xi)*eta+(-7290.0+10935.0*xi)*eta*eta+(4374.0-6561.0*xi)*eta*eta*eta)*zeta*zeta+((-2187.0+6561.0/2.0*xi)*eta+(10935.0/2.0-32805.0/4.0*xi)*eta*eta+(-6561.0/2.0+19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0+2916.0*xi-2187.0*xi*xi+2.0*(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta+3.0*(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi+2.0*(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-891.0+2916.0*xi-2187.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi+2.0*(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta+3.0*(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta)*zeta+(-891.0+2916.0*xi-2187.0*xi*xi+2.0*(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta+3.0*(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi+2.0*(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (405.0/2.0-4455.0/4.0*xi+3645.0/2.0*xi*xi-3645.0/4.0*xi*xi*xi+6.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta)*zeta+(-810.0+4455.0*xi-7290.0*xi*xi+3645.0*xi*xi*xi+6.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(1215.0/2.0-13365.0/4.0*xi+10935.0/2.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (891.0/4.0-729.0*xi+2187.0/4.0*xi*xi)*eta+(-4455.0/8.0+3645.0/2.0*xi-10935.0/8.0*xi*xi)*eta*eta+(2673.0/8.0-2187.0/2.0*xi+6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((-891.0+2916.0*xi-2187.0*xi*xi)*eta+(4455.0/2.0-7290.0*xi+10935.0/2.0*xi*xi)*eta*eta+(-2673.0/2.0+4374.0*xi-6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2673.0/4.0-2187.0*xi+6561.0/4.0*xi*xi)*eta+(-13365.0/8.0+10935.0/2.0*xi-32805.0/8.0*xi*xi)*eta*eta+(8019.0/8.0-6561.0/2.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -81.0/2.0+891.0/4.0*xi-729.0/2.0*xi*xi+729.0/4.0*xi*xi*xi+2.0*(405.0/4.0-4455.0/8.0*xi+3645.0/4.0*xi*xi-3645.0/8.0*xi*xi*xi)*eta+3.0*(-243.0/4.0+2673.0/8.0*xi-2187.0/4.0*xi*xi+2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta+3.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(162.0-891.0*xi+1458.0*xi*xi-729.0*xi*xi*xi)*eta+2.0*(-405.0+4455.0/2.0*xi-3645.0*xi*xi+3645.0/2.0*xi*xi*xi)*eta*eta+2.0*(243.0-2673.0/2.0*xi+2187.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-243.0/2.0+2673.0/4.0*xi-2187.0/2.0*xi*xi+2187.0/4.0*xi*xi*xi)*eta+(1215.0/4.0-13365.0/8.0*xi+10935.0/4.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta*eta+(-729.0/4.0+8019.0/8.0*xi-6561.0/4.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((729.0/2.0-2187.0/4.0*xi)*eta+(-1458.0+2187.0*xi)*eta*eta+(2187.0/2.0-6561.0/4.0*xi)*eta*eta*eta)*zeta+((-1458.0+2187.0*xi)*eta+(5832.0-8748.0*xi)*eta*eta+(-4374.0+6561.0*xi)*eta*eta*eta)*zeta*zeta+((2187.0/2.0-6561.0/4.0*xi)*eta+(-4374.0+6561.0*xi)*eta*eta+(6561.0/2.0-19683.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi+2.0*(-1782.0+5832.0*xi-4374.0*xi*xi)*eta+3.0*(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi+2.0*(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+(-1782.0+5832.0*xi-4374.0*xi*xi)*eta*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi+2.0*(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+3.0*(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta)*zeta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi+2.0*(-1782.0+5832.0*xi-4374.0*xi*xi)*eta+3.0*(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi+2.0*(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-162.0+891.0*xi-1458.0*xi*xi+729.0*xi*xi*xi+6.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta)*zeta+(648.0-3564.0*xi+5832.0*xi*xi-2916.0*xi*xi*xi+6.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-486.0+2673.0*xi-4374.0*xi*xi+2187.0*xi*xi*xi+6.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi)*eta+3.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-891.0/8.0+729.0/2.0*xi-2187.0/8.0*xi*xi)*eta+(891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta*eta+(-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta*eta*eta+2.0*((891.0/2.0-1458.0*xi+2187.0/2.0*xi*xi)*eta+(-1782.0+5832.0*xi-4374.0*xi*xi)*eta*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2673.0/8.0+2187.0/2.0*xi-6561.0/8.0*xi*xi)*eta+(2673.0/2.0-4374.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-8019.0/8.0+6561.0/2.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 81.0/4.0-891.0/8.0*xi+729.0/4.0*xi*xi-729.0/8.0*xi*xi*xi+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta*eta+2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi+2.0*(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi)*eta+3.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-81.0+891.0/2.0*xi-729.0*xi*xi+729.0/2.0*xi*xi*xi)*eta+2.0*(324.0-1782.0*xi+2916.0*xi*xi-1458.0*xi*xi*xi)*eta*eta+2.0*(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((243.0/4.0-2673.0/8.0*xi+2187.0/4.0*xi*xi-2187.0/8.0*xi*xi*xi)*eta+(-243.0+2673.0/2.0*xi-2187.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta*eta+(729.0/4.0-8019.0/8.0*xi+6561.0/4.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-3645.0+6561.0*xi)*eta+(18225.0/2.0-32805.0/2.0*xi)*eta*eta+(-10935.0/2.0+19683.0/2.0*xi)*eta*eta*eta)*zeta+((18225.0/2.0-32805.0/2.0*xi)*eta+(-91125.0/4.0+164025.0/4.0*xi)*eta*eta+(54675.0/4.0-98415.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-10935.0/2.0+19683.0/2.0*xi)*eta+(54675.0/4.0-98415.0/4.0*xi)*eta*eta+(-32805.0/4.0+59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (729.0-3645.0*xi+6561.0/2.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi+2.0*(18225.0/4.0-91125.0/4.0*xi+164025.0/8.0*xi*xi)*eta+3.0*(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi+2.0*(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta+3.0*(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+(18225.0/4.0-91125.0/4.0*xi+164025.0/8.0*xi*xi)*eta*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (729.0-3645.0*xi+6561.0/2.0*xi*xi+2.0*(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+3.0*(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi+2.0*(18225.0/4.0-91125.0/4.0*xi+164025.0/8.0*xi*xi)*eta+3.0*(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi+2.0*(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta+3.0*(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi+6.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta)*zeta+(18225.0/2.0*xi-91125.0/4.0*xi*xi+54675.0/4.0*xi*xi*xi+6.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-10935.0/2.0*xi+54675.0/4.0*xi*xi-32805.0/4.0*xi*xi*xi+6.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi+2.0*(18225.0/4.0*xi-91125.0/8.0*xi*xi+54675.0/8.0*xi*xi*xi)*eta+3.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (729.0-3645.0*xi+6561.0/2.0*xi*xi)*eta+(-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta*eta+(2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((-3645.0/2.0+18225.0/2.0*xi-32805.0/4.0*xi*xi)*eta+(18225.0/4.0-91125.0/4.0*xi+164025.0/8.0*xi*xi)*eta*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/2.0-10935.0/2.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/4.0+54675.0/4.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 729.0*xi-3645.0/2.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi+2.0*(18225.0/4.0*xi-91125.0/8.0*xi*xi+54675.0/8.0*xi*xi*xi)*eta+3.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-3645.0/2.0*xi+18225.0/4.0*xi*xi-10935.0/4.0*xi*xi*xi)*eta+2.0*(18225.0/4.0*xi-91125.0/8.0*xi*xi+54675.0/8.0*xi*xi*xi)*eta*eta+2.0*(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((2187.0/2.0*xi-10935.0/4.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+(-10935.0/4.0*xi+54675.0/8.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta+(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((2916.0-6561.0*xi)*eta+(-7290.0+32805.0/2.0*xi)*eta*eta+(4374.0-19683.0/2.0*xi)*eta*eta*eta)*zeta+((-7290.0+32805.0/2.0*xi)*eta+(18225.0-164025.0/4.0*xi)*eta*eta+(-10935.0+98415.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((4374.0-19683.0/2.0*xi)*eta+(-10935.0+98415.0/4.0*xi)*eta*eta+(6561.0-59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi+2.0*(-18225.0/8.0+18225.0*xi-164025.0/8.0*xi*xi)*eta+3.0*(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi+2.0*(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta+3.0*(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+(-18225.0/8.0+18225.0*xi-164025.0/8.0*xi*xi)*eta*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi+2.0*(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+3.0*(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi+2.0*(-18225.0/8.0+18225.0*xi-164025.0/8.0*xi*xi)*eta+3.0*(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi+2.0*(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta+3.0*(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta)*zeta+(-18225.0/4.0*xi+18225.0*xi*xi-54675.0/4.0*xi*xi*xi+6.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(10935.0/4.0*xi-10935.0*xi*xi+32805.0/4.0*xi*xi*xi+6.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi+2.0*(-18225.0/8.0*xi+18225.0/2.0*xi*xi-54675.0/8.0*xi*xi*xi)*eta+3.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-729.0/2.0+2916.0*xi-6561.0/2.0*xi*xi)*eta+(3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta*eta+(-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0-7290.0*xi+32805.0/4.0*xi*xi)*eta+(-18225.0/8.0+18225.0*xi-164025.0/8.0*xi*xi)*eta*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0+4374.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/8.0-10935.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -729.0/2.0*xi+1458.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi+2.0*(-18225.0/8.0*xi+18225.0/2.0*xi*xi-54675.0/8.0*xi*xi*xi)*eta+3.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(3645.0/4.0*xi-3645.0*xi*xi+10935.0/4.0*xi*xi*xi)*eta+2.0*(-18225.0/8.0*xi+18225.0/2.0*xi*xi-54675.0/8.0*xi*xi*xi)*eta*eta+2.0*(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-2187.0/4.0*xi+2187.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+(10935.0/8.0*xi-10935.0/2.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta+(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((3645.0/2.0-6561.0/2.0*xi)*eta+(-7290.0+13122.0*xi)*eta*eta+(10935.0/2.0-19683.0/2.0*xi)*eta*eta*eta)*zeta+((-18225.0/4.0+32805.0/4.0*xi)*eta+(18225.0-32805.0*xi)*eta*eta+(-54675.0/4.0+98415.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((10935.0/4.0-19683.0/4.0*xi)*eta+(-10935.0+19683.0*xi)*eta*eta+(32805.0/4.0-59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi+2.0*(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta+3.0*(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi+2.0*(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta+3.0*(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(1458.0-7290.0*xi+6561.0*xi*xi)*eta+3.0*(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta)*zeta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi+2.0*(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta+3.0*(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi+2.0*(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta+3.0*(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi+6.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta)*zeta+(-7290.0*xi+18225.0*xi*xi-10935.0*xi*xi*xi+6.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(4374.0*xi-10935.0*xi*xi+6561.0*xi*xi*xi+6.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(1458.0-7290.0*xi+6561.0*xi*xi)*eta*eta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta*eta+2.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta+(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-1458.0+6561.0/2.0*xi)*eta+(5832.0-13122.0*xi)*eta*eta+(-4374.0+19683.0/2.0*xi)*eta*eta*eta)*zeta+((3645.0-32805.0/4.0*xi)*eta+(-14580.0+32805.0*xi)*eta*eta+(10935.0-98415.0/4.0*xi)*eta*eta*eta)*zeta*zeta+((-2187.0+19683.0/4.0*xi)*eta+(8748.0-19683.0*xi)*eta*eta+(-6561.0+59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi+2.0*(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta+3.0*(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi+2.0*(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta+3.0*(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-729.0+5832.0*xi-6561.0*xi*xi)*eta+3.0*(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta)*zeta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi+2.0*(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta+3.0*(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi+2.0*(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta+3.0*(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi+6.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta)*zeta+(3645.0*xi-14580.0*xi*xi+10935.0*xi*xi*xi+6.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta)*zeta*zeta+(-2187.0*xi+8748.0*xi*xi-6561.0*xi*xi*xi+6.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-729.0+5832.0*xi-6561.0*xi*xi)*eta*eta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta*eta*eta+2.0*((-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta*eta+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta*eta+2.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta*eta+6.0*((2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta+(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((3645.0/2.0-6561.0/2.0*xi)*eta+(-18225.0/4.0+32805.0/4.0*xi)*eta*eta+(10935.0/4.0-19683.0/4.0*xi)*eta*eta*eta)*zeta+((-7290.0+13122.0*xi)*eta+(18225.0-32805.0*xi)*eta*eta+(-10935.0+19683.0*xi)*eta*eta*eta)*zeta*zeta+((10935.0/2.0-19683.0/2.0*xi)*eta+(-54675.0/4.0+98415.0/4.0*xi)*eta*eta+(32805.0/4.0-59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta+(1458.0-7290.0*xi+6561.0*xi*xi+2.0*(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta+3.0*(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi+2.0*(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta+3.0*(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((1458.0-7290.0*xi+6561.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi+2.0*(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta+3.0*(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta+(1458.0-7290.0*xi+6561.0*xi*xi+2.0*(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta+3.0*(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi+2.0*(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta+3.0*(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (3645.0/2.0*xi-18225.0/4.0*xi*xi+10935.0/4.0*xi*xi*xi+6.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta+(-7290.0*xi+18225.0*xi*xi-10935.0*xi*xi*xi+6.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(10935.0/2.0*xi-54675.0/4.0*xi*xi+32805.0/4.0*xi*xi*xi+6.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-729.0/2.0+3645.0/2.0*xi-6561.0/4.0*xi*xi)*eta+(3645.0/4.0-18225.0/4.0*xi+32805.0/8.0*xi*xi)*eta*eta+(-2187.0/4.0+10935.0/4.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((1458.0-7290.0*xi+6561.0*xi*xi)*eta+(-3645.0+18225.0*xi-32805.0/2.0*xi*xi)*eta*eta+(2187.0-10935.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/2.0+10935.0/2.0*xi-19683.0/4.0*xi*xi)*eta+(10935.0/4.0-54675.0/4.0*xi+98415.0/8.0*xi*xi)*eta*eta+(-6561.0/4.0+32805.0/4.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -729.0/2.0*xi+3645.0/4.0*xi*xi-2187.0/4.0*xi*xi*xi+2.0*(3645.0/4.0*xi-18225.0/8.0*xi*xi+10935.0/8.0*xi*xi*xi)*eta+3.0*(-2187.0/4.0*xi+10935.0/8.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta+3.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi+2.0*(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta+3.0*(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(1458.0*xi-3645.0*xi*xi+2187.0*xi*xi*xi)*eta+2.0*(-3645.0*xi+18225.0/2.0*xi*xi-10935.0/2.0*xi*xi*xi)*eta*eta+2.0*(2187.0*xi-10935.0/2.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-2187.0/2.0*xi+10935.0/4.0*xi*xi-6561.0/4.0*xi*xi*xi)*eta+(10935.0/4.0*xi-54675.0/8.0*xi*xi+32805.0/8.0*xi*xi*xi)*eta*eta+(-6561.0/4.0*xi+32805.0/8.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-1458.0+6561.0/2.0*xi)*eta+(3645.0-32805.0/4.0*xi)*eta*eta+(-2187.0+19683.0/4.0*xi)*eta*eta*eta)*zeta+((5832.0-13122.0*xi)*eta+(-14580.0+32805.0*xi)*eta*eta+(8748.0-19683.0*xi)*eta*eta*eta)*zeta*zeta+((-4374.0+19683.0/2.0*xi)*eta+(10935.0-98415.0/4.0*xi)*eta*eta+(-6561.0+59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0+5832.0*xi-6561.0*xi*xi+2.0*(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta+3.0*(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi+2.0*(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta+3.0*(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0+5832.0*xi-6561.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi+2.0*(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta+3.0*(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0+5832.0*xi-6561.0*xi*xi+2.0*(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta+3.0*(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi+2.0*(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta+3.0*(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-3645.0/4.0*xi+3645.0*xi*xi-10935.0/4.0*xi*xi*xi+6.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta+(3645.0*xi-14580.0*xi*xi+10935.0*xi*xi*xi+6.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-10935.0/4.0*xi+10935.0*xi*xi-32805.0/4.0*xi*xi*xi+6.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (729.0/4.0-1458.0*xi+6561.0/4.0*xi*xi)*eta+(-3645.0/8.0+3645.0*xi-32805.0/8.0*xi*xi)*eta*eta+(2187.0/8.0-2187.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0+5832.0*xi-6561.0*xi*xi)*eta+(3645.0/2.0-14580.0*xi+32805.0/2.0*xi*xi)*eta*eta+(-2187.0/2.0+8748.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0-4374.0*xi+19683.0/4.0*xi*xi)*eta+(-10935.0/8.0+10935.0*xi-98415.0/8.0*xi*xi)*eta*eta+(6561.0/8.0-6561.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 729.0/4.0*xi-729.0*xi*xi+2187.0/4.0*xi*xi*xi+2.0*(-3645.0/8.0*xi+3645.0/2.0*xi*xi-10935.0/8.0*xi*xi*xi)*eta+3.0*(2187.0/8.0*xi-2187.0/2.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi+2.0*(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta+3.0*(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0*xi+2916.0*xi*xi-2187.0*xi*xi*xi)*eta+2.0*(3645.0/2.0*xi-7290.0*xi*xi+10935.0/2.0*xi*xi*xi)*eta*eta+2.0*(-2187.0/2.0*xi+4374.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((2187.0/4.0*xi-2187.0*xi*xi+6561.0/4.0*xi*xi*xi)*eta+(-10935.0/8.0*xi+10935.0/2.0*xi*xi-32805.0/8.0*xi*xi*xi)*eta*eta+(6561.0/8.0*xi-6561.0/2.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((-3645.0/4.0+6561.0/4.0*xi)*eta+(3645.0-6561.0*xi)*eta*eta+(-10935.0/4.0+19683.0/4.0*xi)*eta*eta*eta)*zeta+((3645.0-6561.0*xi)*eta+(-14580.0+26244.0*xi)*eta*eta+(10935.0-19683.0*xi)*eta*eta*eta)*zeta*zeta+((-10935.0/4.0+19683.0/4.0*xi)*eta+(10935.0-19683.0*xi)*eta*eta+(-32805.0/4.0+59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi+2.0*(2916.0-14580.0*xi+13122.0*xi*xi)*eta+3.0*(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi+2.0*(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta+3.0*(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+(2916.0-14580.0*xi+13122.0*xi*xi)*eta*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi+2.0*(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+3.0*(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta)*zeta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi+2.0*(2916.0-14580.0*xi+13122.0*xi*xi)*eta+3.0*(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi+2.0*(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta+3.0*(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (-1458.0*xi+3645.0*xi*xi-2187.0*xi*xi*xi+6.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta)*zeta+(5832.0*xi-14580.0*xi*xi+8748.0*xi*xi*xi+6.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(-4374.0*xi+10935.0*xi*xi-6561.0*xi*xi*xi+6.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = 729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi)*eta+3.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (729.0/4.0-3645.0/4.0*xi+6561.0/8.0*xi*xi)*eta+(-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta*eta+(2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((-729.0+3645.0*xi-6561.0/2.0*xi*xi)*eta+(2916.0-14580.0*xi+13122.0*xi*xi)*eta*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((2187.0/4.0-10935.0/4.0*xi+19683.0/8.0*xi*xi)*eta+(-2187.0+10935.0*xi-19683.0/2.0*xi*xi)*eta*eta+(6561.0/4.0-32805.0/4.0*xi+59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = 729.0/4.0*xi-3645.0/8.0*xi*xi+2187.0/8.0*xi*xi*xi+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi+2.0*(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi)*eta+3.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi+2.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta+3.0*(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(-729.0*xi+3645.0/2.0*xi*xi-2187.0/2.0*xi*xi*xi)*eta+2.0*(2916.0*xi-7290.0*xi*xi+4374.0*xi*xi*xi)*eta*eta+2.0*(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((2187.0/4.0*xi-10935.0/8.0*xi*xi+6561.0/8.0*xi*xi*xi)*eta+(-2187.0*xi+10935.0/2.0*xi*xi-6561.0/2.0*xi*xi*xi)*eta*eta+(6561.0/4.0*xi-32805.0/8.0*xi*xi+19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; -return_value[0][0] = ((729.0-6561.0/4.0*xi)*eta+(-2916.0+6561.0*xi)*eta*eta+(2187.0-19683.0/4.0*xi)*eta*eta*eta)*zeta+((-2916.0+6561.0*xi)*eta+(11664.0-26244.0*xi)*eta*eta+(-8748.0+19683.0*xi)*eta*eta*eta)*zeta*zeta+((2187.0-19683.0/4.0*xi)*eta+(-8748.0+19683.0*xi)*eta*eta+(6561.0-59049.0/4.0*xi)*eta*eta*eta)*zeta*zeta*zeta; -return_value[0][1] = (-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi+2.0*(-1458.0+11664.0*xi-13122.0*xi*xi)*eta+3.0*(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi+2.0*(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta+3.0*(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[0][2] = (-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+(-1458.0+11664.0*xi-13122.0*xi*xi)*eta*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[1][0] = (-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi+2.0*(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+3.0*(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta)*zeta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi+2.0*(-1458.0+11664.0*xi-13122.0*xi*xi)*eta+3.0*(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta)*zeta*zeta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi+2.0*(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta+3.0*(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta)*zeta*zeta*zeta; -return_value[1][1] = (729.0*xi-2916.0*xi*xi+2187.0*xi*xi*xi+6.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta)*zeta+(-2916.0*xi+11664.0*xi*xi-8748.0*xi*xi*xi+6.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta)*zeta*zeta+(2187.0*xi-8748.0*xi*xi+6561.0*xi*xi*xi+6.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta)*zeta*zeta*zeta; -return_value[1][2] = -729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][0] = (-729.0/8.0+729.0*xi-6561.0/8.0*xi*xi)*eta+(729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta*eta+(-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta*eta*eta+2.0*((729.0/2.0-2916.0*xi+6561.0/2.0*xi*xi)*eta+(-1458.0+11664.0*xi-13122.0*xi*xi)*eta*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta*eta)*zeta+3.0*((-2187.0/8.0+2187.0*xi-19683.0/8.0*xi*xi)*eta+(2187.0/2.0-8748.0*xi+19683.0/2.0*xi*xi)*eta*eta+(-6561.0/8.0+6561.0*xi-59049.0/8.0*xi*xi)*eta*eta*eta)*zeta*zeta; -return_value[2][1] = -729.0/8.0*xi+729.0/2.0*xi*xi-2187.0/8.0*xi*xi*xi+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta*eta+2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi+2.0*(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi)*eta+3.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta)*zeta+3.0*(-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi+2.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta+3.0*(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta)*zeta*zeta; -return_value[2][2] = 2.0*(729.0/2.0*xi-1458.0*xi*xi+2187.0/2.0*xi*xi*xi)*eta+2.0*(-1458.0*xi+5832.0*xi*xi-4374.0*xi*xi*xi)*eta*eta+2.0*(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta*eta+6.0*((-2187.0/8.0*xi+2187.0/2.0*xi*xi-6561.0/8.0*xi*xi*xi)*eta+(2187.0/2.0*xi-4374.0*xi*xi+6561.0/2.0*xi*xi*xi)*eta*eta+(-6561.0/8.0*xi+6561.0/2.0*xi*xi-19683.0/8.0*xi*xi*xi)*eta*eta*eta)*zeta; - break; - }; - return return_value; -}; - - -template <> -void -FEQ3<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - -template <> -void FEQ3<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell)); - unit_points[0] = Point<3>(0, 0, 0); - unit_points[1] = Point<3>(1, 0, 0); - unit_points[2] = Point<3>(1, 0, 1); - unit_points[3] = Point<3>(0, 0, 1); - unit_points[4] = Point<3>(0, 1, 0); - unit_points[5] = Point<3>(1, 1, 0); - unit_points[6] = Point<3>(1, 1, 1); - unit_points[7] = Point<3>(0, 1, 1); - unit_points[8] = Point<3>(1/3, 0, 0); - unit_points[9] = Point<3>(2/3, 0, 0); - unit_points[10] = Point<3>(1, 0, 1/3); - unit_points[11] = Point<3>(1, 0, 2/3); - unit_points[12] = Point<3>(1/3, 0, 1); - unit_points[13] = Point<3>(2/3, 0, 1); - unit_points[14] = Point<3>(0, 0, 1/3); - unit_points[15] = Point<3>(0, 0, 2/3); - unit_points[16] = Point<3>(1/3, 1, 0); - unit_points[17] = Point<3>(2/3, 1, 0); - unit_points[18] = Point<3>(1, 1, 1/3); - unit_points[19] = Point<3>(1, 1, 2/3); - unit_points[20] = Point<3>(1/3, 1, 1); - unit_points[21] = Point<3>(2/3, 1, 1); - unit_points[22] = Point<3>(0, 1, 1/3); - unit_points[23] = Point<3>(0, 1, 2/3); - unit_points[24] = Point<3>(0, 1/3, 0); - unit_points[25] = Point<3>(0, 2/3, 0); - unit_points[26] = Point<3>(1, 1/3, 0); - unit_points[27] = Point<3>(1, 2/3, 0); - unit_points[28] = Point<3>(1, 1/3, 1); - unit_points[29] = Point<3>(1, 2/3, 1); - unit_points[30] = Point<3>(0, 1/3, 1); - unit_points[31] = Point<3>(0, 2/3, 1); - unit_points[32] = Point<3>(1/3, 0, 1/3); - unit_points[33] = Point<3>(2/3, 0, 1/3); - unit_points[34] = Point<3>(1/3, 0, 2/3); - unit_points[35] = Point<3>(2/3, 0, 2/3); - unit_points[36] = Point<3>(1/3, 1, 1/3); - unit_points[37] = Point<3>(2/3, 1, 1/3); - unit_points[38] = Point<3>(1/3, 1, 2/3); - unit_points[39] = Point<3>(2/3, 1, 2/3); - unit_points[40] = Point<3>(1/3, 1/3, 0); - unit_points[41] = Point<3>(2/3, 1/3, 0); - unit_points[42] = Point<3>(1/3, 2/3, 0); - unit_points[43] = Point<3>(2/3, 2/3, 0); - unit_points[44] = Point<3>(1, 1/3, 1/3); - unit_points[45] = Point<3>(1, 2/3, 1/3); - unit_points[46] = Point<3>(1, 1/3, 2/3); - unit_points[47] = Point<3>(1, 2/3, 2/3); - unit_points[48] = Point<3>(1/3, 1/3, 1); - unit_points[49] = Point<3>(2/3, 1/3, 1); - unit_points[50] = Point<3>(1/3, 2/3, 1); - unit_points[51] = Point<3>(2/3, 2/3, 1); - unit_points[52] = Point<3>(0, 1/3, 1/3); - unit_points[53] = Point<3>(0, 2/3, 1/3); - unit_points[54] = Point<3>(0, 1/3, 2/3); - unit_points[55] = Point<3>(0, 2/3, 2/3); - unit_points[56] = Point<3>(1/3, 1/3, 1/3); - unit_points[57] = Point<3>(2/3, 1/3, 1/3); - unit_points[58] = Point<3>(1/3, 2/3, 1/3); - unit_points[59] = Point<3>(2/3, 2/3, 1/3); - unit_points[60] = Point<3>(1/3, 1/3, 2/3); - unit_points[61] = Point<3>(2/3, 1/3, 2/3); - unit_points[62] = Point<3>(1/3, 2/3, 2/3); - unit_points[63] = Point<3>(2/3, 2/3, 2/3); -}; - - -template <> -void FEQ3<3>::get_support_points (const typename DoFHandler<3>::cell_iterator &cell, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), dofs_per_cell)); - - const Point<3> vertices[8] = { cell->vertex(0), - cell->vertex(1), - cell->vertex(2), - cell->vertex(3), - cell->vertex(4), - cell->vertex(5), - cell->vertex(6), - cell->vertex(7) }; - const double t1 = 2.0/3.0*vertices[0](0); - const double t2 = vertices[1](0)/3.0; - const double t4 = 2.0/3.0*vertices[0](1); - const double t5 = vertices[1](1)/3.0; - const double t7 = 2.0/3.0*vertices[0](2); - const double t8 = vertices[1](2)/3.0; - const double t10 = vertices[0](0)/3.0; - const double t11 = 2.0/3.0*vertices[1](0); - const double t13 = vertices[0](1)/3.0; - const double t14 = 2.0/3.0*vertices[1](1); - const double t16 = vertices[0](2)/3.0; - const double t17 = 2.0/3.0*vertices[1](2); - const double t19 = vertices[2](0)/3.0; - const double t21 = vertices[2](1)/3.0; - const double t23 = vertices[2](2)/3.0; - const double t25 = 2.0/3.0*vertices[2](0); - const double t27 = 2.0/3.0*vertices[2](1); - const double t29 = 2.0/3.0*vertices[2](2); - const double t31 = 2.0/3.0*vertices[3](0); - const double t33 = 2.0/3.0*vertices[3](1); - const double t35 = 2.0/3.0*vertices[3](2); - const double t37 = vertices[3](0)/3.0; - const double t39 = vertices[3](1)/3.0; - const double t41 = vertices[3](2)/3.0; - const double t49 = 2.0/3.0*vertices[4](0); - const double t50 = vertices[5](0)/3.0; - const double t52 = 2.0/3.0*vertices[4](1); - const double t53 = vertices[5](1)/3.0; - const double t55 = 2.0/3.0*vertices[4](2); - const double t56 = vertices[5](2)/3.0; - const double t58 = vertices[4](0)/3.0; - const double t59 = 2.0/3.0*vertices[5](0); - const double t61 = vertices[4](1)/3.0; - const double t62 = 2.0/3.0*vertices[5](1); - const double t64 = vertices[4](2)/3.0; - const double t65 = 2.0/3.0*vertices[5](2); - const double t67 = vertices[6](0)/3.0; - const double t69 = vertices[6](1)/3.0; - const double t71 = vertices[6](2)/3.0; - const double t73 = 2.0/3.0*vertices[6](0); - const double t75 = 2.0/3.0*vertices[6](1); - const double t77 = 2.0/3.0*vertices[6](2); - const double t79 = 2.0/3.0*vertices[7](0); - const double t81 = 2.0/3.0*vertices[7](1); - const double t83 = 2.0/3.0*vertices[7](2); - const double t85 = vertices[7](0)/3.0; - const double t87 = vertices[7](1)/3.0; - const double t89 = vertices[7](2)/3.0; - const double t121 = 4.0/9.0*vertices[0](0); - const double t122 = 2.0/9.0*vertices[1](0); - const double t123 = vertices[2](0)/9.0; - const double t124 = 2.0/9.0*vertices[3](0); - const double t126 = 4.0/9.0*vertices[0](1); - const double t127 = 2.0/9.0*vertices[1](1); - const double t128 = vertices[2](1)/9.0; - const double t129 = 2.0/9.0*vertices[3](1); - const double t131 = 4.0/9.0*vertices[0](2); - const double t132 = 2.0/9.0*vertices[1](2); - const double t133 = vertices[2](2)/9.0; - const double t134 = 2.0/9.0*vertices[3](2); - const double t136 = 2.0/9.0*vertices[0](0); - const double t137 = 4.0/9.0*vertices[1](0); - const double t138 = 2.0/9.0*vertices[2](0); - const double t139 = vertices[3](0)/9.0; - const double t141 = 2.0/9.0*vertices[0](1); - const double t142 = 4.0/9.0*vertices[1](1); - const double t143 = 2.0/9.0*vertices[2](1); - const double t144 = vertices[3](1)/9.0; - const double t146 = 2.0/9.0*vertices[0](2); - const double t147 = 4.0/9.0*vertices[1](2); - const double t148 = 2.0/9.0*vertices[2](2); - const double t149 = vertices[3](2)/9.0; - const double t151 = vertices[1](0)/9.0; - const double t152 = 4.0/9.0*vertices[3](0); - const double t154 = vertices[1](1)/9.0; - const double t155 = 4.0/9.0*vertices[3](1); - const double t157 = vertices[1](2)/9.0; - const double t158 = 4.0/9.0*vertices[3](2); - const double t160 = vertices[0](0)/9.0; - const double t161 = 4.0/9.0*vertices[2](0); - const double t163 = vertices[0](1)/9.0; - const double t164 = 4.0/9.0*vertices[2](1); - const double t166 = vertices[0](2)/9.0; - const double t167 = 4.0/9.0*vertices[2](2); - const double t169 = 4.0/9.0*vertices[4](0); - const double t170 = 2.0/9.0*vertices[5](0); - const double t171 = vertices[6](0)/9.0; - const double t172 = 2.0/9.0*vertices[7](0); - const double t174 = 4.0/9.0*vertices[4](1); - const double t175 = 2.0/9.0*vertices[5](1); - const double t176 = vertices[6](1)/9.0; - const double t177 = 2.0/9.0*vertices[7](1); - const double t179 = 4.0/9.0*vertices[4](2); - const double t180 = 2.0/9.0*vertices[5](2); - const double t181 = vertices[6](2)/9.0; - const double t182 = 2.0/9.0*vertices[7](2); - const double t184 = 2.0/9.0*vertices[4](0); - const double t185 = 4.0/9.0*vertices[5](0); - const double t186 = 2.0/9.0*vertices[6](0); - const double t187 = vertices[7](0)/9.0; - const double t189 = 2.0/9.0*vertices[4](1); - const double t190 = 4.0/9.0*vertices[5](1); - const double t191 = 2.0/9.0*vertices[6](1); - const double t192 = vertices[7](1)/9.0; - const double t194 = 2.0/9.0*vertices[4](2); - const double t195 = 4.0/9.0*vertices[5](2); - const double t196 = 2.0/9.0*vertices[6](2); - const double t197 = vertices[7](2)/9.0; - const double t199 = vertices[5](0)/9.0; - const double t200 = 4.0/9.0*vertices[7](0); - const double t202 = vertices[5](1)/9.0; - const double t203 = 4.0/9.0*vertices[7](1); - const double t205 = vertices[5](2)/9.0; - const double t206 = 4.0/9.0*vertices[7](2); - const double t208 = vertices[4](0)/9.0; - const double t209 = 4.0/9.0*vertices[6](0); - const double t211 = vertices[4](1)/9.0; - const double t212 = 4.0/9.0*vertices[6](1); - const double t214 = vertices[4](2)/9.0; - const double t215 = 4.0/9.0*vertices[6](2); - const double t266 = 4.0/27.0*vertices[1](0); - const double t267 = 2.0/27.0*vertices[2](0); - const double t268 = 4.0/27.0*vertices[3](0); - const double t269 = 4.0/27.0*vertices[4](0); - const double t270 = 2.0/27.0*vertices[5](0); - const double t272 = 2.0/27.0*vertices[7](0); - const double t275 = 4.0/27.0*vertices[1](1); - const double t276 = 2.0/27.0*vertices[2](1); - const double t277 = 4.0/27.0*vertices[3](1); - const double t278 = 4.0/27.0*vertices[4](1); - const double t279 = 2.0/27.0*vertices[5](1); - const double t281 = 2.0/27.0*vertices[7](1); - const double t284 = 4.0/27.0*vertices[1](2); - const double t285 = 2.0/27.0*vertices[2](2); - const double t286 = 4.0/27.0*vertices[3](2); - const double t287 = 4.0/27.0*vertices[4](2); - const double t288 = 2.0/27.0*vertices[5](2); - const double t290 = 2.0/27.0*vertices[7](2); - const double t292 = 4.0/27.0*vertices[0](0); - const double t294 = 4.0/27.0*vertices[2](0); - const double t295 = 2.0/27.0*vertices[3](0); - const double t296 = 2.0/27.0*vertices[4](0); - const double t297 = 4.0/27.0*vertices[5](0); - const double t298 = 2.0/27.0*vertices[6](0); - const double t301 = 4.0/27.0*vertices[0](1); - const double t303 = 4.0/27.0*vertices[2](1); - const double t304 = 2.0/27.0*vertices[3](1); - const double t305 = 2.0/27.0*vertices[4](1); - const double t306 = 4.0/27.0*vertices[5](1); - const double t307 = 2.0/27.0*vertices[6](1); - const double t310 = 4.0/27.0*vertices[0](2); - const double t312 = 4.0/27.0*vertices[2](2); - const double t313 = 2.0/27.0*vertices[3](2); - const double t314 = 2.0/27.0*vertices[4](2); - const double t315 = 4.0/27.0*vertices[5](2); - const double t316 = 2.0/27.0*vertices[6](2); - const double t319 = 2.0/27.0*vertices[1](0); - const double t322 = 4.0/27.0*vertices[7](0); - const double t324 = 2.0/27.0*vertices[1](1); - const double t327 = 4.0/27.0*vertices[7](1); - const double t329 = 2.0/27.0*vertices[1](2); - const double t332 = 4.0/27.0*vertices[7](2); - const double t334 = 2.0/27.0*vertices[0](0); - const double t337 = 4.0/27.0*vertices[6](0); - const double t339 = 2.0/27.0*vertices[0](1); - const double t342 = 4.0/27.0*vertices[6](1); - const double t344 = 2.0/27.0*vertices[0](2); - const double t347 = 4.0/27.0*vertices[6](2); - support_points[0](0) = vertices[0](0); - support_points[0](1) = vertices[0](1); - support_points[0](2) = vertices[0](2); - support_points[1](0) = vertices[1](0); - support_points[1](1) = vertices[1](1); - support_points[1](2) = vertices[1](2); - support_points[2](0) = vertices[2](0); - support_points[2](1) = vertices[2](1); - support_points[2](2) = vertices[2](2); - support_points[3](0) = vertices[3](0); - support_points[3](1) = vertices[3](1); - support_points[3](2) = vertices[3](2); - support_points[4](0) = vertices[4](0); - support_points[4](1) = vertices[4](1); - support_points[4](2) = vertices[4](2); - support_points[5](0) = vertices[5](0); - support_points[5](1) = vertices[5](1); - support_points[5](2) = vertices[5](2); - support_points[6](0) = vertices[6](0); - support_points[6](1) = vertices[6](1); - support_points[6](2) = vertices[6](2); - support_points[7](0) = vertices[7](0); - support_points[7](1) = vertices[7](1); - support_points[7](2) = vertices[7](2); - support_points[8](0) = t1+t2; - support_points[8](1) = t4+t5; - support_points[8](2) = t7+t8; - support_points[9](0) = t10+t11; - support_points[9](1) = t13+t14; - support_points[9](2) = t16+t17; - support_points[10](0) = t11+t19; - support_points[10](1) = t14+t21; - support_points[10](2) = t17+t23; - support_points[11](0) = t2+t25; - support_points[11](1) = t5+t27; - support_points[11](2) = t8+t29; - support_points[12](0) = t19+t31; - support_points[12](1) = t21+t33; - support_points[12](2) = t23+t35; - support_points[13](0) = t25+t37; - support_points[13](1) = t27+t39; - support_points[13](2) = t29+t41; - support_points[14](0) = t1+t37; - support_points[14](1) = t4+t39; - support_points[14](2) = t7+t41; - support_points[15](0) = t10+t31; - support_points[15](1) = t13+t33; - support_points[15](2) = t16+t35; - support_points[16](0) = t49+t50; - support_points[16](1) = t52+t53; - support_points[16](2) = t55+t56; - support_points[17](0) = t58+t59; - support_points[17](1) = t61+t62; - support_points[17](2) = t64+t65; - support_points[18](0) = t59+t67; - support_points[18](1) = t62+t69; - support_points[18](2) = t65+t71; - support_points[19](0) = t50+t73; - support_points[19](1) = t53+t75; - support_points[19](2) = t56+t77; - support_points[20](0) = t67+t79; - support_points[20](1) = t69+t81; - support_points[20](2) = t71+t83; - support_points[21](0) = t73+t85; - support_points[21](1) = t75+t87; - support_points[21](2) = t77+t89; - support_points[22](0) = t49+t85; - support_points[22](1) = t52+t87; - support_points[22](2) = t55+t89; - support_points[23](0) = t58+t79; - support_points[23](1) = t61+t81; - support_points[23](2) = t64+t83; - support_points[24](0) = t1+t58; - support_points[24](1) = t4+t61; - support_points[24](2) = t7+t64; - support_points[25](0) = t10+t49; - support_points[25](1) = t13+t52; - support_points[25](2) = t16+t55; - support_points[26](0) = t11+t50; - support_points[26](1) = t14+t53; - support_points[26](2) = t17+t56; - support_points[27](0) = t2+t59; - support_points[27](1) = t5+t62; - support_points[27](2) = t8+t65; - support_points[28](0) = t25+t67; - support_points[28](1) = t27+t69; - support_points[28](2) = t29+t71; - support_points[29](0) = t19+t73; - support_points[29](1) = t21+t75; - support_points[29](2) = t23+t77; - support_points[30](0) = t31+t85; - support_points[30](1) = t33+t87; - support_points[30](2) = t35+t89; - support_points[31](0) = t37+t79; - support_points[31](1) = t39+t81; - support_points[31](2) = t41+t83; - support_points[32](0) = t121+t122+t123+t124; - support_points[32](1) = t126+t127+t128+t129; - support_points[32](2) = t131+t132+t133+t134; - support_points[33](0) = t136+t137+t138+t139; - support_points[33](1) = t141+t142+t143+t144; - support_points[33](2) = t146+t147+t148+t149; - support_points[34](0) = t136+t151+t138+t152; - support_points[34](1) = t141+t154+t143+t155; - support_points[34](2) = t146+t157+t148+t158; - support_points[35](0) = t160+t122+t161+t124; - support_points[35](1) = t163+t127+t164+t129; - support_points[35](2) = t166+t132+t167+t134; - support_points[36](0) = t169+t170+t171+t172; - support_points[36](1) = t174+t175+t176+t177; - support_points[36](2) = t179+t180+t181+t182; - support_points[37](0) = t184+t185+t186+t187; - support_points[37](1) = t189+t190+t191+t192; - support_points[37](2) = t194+t195+t196+t197; - support_points[38](0) = t184+t199+t186+t200; - support_points[38](1) = t189+t202+t191+t203; - support_points[38](2) = t194+t205+t196+t206; - support_points[39](0) = t208+t170+t209+t172; - support_points[39](1) = t211+t175+t212+t177; - support_points[39](2) = t214+t180+t215+t182; - support_points[40](0) = t121+t122+t184+t199; - support_points[40](1) = t126+t127+t189+t202; - support_points[40](2) = t131+t132+t194+t205; - support_points[41](0) = t136+t137+t208+t170; - support_points[41](1) = t141+t142+t211+t175; - support_points[41](2) = t146+t147+t214+t180; - support_points[42](0) = t136+t151+t169+t170; - support_points[42](1) = t141+t154+t174+t175; - support_points[42](2) = t146+t157+t179+t180; - support_points[43](0) = t160+t122+t184+t185; - support_points[43](1) = t163+t127+t189+t190; - support_points[43](2) = t166+t132+t194+t195; - support_points[44](0) = t137+t138+t170+t171; - support_points[44](1) = t142+t143+t175+t176; - support_points[44](2) = t147+t148+t180+t181; - support_points[45](0) = t122+t123+t185+t186; - support_points[45](1) = t127+t128+t190+t191; - support_points[45](2) = t132+t133+t195+t196; - support_points[46](0) = t122+t161+t199+t186; - support_points[46](1) = t127+t164+t202+t191; - support_points[46](2) = t132+t167+t205+t196; - support_points[47](0) = t151+t138+t170+t209; - support_points[47](1) = t154+t143+t175+t212; - support_points[47](2) = t157+t148+t180+t215; - support_points[48](0) = t138+t152+t171+t172; - support_points[48](1) = t143+t155+t176+t177; - support_points[48](2) = t148+t158+t181+t182; - support_points[49](0) = t161+t124+t186+t187; - support_points[49](1) = t164+t129+t191+t192; - support_points[49](2) = t167+t134+t196+t197; - support_points[50](0) = t123+t124+t186+t200; - support_points[50](1) = t128+t129+t191+t203; - support_points[50](2) = t133+t134+t196+t206; - support_points[51](0) = t138+t139+t209+t172; - support_points[51](1) = t143+t144+t212+t177; - support_points[51](2) = t148+t149+t215+t182; - support_points[52](0) = t121+t124+t184+t187; - support_points[52](1) = t126+t129+t189+t192; - support_points[52](2) = t131+t134+t194+t197; - support_points[53](0) = t136+t139+t169+t172; - support_points[53](1) = t141+t144+t174+t177; - support_points[53](2) = t146+t149+t179+t182; - support_points[54](0) = t136+t152+t208+t172; - support_points[54](1) = t141+t155+t211+t177; - support_points[54](2) = t146+t158+t214+t182; - support_points[55](0) = t160+t124+t184+t200; - support_points[55](1) = t163+t129+t189+t203; - support_points[55](2) = t166+t134+t194+t206; - support_points[56](0) = 8.0/27.0*vertices[0](0)+t266+t267+t268+t269+t270+vertices[6](0)/27.0+t272; - support_points[56](1) = 8.0/27.0*vertices[0](1)+t275+t276+t277+t278+t279+vertices[6](1)/27.0+t281; - support_points[56](2) = 8.0/27.0*vertices[0](2)+t284+t285+t286+t287+t288+vertices[6](2)/27.0+t290; - support_points[57](0) = t292+8.0/27.0*vertices[1](0)+t294+t295+t296+t297+t298+vertices[7](0)/27.0; - support_points[57](1) = t301+8.0/27.0*vertices[1](1)+t303+t304+t305+t306+t307+vertices[7](1)/27.0; - support_points[57](2) = t310+8.0/27.0*vertices[1](2)+t312+t313+t314+t315+t316+vertices[7](2)/27.0; - support_points[58](0) = t292+t319+vertices[2](0)/27.0+t295+8.0/27.0*vertices[4](0)+t297+t298+t322; - support_points[58](1) = t301+t324+vertices[2](1)/27.0+t304+8.0/27.0*vertices[4](1)+t306+t307+t327; - support_points[58](2) = t310+t329+vertices[2](2)/27.0+t313+8.0/27.0*vertices[4](2)+t315+t316+t332; - support_points[59](0) = t334+t266+t267+vertices[3](0)/27.0+t269+8.0/27.0*vertices[5](0)+t337+t272; - support_points[59](1) = t339+t275+t276+vertices[3](1)/27.0+t278+8.0/27.0*vertices[5](1)+t342+t281; - support_points[59](2) = t344+t284+t285+vertices[3](2)/27.0+t287+8.0/27.0*vertices[5](2)+t347+t290; - support_points[60](0) = t292+t319+t294+8.0/27.0*vertices[3](0)+t296+vertices[5](0)/27.0+t298+t322; - support_points[60](1) = t301+t324+t303+8.0/27.0*vertices[3](1)+t305+vertices[5](1)/27.0+t307+t327; - support_points[60](2) = t310+t329+t312+8.0/27.0*vertices[3](2)+t314+vertices[5](2)/27.0+t316+t332; - support_points[61](0) = t334+t266+8.0/27.0*vertices[2](0)+t268+vertices[4](0)/27.0+t270+t337+t272; - support_points[61](1) = t339+t275+8.0/27.0*vertices[2](1)+t277+vertices[4](1)/27.0+t279+t342+t281; - support_points[61](2) = t344+t284+8.0/27.0*vertices[2](2)+t286+vertices[4](2)/27.0+t288+t347+t290; - support_points[62](0) = t334+vertices[1](0)/27.0+t267+t268+t269+t270+t337+8.0/27.0*vertices[7](0); - support_points[62](1) = t339+vertices[1](1)/27.0+t276+t277+t278+t279+t342+8.0/27.0*vertices[7](1); - support_points[62](2) = t344+vertices[1](2)/27.0+t285+t286+t287+t288+t347+8.0/27.0*vertices[7](2); - support_points[63](0) = vertices[0](0)/27.0+t319+t294+t295+t296+t297+8.0/27.0*vertices[6](0)+t322; - support_points[63](1) = vertices[0](1)/27.0+t324+t303+t304+t305+t306+8.0/27.0*vertices[6](1)+t327; - support_points[63](2) = vertices[0](2)/27.0+t329+t312+t313+t314+t315+8.0/27.0*vertices[6](2)+t332; -}; - - -template <> -void FEQ3<3>::get_face_support_points (const typename DoFHandler<3>::face_iterator &face, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_face, - FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), dofs_per_face)); - - for (unsigned int vertex=0; vertex<2; ++vertex) - support_points[vertex] = face->vertex(vertex); - - support_points[4] = (2*support_points[0] + support_points[1]) / 3; - support_points[5] = (support_points[0] + 2*support_points[1]) / 3; - support_points[6] = (2*support_points[1] + support_points[2]) / 3; - support_points[7] = (support_points[1] + 2*support_points[2]) / 3; - support_points[8] = (2*support_points[3] + support_points[2]) / 3; - support_points[9] = (support_points[3] + 2*support_points[2]) / 3; - support_points[10] = (2*support_points[0] + support_points[3]) / 3; - support_points[11] = (support_points[0] + 2*support_points[3]) / 3; - - support_points[12] = (4*support_points[0] + - 2*support_points[1] + - 1*support_points[2] + - 2*support_points[3] ) /9; - support_points[13] = (2*support_points[0] + - 4*support_points[1] + - 2*support_points[2] + - 1*support_points[3] ) /9; - support_points[12] = (2*support_points[0] + - 1*support_points[1] + - 2*support_points[2] + - 4*support_points[3] ) /9; - support_points[13] = (1*support_points[0] + - 2*support_points[1] + - 4*support_points[2] + - 2*support_points[3] ) /9; -}; - - -#else // 0 - -// provide dummy implementations of the functions above. for the -// reason, see the beginning of the `if 0' conditional - -template <> -FEQ3<3>::FEQ3 () : - FEQ1Mapping<3> (1, 2, 4, 8, 1, - std::vector (1, false)) -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -FEQ3<3>::FEQ3 (const int) : - FEQ1Mapping<3> (0, 0, 0, 64, 1, - std::vector (1, true)) -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ3<3>::initialize_matrices () -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -double -FEQ3<3>::shape_value (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -}; - - -template <> -Tensor<1,3> -FEQ3<3>::shape_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<1,3>(); -}; - - -template <> -Tensor<2,3> -FEQ3<3>::shape_grad_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<2,3>(); -}; - - -template <> -void -FEQ3<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ3<3>::get_unit_support_points (std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ3<3>::get_support_points (const DoFHandler<3>::cell_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ3<3>::get_face_support_points (const DoFHandler<3>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -#endif // 0 -#endif // deal_II_dimension == 3 - - -// explicit instantiations - -template class FEQ3; - diff --git a/deal.II/deal.II/source/fe/fe_lib.dg.cc b/deal.II/deal.II/source/fe/fe_lib.dg.cc deleted file mode 100644 index eb99cbeed3..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.dg.cc +++ /dev/null @@ -1,4483 +0,0 @@ -//---------------------------- fe_lib.dg.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.dg.cc --------------------------- - - -#include -#include - - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - -#if deal_II_dimension == 1 - - -template<> -FEDG_Q1<1>::FEDG_Q1(): - FEQ1<1>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 3.0/4.0; - restriction[0](0,1) = 1.0/2.0; - restriction[0](1,0) = -1.0/4.0; - restriction[1](0,1) = -1.0/4.0; - restriction[1](1,0) = 1.0/2.0; - restriction[1](1,1) = 3.0/4.0; -}; - - - -template<> -FEDG_Q2<1>::FEDG_Q2(): - FEQ2<1>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 11.0/16.0; - restriction[0](0,1) = -3.0/16.0; - restriction[0](0,2) = 3.0/4.0; - restriction[0](1,0) = 3.0/16.0; - restriction[0](1,1) = -3.0/16.0; - restriction[0](1,2) = -1.0/4.0; - restriction[0](2,0) = -3.0/32.0; - restriction[0](2,1) = 7.0/32.0; - restriction[0](2,2) = 3.0/8.0; - restriction[1](0,0) = -3.0/16.0; - restriction[1](0,1) = 3.0/16.0; - restriction[1](0,2) = -1.0/4.0; - restriction[1](1,0) = -3.0/16.0; - restriction[1](1,1) = 11.0/16.0; - restriction[1](1,2) = 3.0/4.0; - restriction[1](2,0) = 7.0/32.0; - restriction[1](2,1) = -3.0/32.0; - restriction[1](2,2) = 3.0/8.0; -}; - - - -template<> -FEDG_Q3<1>::FEDG_Q3(): - FEQ3<1>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 11.0/16.0; - restriction[0](0,1) = -1.0/16.0; - restriction[0](0,2) = 15.0/16.0; - restriction[0](0,3) = -3.0/4.0; - restriction[0](1,0) = -1.0/8.0; - restriction[0](1,1) = -1.0/16.0; - restriction[0](1,2) = 3.0/16.0; - restriction[0](1,3) = 3.0/16.0; - restriction[0](2,0) = -1.0/18.0; - restriction[0](2,1) = 53.0/432.0; - restriction[0](2,2) = 35.0/144.0; - restriction[0](2,3) = 89.0/144.0; - restriction[0](3,0) = 5.0/144.0; - restriction[0](3,1) = 37.0/432.0; - restriction[0](3,2) = -17.0/144.0; - restriction[0](3,3) = 5.0/72.0; - restriction[1](0,0) = -1.0/16.0; - restriction[1](0,1) = -1.0/8.0; - restriction[1](0,2) = 3.0/16.0; - restriction[1](0,3) = 3.0/16.0; - restriction[1](1,0) = -1.0/16.0; - restriction[1](1,1) = 11.0/16.0; - restriction[1](1,2) = -3.0/4.0; - restriction[1](1,3) = 15.0/16.0; - restriction[1](2,0) = 37.0/432.0; - restriction[1](2,1) = 5.0/144.0; - restriction[1](2,2) = 5.0/72.0; - restriction[1](2,3) = -17.0/144.0; - restriction[1](3,0) = 53.0/432.0; - restriction[1](3,1) = -1.0/18.0; - restriction[1](3,2) = 89.0/144.0; - restriction[1](3,3) = 35.0/144.0; -}; - - - -template<> -FEDG_Q4<1>::FEDG_Q4(): - FEQ4<1>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 209.0/288.0; - restriction[0](0,1) = 5.0/288.0; - restriction[0](0,2) = 35.0/36.0; - restriction[0](0,3) = -25.0/24.0; - restriction[0](0,4) = 5.0/36.0; - restriction[0](1,0) = 25.0/288.0; - restriction[0](1,1) = 25.0/288.0; - restriction[0](1,2) = -5.0/36.0; - restriction[0](1,3) = -5.0/24.0; - restriction[0](1,4) = 13.0/36.0; - restriction[0](2,0) = -2515.0/36864.0; - restriction[0](2,1) = 1175.0/36864.0; - restriction[0](2,2) = 1385.0/4608.0; - restriction[0](2,3) = 1601.0/3072.0; - restriction[0](2,4) = 1295.0/4608.0; - restriction[0](3,0) = 5.0/256.0; - restriction[0](3,1) = 109.0/768.0; - restriction[0](3,2) = -5.0/96.0; - restriction[0](3,3) = -5.0/64.0; - restriction[0](3,4) = 15.0/32.0; - restriction[0](4,0) = -275.0/36864.0; - restriction[0](4,1) = 55.0/36864.0; - restriction[0](4,2) = 169.0/4608.0; - restriction[0](4,3) = -95.0/3072.0; - restriction[0](4,4) = -305.0/4608.0; - restriction[1](0,0) = 25.0/288.0; - restriction[1](0,1) = 25.0/288.0; - restriction[1](0,2) = 13.0/36.0; - restriction[1](0,3) = -5.0/24.0; - restriction[1](0,4) = -5.0/36.0; - restriction[1](1,0) = 5.0/288.0; - restriction[1](1,1) = 209.0/288.0; - restriction[1](1,2) = 5.0/36.0; - restriction[1](1,3) = -25.0/24.0; - restriction[1](1,4) = 35.0/36.0; - restriction[1](2,0) = 55.0/36864.0; - restriction[1](2,1) = -275.0/36864.0; - restriction[1](2,2) = -305.0/4608.0; - restriction[1](2,3) = -95.0/3072.0; - restriction[1](2,4) = 169.0/4608.0; - restriction[1](3,0) = 109.0/768.0; - restriction[1](3,1) = 5.0/256.0; - restriction[1](3,2) = 15.0/32.0; - restriction[1](3,3) = -5.0/64.0; - restriction[1](3,4) = -5.0/96.0; - restriction[1](4,0) = 1175.0/36864.0; - restriction[1](4,1) = -2515.0/36864.0; - restriction[1](4,2) = 1295.0/4608.0; - restriction[1](4,3) = 1601.0/3072.0; - restriction[1](4,4) = 1385.0/4608.0; -}; - - - -#endif - - -#if deal_II_dimension == 2 - - -template<> -FEDG_Q1<2>::FEDG_Q1(): - FEQ1<2>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 9.0/16.0; - restriction[0](0,1) = 3.0/8.0; - restriction[0](0,2) = 1.0/4.0; - restriction[0](0,3) = 3.0/8.0; - restriction[0](1,0) = -3.0/16.0; - restriction[0](1,3) = -1.0/8.0; - restriction[0](2,0) = 1.0/16.0; - restriction[0](3,0) = -3.0/16.0; - restriction[0](3,1) = -1.0/8.0; - restriction[1](0,1) = -3.0/16.0; - restriction[1](0,2) = -1.0/8.0; - restriction[1](1,0) = 3.0/8.0; - restriction[1](1,1) = 9.0/16.0; - restriction[1](1,2) = 3.0/8.0; - restriction[1](1,3) = 1.0/4.0; - restriction[1](2,0) = -1.0/8.0; - restriction[1](2,1) = -3.0/16.0; - restriction[1](3,1) = 1.0/16.0; - restriction[2](0,2) = 1.0/16.0; - restriction[2](1,2) = -3.0/16.0; - restriction[2](1,3) = -1.0/8.0; - restriction[2](2,0) = 1.0/4.0; - restriction[2](2,1) = 3.0/8.0; - restriction[2](2,2) = 9.0/16.0; - restriction[2](2,3) = 3.0/8.0; - restriction[2](3,1) = -1.0/8.0; - restriction[2](3,2) = -3.0/16.0; - restriction[3](0,2) = -1.0/8.0; - restriction[3](0,3) = -3.0/16.0; - restriction[3](1,3) = 1.0/16.0; - restriction[3](2,0) = -1.0/8.0; - restriction[3](2,3) = -3.0/16.0; - restriction[3](3,0) = 3.0/8.0; - restriction[3](3,1) = 1.0/4.0; - restriction[3](3,2) = 3.0/8.0; - restriction[3](3,3) = 9.0/16.0; -}; - - - -template<> -FEDG_Q2<2>::FEDG_Q2(): - FEQ2<2>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 121.0/256.0; - restriction[0](0,1) = -33.0/256.0; - restriction[0](0,2) = 9.0/256.0; - restriction[0](0,3) = -33.0/256.0; - restriction[0](0,4) = 33.0/64.0; - restriction[0](0,5) = -9.0/64.0; - restriction[0](0,6) = -9.0/64.0; - restriction[0](0,7) = 33.0/64.0; - restriction[0](0,8) = 9.0/16.0; - restriction[0](1,0) = 33.0/256.0; - restriction[0](1,1) = -33.0/256.0; - restriction[0](1,2) = 9.0/256.0; - restriction[0](1,3) = -9.0/256.0; - restriction[0](1,4) = -11.0/64.0; - restriction[0](1,5) = -9.0/64.0; - restriction[0](1,6) = 3.0/64.0; - restriction[0](1,7) = 9.0/64.0; - restriction[0](1,8) = -3.0/16.0; - restriction[0](2,0) = 9.0/256.0; - restriction[0](2,1) = -9.0/256.0; - restriction[0](2,2) = 9.0/256.0; - restriction[0](2,3) = -9.0/256.0; - restriction[0](2,4) = -3.0/64.0; - restriction[0](2,5) = 3.0/64.0; - restriction[0](2,6) = 3.0/64.0; - restriction[0](2,7) = -3.0/64.0; - restriction[0](2,8) = 1.0/16.0; - restriction[0](3,0) = 33.0/256.0; - restriction[0](3,1) = -9.0/256.0; - restriction[0](3,2) = 9.0/256.0; - restriction[0](3,3) = -33.0/256.0; - restriction[0](3,4) = 9.0/64.0; - restriction[0](3,5) = 3.0/64.0; - restriction[0](3,6) = -9.0/64.0; - restriction[0](3,7) = -11.0/64.0; - restriction[0](3,8) = -3.0/16.0; - restriction[0](4,0) = -33.0/512.0; - restriction[0](4,1) = 77.0/512.0; - restriction[0](4,2) = -21.0/512.0; - restriction[0](4,3) = 9.0/512.0; - restriction[0](4,4) = 33.0/128.0; - restriction[0](4,5) = 21.0/128.0; - restriction[0](4,6) = -9.0/128.0; - restriction[0](4,7) = -9.0/128.0; - restriction[0](4,8) = 9.0/32.0; - restriction[0](5,0) = -9.0/512.0; - restriction[0](5,1) = 9.0/512.0; - restriction[0](5,2) = -21.0/512.0; - restriction[0](5,3) = 21.0/512.0; - restriction[0](5,4) = 3.0/128.0; - restriction[0](5,5) = -9.0/128.0; - restriction[0](5,6) = -7.0/128.0; - restriction[0](5,7) = 9.0/128.0; - restriction[0](5,8) = -3.0/32.0; - restriction[0](6,0) = -9.0/512.0; - restriction[0](6,1) = 21.0/512.0; - restriction[0](6,2) = -21.0/512.0; - restriction[0](6,3) = 9.0/512.0; - restriction[0](6,4) = 9.0/128.0; - restriction[0](6,5) = -7.0/128.0; - restriction[0](6,6) = -9.0/128.0; - restriction[0](6,7) = 3.0/128.0; - restriction[0](6,8) = -3.0/32.0; - restriction[0](7,0) = -33.0/512.0; - restriction[0](7,1) = 9.0/512.0; - restriction[0](7,2) = -21.0/512.0; - restriction[0](7,3) = 77.0/512.0; - restriction[0](7,4) = -9.0/128.0; - restriction[0](7,5) = -9.0/128.0; - restriction[0](7,6) = 21.0/128.0; - restriction[0](7,7) = 33.0/128.0; - restriction[0](7,8) = 9.0/32.0; - restriction[0](8,0) = 9.0/1024.0; - restriction[0](8,1) = -21.0/1024.0; - restriction[0](8,2) = 49.0/1024.0; - restriction[0](8,3) = -21.0/1024.0; - restriction[0](8,4) = -9.0/256.0; - restriction[0](8,5) = 21.0/256.0; - restriction[0](8,6) = 21.0/256.0; - restriction[0](8,7) = -9.0/256.0; - restriction[0](8,8) = 9.0/64.0; - restriction[1](0,0) = -33.0/256.0; - restriction[1](0,1) = 33.0/256.0; - restriction[1](0,2) = -9.0/256.0; - restriction[1](0,3) = 9.0/256.0; - restriction[1](0,4) = -11.0/64.0; - restriction[1](0,5) = 9.0/64.0; - restriction[1](0,6) = 3.0/64.0; - restriction[1](0,7) = -9.0/64.0; - restriction[1](0,8) = -3.0/16.0; - restriction[1](1,0) = -33.0/256.0; - restriction[1](1,1) = 121.0/256.0; - restriction[1](1,2) = -33.0/256.0; - restriction[1](1,3) = 9.0/256.0; - restriction[1](1,4) = 33.0/64.0; - restriction[1](1,5) = 33.0/64.0; - restriction[1](1,6) = -9.0/64.0; - restriction[1](1,7) = -9.0/64.0; - restriction[1](1,8) = 9.0/16.0; - restriction[1](2,0) = -9.0/256.0; - restriction[1](2,1) = 33.0/256.0; - restriction[1](2,2) = -33.0/256.0; - restriction[1](2,3) = 9.0/256.0; - restriction[1](2,4) = 9.0/64.0; - restriction[1](2,5) = -11.0/64.0; - restriction[1](2,6) = -9.0/64.0; - restriction[1](2,7) = 3.0/64.0; - restriction[1](2,8) = -3.0/16.0; - restriction[1](3,0) = -9.0/256.0; - restriction[1](3,1) = 9.0/256.0; - restriction[1](3,2) = -9.0/256.0; - restriction[1](3,3) = 9.0/256.0; - restriction[1](3,4) = -3.0/64.0; - restriction[1](3,5) = -3.0/64.0; - restriction[1](3,6) = 3.0/64.0; - restriction[1](3,7) = 3.0/64.0; - restriction[1](3,8) = 1.0/16.0; - restriction[1](4,0) = 77.0/512.0; - restriction[1](4,1) = -33.0/512.0; - restriction[1](4,2) = 9.0/512.0; - restriction[1](4,3) = -21.0/512.0; - restriction[1](4,4) = 33.0/128.0; - restriction[1](4,5) = -9.0/128.0; - restriction[1](4,6) = -9.0/128.0; - restriction[1](4,7) = 21.0/128.0; - restriction[1](4,8) = 9.0/32.0; - restriction[1](5,0) = 9.0/512.0; - restriction[1](5,1) = -33.0/512.0; - restriction[1](5,2) = 77.0/512.0; - restriction[1](5,3) = -21.0/512.0; - restriction[1](5,4) = -9.0/128.0; - restriction[1](5,5) = 33.0/128.0; - restriction[1](5,6) = 21.0/128.0; - restriction[1](5,7) = -9.0/128.0; - restriction[1](5,8) = 9.0/32.0; - restriction[1](6,0) = 21.0/512.0; - restriction[1](6,1) = -9.0/512.0; - restriction[1](6,2) = 9.0/512.0; - restriction[1](6,3) = -21.0/512.0; - restriction[1](6,4) = 9.0/128.0; - restriction[1](6,5) = 3.0/128.0; - restriction[1](6,6) = -9.0/128.0; - restriction[1](6,7) = -7.0/128.0; - restriction[1](6,8) = -3.0/32.0; - restriction[1](7,0) = 9.0/512.0; - restriction[1](7,1) = -9.0/512.0; - restriction[1](7,2) = 21.0/512.0; - restriction[1](7,3) = -21.0/512.0; - restriction[1](7,4) = 3.0/128.0; - restriction[1](7,5) = 9.0/128.0; - restriction[1](7,6) = -7.0/128.0; - restriction[1](7,7) = -9.0/128.0; - restriction[1](7,8) = -3.0/32.0; - restriction[1](8,0) = -21.0/1024.0; - restriction[1](8,1) = 9.0/1024.0; - restriction[1](8,2) = -21.0/1024.0; - restriction[1](8,3) = 49.0/1024.0; - restriction[1](8,4) = -9.0/256.0; - restriction[1](8,5) = -9.0/256.0; - restriction[1](8,6) = 21.0/256.0; - restriction[1](8,7) = 21.0/256.0; - restriction[1](8,8) = 9.0/64.0; - restriction[2](0,0) = 9.0/256.0; - restriction[2](0,1) = -9.0/256.0; - restriction[2](0,2) = 9.0/256.0; - restriction[2](0,3) = -9.0/256.0; - restriction[2](0,4) = 3.0/64.0; - restriction[2](0,5) = -3.0/64.0; - restriction[2](0,6) = -3.0/64.0; - restriction[2](0,7) = 3.0/64.0; - restriction[2](0,8) = 1.0/16.0; - restriction[2](1,0) = 9.0/256.0; - restriction[2](1,1) = -33.0/256.0; - restriction[2](1,2) = 33.0/256.0; - restriction[2](1,3) = -9.0/256.0; - restriction[2](1,4) = -9.0/64.0; - restriction[2](1,5) = -11.0/64.0; - restriction[2](1,6) = 9.0/64.0; - restriction[2](1,7) = 3.0/64.0; - restriction[2](1,8) = -3.0/16.0; - restriction[2](2,0) = 9.0/256.0; - restriction[2](2,1) = -33.0/256.0; - restriction[2](2,2) = 121.0/256.0; - restriction[2](2,3) = -33.0/256.0; - restriction[2](2,4) = -9.0/64.0; - restriction[2](2,5) = 33.0/64.0; - restriction[2](2,6) = 33.0/64.0; - restriction[2](2,7) = -9.0/64.0; - restriction[2](2,8) = 9.0/16.0; - restriction[2](3,0) = 9.0/256.0; - restriction[2](3,1) = -9.0/256.0; - restriction[2](3,2) = 33.0/256.0; - restriction[2](3,3) = -33.0/256.0; - restriction[2](3,4) = 3.0/64.0; - restriction[2](3,5) = 9.0/64.0; - restriction[2](3,6) = -11.0/64.0; - restriction[2](3,7) = -9.0/64.0; - restriction[2](3,8) = -3.0/16.0; - restriction[2](4,0) = -21.0/512.0; - restriction[2](4,1) = 9.0/512.0; - restriction[2](4,2) = -9.0/512.0; - restriction[2](4,3) = 21.0/512.0; - restriction[2](4,4) = -9.0/128.0; - restriction[2](4,5) = 3.0/128.0; - restriction[2](4,6) = 9.0/128.0; - restriction[2](4,7) = -7.0/128.0; - restriction[2](4,8) = -3.0/32.0; - restriction[2](5,0) = -21.0/512.0; - restriction[2](5,1) = 77.0/512.0; - restriction[2](5,2) = -33.0/512.0; - restriction[2](5,3) = 9.0/512.0; - restriction[2](5,4) = 21.0/128.0; - restriction[2](5,5) = 33.0/128.0; - restriction[2](5,6) = -9.0/128.0; - restriction[2](5,7) = -9.0/128.0; - restriction[2](5,8) = 9.0/32.0; - restriction[2](6,0) = -21.0/512.0; - restriction[2](6,1) = 9.0/512.0; - restriction[2](6,2) = -33.0/512.0; - restriction[2](6,3) = 77.0/512.0; - restriction[2](6,4) = -9.0/128.0; - restriction[2](6,5) = -9.0/128.0; - restriction[2](6,6) = 33.0/128.0; - restriction[2](6,7) = 21.0/128.0; - restriction[2](6,8) = 9.0/32.0; - restriction[2](7,0) = -21.0/512.0; - restriction[2](7,1) = 21.0/512.0; - restriction[2](7,2) = -9.0/512.0; - restriction[2](7,3) = 9.0/512.0; - restriction[2](7,4) = -7.0/128.0; - restriction[2](7,5) = 9.0/128.0; - restriction[2](7,6) = 3.0/128.0; - restriction[2](7,7) = -9.0/128.0; - restriction[2](7,8) = -3.0/32.0; - restriction[2](8,0) = 49.0/1024.0; - restriction[2](8,1) = -21.0/1024.0; - restriction[2](8,2) = 9.0/1024.0; - restriction[2](8,3) = -21.0/1024.0; - restriction[2](8,4) = 21.0/256.0; - restriction[2](8,5) = -9.0/256.0; - restriction[2](8,6) = -9.0/256.0; - restriction[2](8,7) = 21.0/256.0; - restriction[2](8,8) = 9.0/64.0; - restriction[3](0,0) = -33.0/256.0; - restriction[3](0,1) = 9.0/256.0; - restriction[3](0,2) = -9.0/256.0; - restriction[3](0,3) = 33.0/256.0; - restriction[3](0,4) = -9.0/64.0; - restriction[3](0,5) = 3.0/64.0; - restriction[3](0,6) = 9.0/64.0; - restriction[3](0,7) = -11.0/64.0; - restriction[3](0,8) = -3.0/16.0; - restriction[3](1,0) = -9.0/256.0; - restriction[3](1,1) = 9.0/256.0; - restriction[3](1,2) = -9.0/256.0; - restriction[3](1,3) = 9.0/256.0; - restriction[3](1,4) = 3.0/64.0; - restriction[3](1,5) = 3.0/64.0; - restriction[3](1,6) = -3.0/64.0; - restriction[3](1,7) = -3.0/64.0; - restriction[3](1,8) = 1.0/16.0; - restriction[3](2,0) = -9.0/256.0; - restriction[3](2,1) = 9.0/256.0; - restriction[3](2,2) = -33.0/256.0; - restriction[3](2,3) = 33.0/256.0; - restriction[3](2,4) = 3.0/64.0; - restriction[3](2,5) = -9.0/64.0; - restriction[3](2,6) = -11.0/64.0; - restriction[3](2,7) = 9.0/64.0; - restriction[3](2,8) = -3.0/16.0; - restriction[3](3,0) = -33.0/256.0; - restriction[3](3,1) = 9.0/256.0; - restriction[3](3,2) = -33.0/256.0; - restriction[3](3,3) = 121.0/256.0; - restriction[3](3,4) = -9.0/64.0; - restriction[3](3,5) = -9.0/64.0; - restriction[3](3,6) = 33.0/64.0; - restriction[3](3,7) = 33.0/64.0; - restriction[3](3,8) = 9.0/16.0; - restriction[3](4,0) = 9.0/512.0; - restriction[3](4,1) = -21.0/512.0; - restriction[3](4,2) = 21.0/512.0; - restriction[3](4,3) = -9.0/512.0; - restriction[3](4,4) = -9.0/128.0; - restriction[3](4,5) = -7.0/128.0; - restriction[3](4,6) = 9.0/128.0; - restriction[3](4,7) = 3.0/128.0; - restriction[3](4,8) = -3.0/32.0; - restriction[3](5,0) = 21.0/512.0; - restriction[3](5,1) = -21.0/512.0; - restriction[3](5,2) = 9.0/512.0; - restriction[3](5,3) = -9.0/512.0; - restriction[3](5,4) = -7.0/128.0; - restriction[3](5,5) = -9.0/128.0; - restriction[3](5,6) = 3.0/128.0; - restriction[3](5,7) = 9.0/128.0; - restriction[3](5,8) = -3.0/32.0; - restriction[3](6,0) = 9.0/512.0; - restriction[3](6,1) = -21.0/512.0; - restriction[3](6,2) = 77.0/512.0; - restriction[3](6,3) = -33.0/512.0; - restriction[3](6,4) = -9.0/128.0; - restriction[3](6,5) = 21.0/128.0; - restriction[3](6,6) = 33.0/128.0; - restriction[3](6,7) = -9.0/128.0; - restriction[3](6,8) = 9.0/32.0; - restriction[3](7,0) = 77.0/512.0; - restriction[3](7,1) = -21.0/512.0; - restriction[3](7,2) = 9.0/512.0; - restriction[3](7,3) = -33.0/512.0; - restriction[3](7,4) = 21.0/128.0; - restriction[3](7,5) = -9.0/128.0; - restriction[3](7,6) = -9.0/128.0; - restriction[3](7,7) = 33.0/128.0; - restriction[3](7,8) = 9.0/32.0; - restriction[3](8,0) = -21.0/1024.0; - restriction[3](8,1) = 49.0/1024.0; - restriction[3](8,2) = -21.0/1024.0; - restriction[3](8,3) = 9.0/1024.0; - restriction[3](8,4) = 21.0/256.0; - restriction[3](8,5) = 21.0/256.0; - restriction[3](8,6) = -9.0/256.0; - restriction[3](8,7) = -9.0/256.0; - restriction[3](8,8) = 9.0/64.0; -}; - - - -template<> -FEDG_Q3<2>::FEDG_Q3(): - FEQ3<2>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 121.0/256.0; - restriction[0](0,1) = -11.0/256.0; - restriction[0](0,2) = 1.0/256.0; - restriction[0](0,3) = -11.0/256.0; - restriction[0](0,4) = 165.0/256.0; - restriction[0](0,5) = -33.0/64.0; - restriction[0](0,6) = -15.0/256.0; - restriction[0](0,7) = 3.0/64.0; - restriction[0](0,8) = -15.0/256.0; - restriction[0](0,9) = 3.0/64.0; - restriction[0](0,10) = 165.0/256.0; - restriction[0](0,11) = -33.0/64.0; - restriction[0](0,12) = 225.0/256.0; - restriction[0](0,13) = -45.0/64.0; - restriction[0](0,14) = 9.0/16.0; - restriction[0](0,15) = -45.0/64.0; - restriction[0](1,0) = -11.0/128.0; - restriction[0](1,1) = -11.0/256.0; - restriction[0](1,2) = 1.0/256.0; - restriction[0](1,3) = 1.0/128.0; - restriction[0](1,4) = 33.0/256.0; - restriction[0](1,5) = 33.0/256.0; - restriction[0](1,6) = -15.0/256.0; - restriction[0](1,7) = 3.0/64.0; - restriction[0](1,8) = -3.0/256.0; - restriction[0](1,9) = -3.0/256.0; - restriction[0](1,10) = -15.0/128.0; - restriction[0](1,11) = 3.0/32.0; - restriction[0](1,12) = 45.0/256.0; - restriction[0](1,13) = 45.0/256.0; - restriction[0](1,14) = -9.0/64.0; - restriction[0](1,15) = -9.0/64.0; - restriction[0](2,0) = 1.0/64.0; - restriction[0](2,1) = 1.0/128.0; - restriction[0](2,2) = 1.0/256.0; - restriction[0](2,3) = 1.0/128.0; - restriction[0](2,4) = -3.0/128.0; - restriction[0](2,5) = -3.0/128.0; - restriction[0](2,6) = -3.0/256.0; - restriction[0](2,7) = -3.0/256.0; - restriction[0](2,8) = -3.0/256.0; - restriction[0](2,9) = -3.0/256.0; - restriction[0](2,10) = -3.0/128.0; - restriction[0](2,11) = -3.0/128.0; - restriction[0](2,12) = 9.0/256.0; - restriction[0](2,13) = 9.0/256.0; - restriction[0](2,14) = 9.0/256.0; - restriction[0](2,15) = 9.0/256.0; - restriction[0](3,0) = -11.0/128.0; - restriction[0](3,1) = 1.0/128.0; - restriction[0](3,2) = 1.0/256.0; - restriction[0](3,3) = -11.0/256.0; - restriction[0](3,4) = -15.0/128.0; - restriction[0](3,5) = 3.0/32.0; - restriction[0](3,6) = -3.0/256.0; - restriction[0](3,7) = -3.0/256.0; - restriction[0](3,8) = -15.0/256.0; - restriction[0](3,9) = 3.0/64.0; - restriction[0](3,10) = 33.0/256.0; - restriction[0](3,11) = 33.0/256.0; - restriction[0](3,12) = 45.0/256.0; - restriction[0](3,13) = -9.0/64.0; - restriction[0](3,14) = -9.0/64.0; - restriction[0](3,15) = 45.0/256.0; - restriction[0](4,0) = -11.0/288.0; - restriction[0](4,1) = 583.0/6912.0; - restriction[0](4,2) = -53.0/6912.0; - restriction[0](4,3) = 1.0/288.0; - restriction[0](4,4) = 385.0/2304.0; - restriction[0](4,5) = 979.0/2304.0; - restriction[0](4,6) = 265.0/2304.0; - restriction[0](4,7) = -53.0/576.0; - restriction[0](4,8) = -35.0/2304.0; - restriction[0](4,9) = -89.0/2304.0; - restriction[0](4,10) = -5.0/96.0; - restriction[0](4,11) = 1.0/24.0; - restriction[0](4,12) = 175.0/768.0; - restriction[0](4,13) = 445.0/768.0; - restriction[0](4,14) = -89.0/192.0; - restriction[0](4,15) = -35.0/192.0; - restriction[0](5,0) = 55.0/2304.0; - restriction[0](5,1) = 407.0/6912.0; - restriction[0](5,2) = -37.0/6912.0; - restriction[0](5,3) = -5.0/2304.0; - restriction[0](5,4) = -187.0/2304.0; - restriction[0](5,5) = 55.0/1152.0; - restriction[0](5,6) = 185.0/2304.0; - restriction[0](5,7) = -37.0/576.0; - restriction[0](5,8) = 17.0/2304.0; - restriction[0](5,9) = -5.0/1152.0; - restriction[0](5,10) = 25.0/768.0; - restriction[0](5,11) = -5.0/192.0; - restriction[0](5,12) = -85.0/768.0; - restriction[0](5,13) = 25.0/384.0; - restriction[0](5,14) = -5.0/96.0; - restriction[0](5,15) = 17.0/192.0; - restriction[0](6,0) = 1.0/144.0; - restriction[0](6,1) = 1.0/288.0; - restriction[0](6,2) = -53.0/6912.0; - restriction[0](6,3) = -53.0/3456.0; - restriction[0](6,4) = -1.0/96.0; - restriction[0](6,5) = -1.0/96.0; - restriction[0](6,6) = -35.0/2304.0; - restriction[0](6,7) = -89.0/2304.0; - restriction[0](6,8) = 53.0/2304.0; - restriction[0](6,9) = 53.0/2304.0; - restriction[0](6,10) = -35.0/1152.0; - restriction[0](6,11) = -89.0/1152.0; - restriction[0](6,12) = 35.0/768.0; - restriction[0](6,13) = 35.0/768.0; - restriction[0](6,14) = 89.0/768.0; - restriction[0](6,15) = 89.0/768.0; - restriction[0](7,0) = -5.0/1152.0; - restriction[0](7,1) = -5.0/2304.0; - restriction[0](7,2) = -37.0/6912.0; - restriction[0](7,3) = -37.0/3456.0; - restriction[0](7,4) = 5.0/768.0; - restriction[0](7,5) = 5.0/768.0; - restriction[0](7,6) = 17.0/2304.0; - restriction[0](7,7) = -5.0/1152.0; - restriction[0](7,8) = 37.0/2304.0; - restriction[0](7,9) = 37.0/2304.0; - restriction[0](7,10) = 17.0/1152.0; - restriction[0](7,11) = -5.0/576.0; - restriction[0](7,12) = -17.0/768.0; - restriction[0](7,13) = -17.0/768.0; - restriction[0](7,14) = 5.0/384.0; - restriction[0](7,15) = 5.0/384.0; - restriction[0](8,0) = 1.0/144.0; - restriction[0](8,1) = -53.0/3456.0; - restriction[0](8,2) = -53.0/6912.0; - restriction[0](8,3) = 1.0/288.0; - restriction[0](8,4) = -35.0/1152.0; - restriction[0](8,5) = -89.0/1152.0; - restriction[0](8,6) = 53.0/2304.0; - restriction[0](8,7) = 53.0/2304.0; - restriction[0](8,8) = -35.0/2304.0; - restriction[0](8,9) = -89.0/2304.0; - restriction[0](8,10) = -1.0/96.0; - restriction[0](8,11) = -1.0/96.0; - restriction[0](8,12) = 35.0/768.0; - restriction[0](8,13) = 89.0/768.0; - restriction[0](8,14) = 89.0/768.0; - restriction[0](8,15) = 35.0/768.0; - restriction[0](9,0) = -5.0/1152.0; - restriction[0](9,1) = -37.0/3456.0; - restriction[0](9,2) = -37.0/6912.0; - restriction[0](9,3) = -5.0/2304.0; - restriction[0](9,4) = 17.0/1152.0; - restriction[0](9,5) = -5.0/576.0; - restriction[0](9,6) = 37.0/2304.0; - restriction[0](9,7) = 37.0/2304.0; - restriction[0](9,8) = 17.0/2304.0; - restriction[0](9,9) = -5.0/1152.0; - restriction[0](9,10) = 5.0/768.0; - restriction[0](9,11) = 5.0/768.0; - restriction[0](9,12) = -17.0/768.0; - restriction[0](9,13) = 5.0/384.0; - restriction[0](9,14) = 5.0/384.0; - restriction[0](9,15) = -17.0/768.0; - restriction[0](10,0) = -11.0/288.0; - restriction[0](10,1) = 1.0/288.0; - restriction[0](10,2) = -53.0/6912.0; - restriction[0](10,3) = 583.0/6912.0; - restriction[0](10,4) = -5.0/96.0; - restriction[0](10,5) = 1.0/24.0; - restriction[0](10,6) = -35.0/2304.0; - restriction[0](10,7) = -89.0/2304.0; - restriction[0](10,8) = 265.0/2304.0; - restriction[0](10,9) = -53.0/576.0; - restriction[0](10,10) = 385.0/2304.0; - restriction[0](10,11) = 979.0/2304.0; - restriction[0](10,12) = 175.0/768.0; - restriction[0](10,13) = -35.0/192.0; - restriction[0](10,14) = -89.0/192.0; - restriction[0](10,15) = 445.0/768.0; - restriction[0](11,0) = 55.0/2304.0; - restriction[0](11,1) = -5.0/2304.0; - restriction[0](11,2) = -37.0/6912.0; - restriction[0](11,3) = 407.0/6912.0; - restriction[0](11,4) = 25.0/768.0; - restriction[0](11,5) = -5.0/192.0; - restriction[0](11,6) = 17.0/2304.0; - restriction[0](11,7) = -5.0/1152.0; - restriction[0](11,8) = 185.0/2304.0; - restriction[0](11,9) = -37.0/576.0; - restriction[0](11,10) = -187.0/2304.0; - restriction[0](11,11) = 55.0/1152.0; - restriction[0](11,12) = -85.0/768.0; - restriction[0](11,13) = 17.0/192.0; - restriction[0](11,14) = -5.0/96.0; - restriction[0](11,15) = 25.0/384.0; - restriction[0](12,0) = 1.0/324.0; - restriction[0](12,1) = -53.0/7776.0; - restriction[0](12,2) = 2809.0/186624.0; - restriction[0](12,3) = -53.0/7776.0; - restriction[0](12,4) = -35.0/2592.0; - restriction[0](12,5) = -89.0/2592.0; - restriction[0](12,6) = 1855.0/62208.0; - restriction[0](12,7) = 4717.0/62208.0; - restriction[0](12,8) = 1855.0/62208.0; - restriction[0](12,9) = 4717.0/62208.0; - restriction[0](12,10) = -35.0/2592.0; - restriction[0](12,11) = -89.0/2592.0; - restriction[0](12,12) = 1225.0/20736.0; - restriction[0](12,13) = 3115.0/20736.0; - restriction[0](12,14) = 7921.0/20736.0; - restriction[0](12,15) = 3115.0/20736.0; - restriction[0](13,0) = -5.0/2592.0; - restriction[0](13,1) = -37.0/7776.0; - restriction[0](13,2) = 1961.0/186624.0; - restriction[0](13,3) = 265.0/62208.0; - restriction[0](13,4) = 17.0/2592.0; - restriction[0](13,5) = -5.0/1296.0; - restriction[0](13,6) = 1295.0/62208.0; - restriction[0](13,7) = 3293.0/62208.0; - restriction[0](13,8) = -901.0/62208.0; - restriction[0](13,9) = 265.0/31104.0; - restriction[0](13,10) = 175.0/20736.0; - restriction[0](13,11) = 445.0/20736.0; - restriction[0](13,12) = -595.0/20736.0; - restriction[0](13,13) = 175.0/10368.0; - restriction[0](13,14) = 445.0/10368.0; - restriction[0](13,15) = -1513.0/20736.0; - restriction[0](14,0) = 25.0/20736.0; - restriction[0](14,1) = 185.0/62208.0; - restriction[0](14,2) = 1369.0/186624.0; - restriction[0](14,3) = 185.0/62208.0; - restriction[0](14,4) = -85.0/20736.0; - restriction[0](14,5) = 25.0/10368.0; - restriction[0](14,6) = -629.0/62208.0; - restriction[0](14,7) = 185.0/31104.0; - restriction[0](14,8) = -629.0/62208.0; - restriction[0](14,9) = 185.0/31104.0; - restriction[0](14,10) = -85.0/20736.0; - restriction[0](14,11) = 25.0/10368.0; - restriction[0](14,12) = 289.0/20736.0; - restriction[0](14,13) = -85.0/10368.0; - restriction[0](14,14) = 25.0/5184.0; - restriction[0](14,15) = -85.0/10368.0; - restriction[0](15,0) = -5.0/2592.0; - restriction[0](15,1) = 265.0/62208.0; - restriction[0](15,2) = 1961.0/186624.0; - restriction[0](15,3) = -37.0/7776.0; - restriction[0](15,4) = 175.0/20736.0; - restriction[0](15,5) = 445.0/20736.0; - restriction[0](15,6) = -901.0/62208.0; - restriction[0](15,7) = 265.0/31104.0; - restriction[0](15,8) = 1295.0/62208.0; - restriction[0](15,9) = 3293.0/62208.0; - restriction[0](15,10) = 17.0/2592.0; - restriction[0](15,11) = -5.0/1296.0; - restriction[0](15,12) = -595.0/20736.0; - restriction[0](15,13) = -1513.0/20736.0; - restriction[0](15,14) = 445.0/10368.0; - restriction[0](15,15) = 175.0/10368.0; - restriction[1](0,0) = -11.0/256.0; - restriction[1](0,1) = -11.0/128.0; - restriction[1](0,2) = 1.0/128.0; - restriction[1](0,3) = 1.0/256.0; - restriction[1](0,4) = 33.0/256.0; - restriction[1](0,5) = 33.0/256.0; - restriction[1](0,6) = -15.0/128.0; - restriction[1](0,7) = 3.0/32.0; - restriction[1](0,8) = -3.0/256.0; - restriction[1](0,9) = -3.0/256.0; - restriction[1](0,10) = -15.0/256.0; - restriction[1](0,11) = 3.0/64.0; - restriction[1](0,12) = 45.0/256.0; - restriction[1](0,13) = 45.0/256.0; - restriction[1](0,14) = -9.0/64.0; - restriction[1](0,15) = -9.0/64.0; - restriction[1](1,0) = -11.0/256.0; - restriction[1](1,1) = 121.0/256.0; - restriction[1](1,2) = -11.0/256.0; - restriction[1](1,3) = 1.0/256.0; - restriction[1](1,4) = -33.0/64.0; - restriction[1](1,5) = 165.0/256.0; - restriction[1](1,6) = 165.0/256.0; - restriction[1](1,7) = -33.0/64.0; - restriction[1](1,8) = 3.0/64.0; - restriction[1](1,9) = -15.0/256.0; - restriction[1](1,10) = -15.0/256.0; - restriction[1](1,11) = 3.0/64.0; - restriction[1](1,12) = -45.0/64.0; - restriction[1](1,13) = 225.0/256.0; - restriction[1](1,14) = -45.0/64.0; - restriction[1](1,15) = 9.0/16.0; - restriction[1](2,0) = 1.0/128.0; - restriction[1](2,1) = -11.0/128.0; - restriction[1](2,2) = -11.0/256.0; - restriction[1](2,3) = 1.0/256.0; - restriction[1](2,4) = 3.0/32.0; - restriction[1](2,5) = -15.0/128.0; - restriction[1](2,6) = 33.0/256.0; - restriction[1](2,7) = 33.0/256.0; - restriction[1](2,8) = 3.0/64.0; - restriction[1](2,9) = -15.0/256.0; - restriction[1](2,10) = -3.0/256.0; - restriction[1](2,11) = -3.0/256.0; - restriction[1](2,12) = -9.0/64.0; - restriction[1](2,13) = 45.0/256.0; - restriction[1](2,14) = 45.0/256.0; - restriction[1](2,15) = -9.0/64.0; - restriction[1](3,0) = 1.0/128.0; - restriction[1](3,1) = 1.0/64.0; - restriction[1](3,2) = 1.0/128.0; - restriction[1](3,3) = 1.0/256.0; - restriction[1](3,4) = -3.0/128.0; - restriction[1](3,5) = -3.0/128.0; - restriction[1](3,6) = -3.0/128.0; - restriction[1](3,7) = -3.0/128.0; - restriction[1](3,8) = -3.0/256.0; - restriction[1](3,9) = -3.0/256.0; - restriction[1](3,10) = -3.0/256.0; - restriction[1](3,11) = -3.0/256.0; - restriction[1](3,12) = 9.0/256.0; - restriction[1](3,13) = 9.0/256.0; - restriction[1](3,14) = 9.0/256.0; - restriction[1](3,15) = 9.0/256.0; - restriction[1](4,0) = 407.0/6912.0; - restriction[1](4,1) = 55.0/2304.0; - restriction[1](4,2) = -5.0/2304.0; - restriction[1](4,3) = -37.0/6912.0; - restriction[1](4,4) = 55.0/1152.0; - restriction[1](4,5) = -187.0/2304.0; - restriction[1](4,6) = 25.0/768.0; - restriction[1](4,7) = -5.0/192.0; - restriction[1](4,8) = -5.0/1152.0; - restriction[1](4,9) = 17.0/2304.0; - restriction[1](4,10) = 185.0/2304.0; - restriction[1](4,11) = -37.0/576.0; - restriction[1](4,12) = 25.0/384.0; - restriction[1](4,13) = -85.0/768.0; - restriction[1](4,14) = 17.0/192.0; - restriction[1](4,15) = -5.0/96.0; - restriction[1](5,0) = 583.0/6912.0; - restriction[1](5,1) = -11.0/288.0; - restriction[1](5,2) = 1.0/288.0; - restriction[1](5,3) = -53.0/6912.0; - restriction[1](5,4) = 979.0/2304.0; - restriction[1](5,5) = 385.0/2304.0; - restriction[1](5,6) = -5.0/96.0; - restriction[1](5,7) = 1.0/24.0; - restriction[1](5,8) = -89.0/2304.0; - restriction[1](5,9) = -35.0/2304.0; - restriction[1](5,10) = 265.0/2304.0; - restriction[1](5,11) = -53.0/576.0; - restriction[1](5,12) = 445.0/768.0; - restriction[1](5,13) = 175.0/768.0; - restriction[1](5,14) = -35.0/192.0; - restriction[1](5,15) = -89.0/192.0; - restriction[1](6,0) = 1.0/288.0; - restriction[1](6,1) = -11.0/288.0; - restriction[1](6,2) = 583.0/6912.0; - restriction[1](6,3) = -53.0/6912.0; - restriction[1](6,4) = 1.0/24.0; - restriction[1](6,5) = -5.0/96.0; - restriction[1](6,6) = 385.0/2304.0; - restriction[1](6,7) = 979.0/2304.0; - restriction[1](6,8) = -53.0/576.0; - restriction[1](6,9) = 265.0/2304.0; - restriction[1](6,10) = -35.0/2304.0; - restriction[1](6,11) = -89.0/2304.0; - restriction[1](6,12) = -35.0/192.0; - restriction[1](6,13) = 175.0/768.0; - restriction[1](6,14) = 445.0/768.0; - restriction[1](6,15) = -89.0/192.0; - restriction[1](7,0) = -5.0/2304.0; - restriction[1](7,1) = 55.0/2304.0; - restriction[1](7,2) = 407.0/6912.0; - restriction[1](7,3) = -37.0/6912.0; - restriction[1](7,4) = -5.0/192.0; - restriction[1](7,5) = 25.0/768.0; - restriction[1](7,6) = -187.0/2304.0; - restriction[1](7,7) = 55.0/1152.0; - restriction[1](7,8) = -37.0/576.0; - restriction[1](7,9) = 185.0/2304.0; - restriction[1](7,10) = 17.0/2304.0; - restriction[1](7,11) = -5.0/1152.0; - restriction[1](7,12) = 17.0/192.0; - restriction[1](7,13) = -85.0/768.0; - restriction[1](7,14) = 25.0/384.0; - restriction[1](7,15) = -5.0/96.0; - restriction[1](8,0) = -37.0/3456.0; - restriction[1](8,1) = -5.0/1152.0; - restriction[1](8,2) = -5.0/2304.0; - restriction[1](8,3) = -37.0/6912.0; - restriction[1](8,4) = -5.0/576.0; - restriction[1](8,5) = 17.0/1152.0; - restriction[1](8,6) = 5.0/768.0; - restriction[1](8,7) = 5.0/768.0; - restriction[1](8,8) = -5.0/1152.0; - restriction[1](8,9) = 17.0/2304.0; - restriction[1](8,10) = 37.0/2304.0; - restriction[1](8,11) = 37.0/2304.0; - restriction[1](8,12) = 5.0/384.0; - restriction[1](8,13) = -17.0/768.0; - restriction[1](8,14) = -17.0/768.0; - restriction[1](8,15) = 5.0/384.0; - restriction[1](9,0) = -53.0/3456.0; - restriction[1](9,1) = 1.0/144.0; - restriction[1](9,2) = 1.0/288.0; - restriction[1](9,3) = -53.0/6912.0; - restriction[1](9,4) = -89.0/1152.0; - restriction[1](9,5) = -35.0/1152.0; - restriction[1](9,6) = -1.0/96.0; - restriction[1](9,7) = -1.0/96.0; - restriction[1](9,8) = -89.0/2304.0; - restriction[1](9,9) = -35.0/2304.0; - restriction[1](9,10) = 53.0/2304.0; - restriction[1](9,11) = 53.0/2304.0; - restriction[1](9,12) = 89.0/768.0; - restriction[1](9,13) = 35.0/768.0; - restriction[1](9,14) = 35.0/768.0; - restriction[1](9,15) = 89.0/768.0; - restriction[1](10,0) = 1.0/288.0; - restriction[1](10,1) = 1.0/144.0; - restriction[1](10,2) = -53.0/3456.0; - restriction[1](10,3) = -53.0/6912.0; - restriction[1](10,4) = -1.0/96.0; - restriction[1](10,5) = -1.0/96.0; - restriction[1](10,6) = -35.0/1152.0; - restriction[1](10,7) = -89.0/1152.0; - restriction[1](10,8) = 53.0/2304.0; - restriction[1](10,9) = 53.0/2304.0; - restriction[1](10,10) = -35.0/2304.0; - restriction[1](10,11) = -89.0/2304.0; - restriction[1](10,12) = 35.0/768.0; - restriction[1](10,13) = 35.0/768.0; - restriction[1](10,14) = 89.0/768.0; - restriction[1](10,15) = 89.0/768.0; - restriction[1](11,0) = -5.0/2304.0; - restriction[1](11,1) = -5.0/1152.0; - restriction[1](11,2) = -37.0/3456.0; - restriction[1](11,3) = -37.0/6912.0; - restriction[1](11,4) = 5.0/768.0; - restriction[1](11,5) = 5.0/768.0; - restriction[1](11,6) = 17.0/1152.0; - restriction[1](11,7) = -5.0/576.0; - restriction[1](11,8) = 37.0/2304.0; - restriction[1](11,9) = 37.0/2304.0; - restriction[1](11,10) = 17.0/2304.0; - restriction[1](11,11) = -5.0/1152.0; - restriction[1](11,12) = -17.0/768.0; - restriction[1](11,13) = -17.0/768.0; - restriction[1](11,14) = 5.0/384.0; - restriction[1](11,15) = 5.0/384.0; - restriction[1](12,0) = -37.0/7776.0; - restriction[1](12,1) = -5.0/2592.0; - restriction[1](12,2) = 265.0/62208.0; - restriction[1](12,3) = 1961.0/186624.0; - restriction[1](12,4) = -5.0/1296.0; - restriction[1](12,5) = 17.0/2592.0; - restriction[1](12,6) = 175.0/20736.0; - restriction[1](12,7) = 445.0/20736.0; - restriction[1](12,8) = 265.0/31104.0; - restriction[1](12,9) = -901.0/62208.0; - restriction[1](12,10) = 1295.0/62208.0; - restriction[1](12,11) = 3293.0/62208.0; - restriction[1](12,12) = 175.0/10368.0; - restriction[1](12,13) = -595.0/20736.0; - restriction[1](12,14) = -1513.0/20736.0; - restriction[1](12,15) = 445.0/10368.0; - restriction[1](13,0) = -53.0/7776.0; - restriction[1](13,1) = 1.0/324.0; - restriction[1](13,2) = -53.0/7776.0; - restriction[1](13,3) = 2809.0/186624.0; - restriction[1](13,4) = -89.0/2592.0; - restriction[1](13,5) = -35.0/2592.0; - restriction[1](13,6) = -35.0/2592.0; - restriction[1](13,7) = -89.0/2592.0; - restriction[1](13,8) = 4717.0/62208.0; - restriction[1](13,9) = 1855.0/62208.0; - restriction[1](13,10) = 1855.0/62208.0; - restriction[1](13,11) = 4717.0/62208.0; - restriction[1](13,12) = 3115.0/20736.0; - restriction[1](13,13) = 1225.0/20736.0; - restriction[1](13,14) = 3115.0/20736.0; - restriction[1](13,15) = 7921.0/20736.0; - restriction[1](14,0) = 265.0/62208.0; - restriction[1](14,1) = -5.0/2592.0; - restriction[1](14,2) = -37.0/7776.0; - restriction[1](14,3) = 1961.0/186624.0; - restriction[1](14,4) = 445.0/20736.0; - restriction[1](14,5) = 175.0/20736.0; - restriction[1](14,6) = 17.0/2592.0; - restriction[1](14,7) = -5.0/1296.0; - restriction[1](14,8) = 3293.0/62208.0; - restriction[1](14,9) = 1295.0/62208.0; - restriction[1](14,10) = -901.0/62208.0; - restriction[1](14,11) = 265.0/31104.0; - restriction[1](14,12) = -1513.0/20736.0; - restriction[1](14,13) = -595.0/20736.0; - restriction[1](14,14) = 175.0/10368.0; - restriction[1](14,15) = 445.0/10368.0; - restriction[1](15,0) = 185.0/62208.0; - restriction[1](15,1) = 25.0/20736.0; - restriction[1](15,2) = 185.0/62208.0; - restriction[1](15,3) = 1369.0/186624.0; - restriction[1](15,4) = 25.0/10368.0; - restriction[1](15,5) = -85.0/20736.0; - restriction[1](15,6) = -85.0/20736.0; - restriction[1](15,7) = 25.0/10368.0; - restriction[1](15,8) = 185.0/31104.0; - restriction[1](15,9) = -629.0/62208.0; - restriction[1](15,10) = -629.0/62208.0; - restriction[1](15,11) = 185.0/31104.0; - restriction[1](15,12) = -85.0/10368.0; - restriction[1](15,13) = 289.0/20736.0; - restriction[1](15,14) = -85.0/10368.0; - restriction[1](15,15) = 25.0/5184.0; - restriction[2](0,0) = 1.0/256.0; - restriction[2](0,1) = 1.0/128.0; - restriction[2](0,2) = 1.0/64.0; - restriction[2](0,3) = 1.0/128.0; - restriction[2](0,4) = -3.0/256.0; - restriction[2](0,5) = -3.0/256.0; - restriction[2](0,6) = -3.0/128.0; - restriction[2](0,7) = -3.0/128.0; - restriction[2](0,8) = -3.0/128.0; - restriction[2](0,9) = -3.0/128.0; - restriction[2](0,10) = -3.0/256.0; - restriction[2](0,11) = -3.0/256.0; - restriction[2](0,12) = 9.0/256.0; - restriction[2](0,13) = 9.0/256.0; - restriction[2](0,14) = 9.0/256.0; - restriction[2](0,15) = 9.0/256.0; - restriction[2](1,0) = 1.0/256.0; - restriction[2](1,1) = -11.0/256.0; - restriction[2](1,2) = -11.0/128.0; - restriction[2](1,3) = 1.0/128.0; - restriction[2](1,4) = 3.0/64.0; - restriction[2](1,5) = -15.0/256.0; - restriction[2](1,6) = 33.0/256.0; - restriction[2](1,7) = 33.0/256.0; - restriction[2](1,8) = 3.0/32.0; - restriction[2](1,9) = -15.0/128.0; - restriction[2](1,10) = -3.0/256.0; - restriction[2](1,11) = -3.0/256.0; - restriction[2](1,12) = -9.0/64.0; - restriction[2](1,13) = 45.0/256.0; - restriction[2](1,14) = 45.0/256.0; - restriction[2](1,15) = -9.0/64.0; - restriction[2](2,0) = 1.0/256.0; - restriction[2](2,1) = -11.0/256.0; - restriction[2](2,2) = 121.0/256.0; - restriction[2](2,3) = -11.0/256.0; - restriction[2](2,4) = 3.0/64.0; - restriction[2](2,5) = -15.0/256.0; - restriction[2](2,6) = -33.0/64.0; - restriction[2](2,7) = 165.0/256.0; - restriction[2](2,8) = -33.0/64.0; - restriction[2](2,9) = 165.0/256.0; - restriction[2](2,10) = 3.0/64.0; - restriction[2](2,11) = -15.0/256.0; - restriction[2](2,12) = 9.0/16.0; - restriction[2](2,13) = -45.0/64.0; - restriction[2](2,14) = 225.0/256.0; - restriction[2](2,15) = -45.0/64.0; - restriction[2](3,0) = 1.0/256.0; - restriction[2](3,1) = 1.0/128.0; - restriction[2](3,2) = -11.0/128.0; - restriction[2](3,3) = -11.0/256.0; - restriction[2](3,4) = -3.0/256.0; - restriction[2](3,5) = -3.0/256.0; - restriction[2](3,6) = 3.0/32.0; - restriction[2](3,7) = -15.0/128.0; - restriction[2](3,8) = 33.0/256.0; - restriction[2](3,9) = 33.0/256.0; - restriction[2](3,10) = 3.0/64.0; - restriction[2](3,11) = -15.0/256.0; - restriction[2](3,12) = -9.0/64.0; - restriction[2](3,13) = -9.0/64.0; - restriction[2](3,14) = 45.0/256.0; - restriction[2](3,15) = 45.0/256.0; - restriction[2](4,0) = -37.0/6912.0; - restriction[2](4,1) = -5.0/2304.0; - restriction[2](4,2) = -5.0/1152.0; - restriction[2](4,3) = -37.0/3456.0; - restriction[2](4,4) = -5.0/1152.0; - restriction[2](4,5) = 17.0/2304.0; - restriction[2](4,6) = 5.0/768.0; - restriction[2](4,7) = 5.0/768.0; - restriction[2](4,8) = -5.0/576.0; - restriction[2](4,9) = 17.0/1152.0; - restriction[2](4,10) = 37.0/2304.0; - restriction[2](4,11) = 37.0/2304.0; - restriction[2](4,12) = 5.0/384.0; - restriction[2](4,13) = -17.0/768.0; - restriction[2](4,14) = -17.0/768.0; - restriction[2](4,15) = 5.0/384.0; - restriction[2](5,0) = -53.0/6912.0; - restriction[2](5,1) = 1.0/288.0; - restriction[2](5,2) = 1.0/144.0; - restriction[2](5,3) = -53.0/3456.0; - restriction[2](5,4) = -89.0/2304.0; - restriction[2](5,5) = -35.0/2304.0; - restriction[2](5,6) = -1.0/96.0; - restriction[2](5,7) = -1.0/96.0; - restriction[2](5,8) = -89.0/1152.0; - restriction[2](5,9) = -35.0/1152.0; - restriction[2](5,10) = 53.0/2304.0; - restriction[2](5,11) = 53.0/2304.0; - restriction[2](5,12) = 89.0/768.0; - restriction[2](5,13) = 35.0/768.0; - restriction[2](5,14) = 35.0/768.0; - restriction[2](5,15) = 89.0/768.0; - restriction[2](6,0) = -37.0/6912.0; - restriction[2](6,1) = 407.0/6912.0; - restriction[2](6,2) = 55.0/2304.0; - restriction[2](6,3) = -5.0/2304.0; - restriction[2](6,4) = -37.0/576.0; - restriction[2](6,5) = 185.0/2304.0; - restriction[2](6,6) = 55.0/1152.0; - restriction[2](6,7) = -187.0/2304.0; - restriction[2](6,8) = -5.0/192.0; - restriction[2](6,9) = 25.0/768.0; - restriction[2](6,10) = -5.0/1152.0; - restriction[2](6,11) = 17.0/2304.0; - restriction[2](6,12) = -5.0/96.0; - restriction[2](6,13) = 25.0/384.0; - restriction[2](6,14) = -85.0/768.0; - restriction[2](6,15) = 17.0/192.0; - restriction[2](7,0) = -53.0/6912.0; - restriction[2](7,1) = 583.0/6912.0; - restriction[2](7,2) = -11.0/288.0; - restriction[2](7,3) = 1.0/288.0; - restriction[2](7,4) = -53.0/576.0; - restriction[2](7,5) = 265.0/2304.0; - restriction[2](7,6) = 979.0/2304.0; - restriction[2](7,7) = 385.0/2304.0; - restriction[2](7,8) = 1.0/24.0; - restriction[2](7,9) = -5.0/96.0; - restriction[2](7,10) = -89.0/2304.0; - restriction[2](7,11) = -35.0/2304.0; - restriction[2](7,12) = -89.0/192.0; - restriction[2](7,13) = 445.0/768.0; - restriction[2](7,14) = 175.0/768.0; - restriction[2](7,15) = -35.0/192.0; - restriction[2](8,0) = -37.0/6912.0; - restriction[2](8,1) = -5.0/2304.0; - restriction[2](8,2) = 55.0/2304.0; - restriction[2](8,3) = 407.0/6912.0; - restriction[2](8,4) = -5.0/1152.0; - restriction[2](8,5) = 17.0/2304.0; - restriction[2](8,6) = -5.0/192.0; - restriction[2](8,7) = 25.0/768.0; - restriction[2](8,8) = 55.0/1152.0; - restriction[2](8,9) = -187.0/2304.0; - restriction[2](8,10) = -37.0/576.0; - restriction[2](8,11) = 185.0/2304.0; - restriction[2](8,12) = -5.0/96.0; - restriction[2](8,13) = 17.0/192.0; - restriction[2](8,14) = -85.0/768.0; - restriction[2](8,15) = 25.0/384.0; - restriction[2](9,0) = -53.0/6912.0; - restriction[2](9,1) = 1.0/288.0; - restriction[2](9,2) = -11.0/288.0; - restriction[2](9,3) = 583.0/6912.0; - restriction[2](9,4) = -89.0/2304.0; - restriction[2](9,5) = -35.0/2304.0; - restriction[2](9,6) = 1.0/24.0; - restriction[2](9,7) = -5.0/96.0; - restriction[2](9,8) = 979.0/2304.0; - restriction[2](9,9) = 385.0/2304.0; - restriction[2](9,10) = -53.0/576.0; - restriction[2](9,11) = 265.0/2304.0; - restriction[2](9,12) = -89.0/192.0; - restriction[2](9,13) = -35.0/192.0; - restriction[2](9,14) = 175.0/768.0; - restriction[2](9,15) = 445.0/768.0; - restriction[2](10,0) = -37.0/6912.0; - restriction[2](10,1) = -37.0/3456.0; - restriction[2](10,2) = -5.0/1152.0; - restriction[2](10,3) = -5.0/2304.0; - restriction[2](10,4) = 37.0/2304.0; - restriction[2](10,5) = 37.0/2304.0; - restriction[2](10,6) = -5.0/576.0; - restriction[2](10,7) = 17.0/1152.0; - restriction[2](10,8) = 5.0/768.0; - restriction[2](10,9) = 5.0/768.0; - restriction[2](10,10) = -5.0/1152.0; - restriction[2](10,11) = 17.0/2304.0; - restriction[2](10,12) = 5.0/384.0; - restriction[2](10,13) = 5.0/384.0; - restriction[2](10,14) = -17.0/768.0; - restriction[2](10,15) = -17.0/768.0; - restriction[2](11,0) = -53.0/6912.0; - restriction[2](11,1) = -53.0/3456.0; - restriction[2](11,2) = 1.0/144.0; - restriction[2](11,3) = 1.0/288.0; - restriction[2](11,4) = 53.0/2304.0; - restriction[2](11,5) = 53.0/2304.0; - restriction[2](11,6) = -89.0/1152.0; - restriction[2](11,7) = -35.0/1152.0; - restriction[2](11,8) = -1.0/96.0; - restriction[2](11,9) = -1.0/96.0; - restriction[2](11,10) = -89.0/2304.0; - restriction[2](11,11) = -35.0/2304.0; - restriction[2](11,12) = 89.0/768.0; - restriction[2](11,13) = 89.0/768.0; - restriction[2](11,14) = 35.0/768.0; - restriction[2](11,15) = 35.0/768.0; - restriction[2](12,0) = 1369.0/186624.0; - restriction[2](12,1) = 185.0/62208.0; - restriction[2](12,2) = 25.0/20736.0; - restriction[2](12,3) = 185.0/62208.0; - restriction[2](12,4) = 185.0/31104.0; - restriction[2](12,5) = -629.0/62208.0; - restriction[2](12,6) = 25.0/10368.0; - restriction[2](12,7) = -85.0/20736.0; - restriction[2](12,8) = 25.0/10368.0; - restriction[2](12,9) = -85.0/20736.0; - restriction[2](12,10) = 185.0/31104.0; - restriction[2](12,11) = -629.0/62208.0; - restriction[2](12,12) = 25.0/5184.0; - restriction[2](12,13) = -85.0/10368.0; - restriction[2](12,14) = 289.0/20736.0; - restriction[2](12,15) = -85.0/10368.0; - restriction[2](13,0) = 1961.0/186624.0; - restriction[2](13,1) = -37.0/7776.0; - restriction[2](13,2) = -5.0/2592.0; - restriction[2](13,3) = 265.0/62208.0; - restriction[2](13,4) = 3293.0/62208.0; - restriction[2](13,5) = 1295.0/62208.0; - restriction[2](13,6) = -5.0/1296.0; - restriction[2](13,7) = 17.0/2592.0; - restriction[2](13,8) = 445.0/20736.0; - restriction[2](13,9) = 175.0/20736.0; - restriction[2](13,10) = 265.0/31104.0; - restriction[2](13,11) = -901.0/62208.0; - restriction[2](13,12) = 445.0/10368.0; - restriction[2](13,13) = 175.0/10368.0; - restriction[2](13,14) = -595.0/20736.0; - restriction[2](13,15) = -1513.0/20736.0; - restriction[2](14,0) = 2809.0/186624.0; - restriction[2](14,1) = -53.0/7776.0; - restriction[2](14,2) = 1.0/324.0; - restriction[2](14,3) = -53.0/7776.0; - restriction[2](14,4) = 4717.0/62208.0; - restriction[2](14,5) = 1855.0/62208.0; - restriction[2](14,6) = -89.0/2592.0; - restriction[2](14,7) = -35.0/2592.0; - restriction[2](14,8) = -89.0/2592.0; - restriction[2](14,9) = -35.0/2592.0; - restriction[2](14,10) = 4717.0/62208.0; - restriction[2](14,11) = 1855.0/62208.0; - restriction[2](14,12) = 7921.0/20736.0; - restriction[2](14,13) = 3115.0/20736.0; - restriction[2](14,14) = 1225.0/20736.0; - restriction[2](14,15) = 3115.0/20736.0; - restriction[2](15,0) = 1961.0/186624.0; - restriction[2](15,1) = 265.0/62208.0; - restriction[2](15,2) = -5.0/2592.0; - restriction[2](15,3) = -37.0/7776.0; - restriction[2](15,4) = 265.0/31104.0; - restriction[2](15,5) = -901.0/62208.0; - restriction[2](15,6) = 445.0/20736.0; - restriction[2](15,7) = 175.0/20736.0; - restriction[2](15,8) = -5.0/1296.0; - restriction[2](15,9) = 17.0/2592.0; - restriction[2](15,10) = 3293.0/62208.0; - restriction[2](15,11) = 1295.0/62208.0; - restriction[2](15,12) = 445.0/10368.0; - restriction[2](15,13) = -1513.0/20736.0; - restriction[2](15,14) = -595.0/20736.0; - restriction[2](15,15) = 175.0/10368.0; - restriction[3](0,0) = -11.0/256.0; - restriction[3](0,1) = 1.0/256.0; - restriction[3](0,2) = 1.0/128.0; - restriction[3](0,3) = -11.0/128.0; - restriction[3](0,4) = -15.0/256.0; - restriction[3](0,5) = 3.0/64.0; - restriction[3](0,6) = -3.0/256.0; - restriction[3](0,7) = -3.0/256.0; - restriction[3](0,8) = -15.0/128.0; - restriction[3](0,9) = 3.0/32.0; - restriction[3](0,10) = 33.0/256.0; - restriction[3](0,11) = 33.0/256.0; - restriction[3](0,12) = 45.0/256.0; - restriction[3](0,13) = -9.0/64.0; - restriction[3](0,14) = -9.0/64.0; - restriction[3](0,15) = 45.0/256.0; - restriction[3](1,0) = 1.0/128.0; - restriction[3](1,1) = 1.0/256.0; - restriction[3](1,2) = 1.0/128.0; - restriction[3](1,3) = 1.0/64.0; - restriction[3](1,4) = -3.0/256.0; - restriction[3](1,5) = -3.0/256.0; - restriction[3](1,6) = -3.0/256.0; - restriction[3](1,7) = -3.0/256.0; - restriction[3](1,8) = -3.0/128.0; - restriction[3](1,9) = -3.0/128.0; - restriction[3](1,10) = -3.0/128.0; - restriction[3](1,11) = -3.0/128.0; - restriction[3](1,12) = 9.0/256.0; - restriction[3](1,13) = 9.0/256.0; - restriction[3](1,14) = 9.0/256.0; - restriction[3](1,15) = 9.0/256.0; - restriction[3](2,0) = 1.0/128.0; - restriction[3](2,1) = 1.0/256.0; - restriction[3](2,2) = -11.0/256.0; - restriction[3](2,3) = -11.0/128.0; - restriction[3](2,4) = -3.0/256.0; - restriction[3](2,5) = -3.0/256.0; - restriction[3](2,6) = 3.0/64.0; - restriction[3](2,7) = -15.0/256.0; - restriction[3](2,8) = 33.0/256.0; - restriction[3](2,9) = 33.0/256.0; - restriction[3](2,10) = 3.0/32.0; - restriction[3](2,11) = -15.0/128.0; - restriction[3](2,12) = -9.0/64.0; - restriction[3](2,13) = -9.0/64.0; - restriction[3](2,14) = 45.0/256.0; - restriction[3](2,15) = 45.0/256.0; - restriction[3](3,0) = -11.0/256.0; - restriction[3](3,1) = 1.0/256.0; - restriction[3](3,2) = -11.0/256.0; - restriction[3](3,3) = 121.0/256.0; - restriction[3](3,4) = -15.0/256.0; - restriction[3](3,5) = 3.0/64.0; - restriction[3](3,6) = 3.0/64.0; - restriction[3](3,7) = -15.0/256.0; - restriction[3](3,8) = 165.0/256.0; - restriction[3](3,9) = -33.0/64.0; - restriction[3](3,10) = -33.0/64.0; - restriction[3](3,11) = 165.0/256.0; - restriction[3](3,12) = -45.0/64.0; - restriction[3](3,13) = 9.0/16.0; - restriction[3](3,14) = -45.0/64.0; - restriction[3](3,15) = 225.0/256.0; - restriction[3](4,0) = 1.0/288.0; - restriction[3](4,1) = -53.0/6912.0; - restriction[3](4,2) = -53.0/3456.0; - restriction[3](4,3) = 1.0/144.0; - restriction[3](4,4) = -35.0/2304.0; - restriction[3](4,5) = -89.0/2304.0; - restriction[3](4,6) = 53.0/2304.0; - restriction[3](4,7) = 53.0/2304.0; - restriction[3](4,8) = -35.0/1152.0; - restriction[3](4,9) = -89.0/1152.0; - restriction[3](4,10) = -1.0/96.0; - restriction[3](4,11) = -1.0/96.0; - restriction[3](4,12) = 35.0/768.0; - restriction[3](4,13) = 89.0/768.0; - restriction[3](4,14) = 89.0/768.0; - restriction[3](4,15) = 35.0/768.0; - restriction[3](5,0) = -5.0/2304.0; - restriction[3](5,1) = -37.0/6912.0; - restriction[3](5,2) = -37.0/3456.0; - restriction[3](5,3) = -5.0/1152.0; - restriction[3](5,4) = 17.0/2304.0; - restriction[3](5,5) = -5.0/1152.0; - restriction[3](5,6) = 37.0/2304.0; - restriction[3](5,7) = 37.0/2304.0; - restriction[3](5,8) = 17.0/1152.0; - restriction[3](5,9) = -5.0/576.0; - restriction[3](5,10) = 5.0/768.0; - restriction[3](5,11) = 5.0/768.0; - restriction[3](5,12) = -17.0/768.0; - restriction[3](5,13) = 5.0/384.0; - restriction[3](5,14) = 5.0/384.0; - restriction[3](5,15) = -17.0/768.0; - restriction[3](6,0) = -37.0/3456.0; - restriction[3](6,1) = -37.0/6912.0; - restriction[3](6,2) = -5.0/2304.0; - restriction[3](6,3) = -5.0/1152.0; - restriction[3](6,4) = 37.0/2304.0; - restriction[3](6,5) = 37.0/2304.0; - restriction[3](6,6) = -5.0/1152.0; - restriction[3](6,7) = 17.0/2304.0; - restriction[3](6,8) = 5.0/768.0; - restriction[3](6,9) = 5.0/768.0; - restriction[3](6,10) = -5.0/576.0; - restriction[3](6,11) = 17.0/1152.0; - restriction[3](6,12) = 5.0/384.0; - restriction[3](6,13) = 5.0/384.0; - restriction[3](6,14) = -17.0/768.0; - restriction[3](6,15) = -17.0/768.0; - restriction[3](7,0) = -53.0/3456.0; - restriction[3](7,1) = -53.0/6912.0; - restriction[3](7,2) = 1.0/288.0; - restriction[3](7,3) = 1.0/144.0; - restriction[3](7,4) = 53.0/2304.0; - restriction[3](7,5) = 53.0/2304.0; - restriction[3](7,6) = -89.0/2304.0; - restriction[3](7,7) = -35.0/2304.0; - restriction[3](7,8) = -1.0/96.0; - restriction[3](7,9) = -1.0/96.0; - restriction[3](7,10) = -89.0/1152.0; - restriction[3](7,11) = -35.0/1152.0; - restriction[3](7,12) = 89.0/768.0; - restriction[3](7,13) = 89.0/768.0; - restriction[3](7,14) = 35.0/768.0; - restriction[3](7,15) = 35.0/768.0; - restriction[3](8,0) = 1.0/288.0; - restriction[3](8,1) = -53.0/6912.0; - restriction[3](8,2) = 583.0/6912.0; - restriction[3](8,3) = -11.0/288.0; - restriction[3](8,4) = -35.0/2304.0; - restriction[3](8,5) = -89.0/2304.0; - restriction[3](8,6) = -53.0/576.0; - restriction[3](8,7) = 265.0/2304.0; - restriction[3](8,8) = 385.0/2304.0; - restriction[3](8,9) = 979.0/2304.0; - restriction[3](8,10) = 1.0/24.0; - restriction[3](8,11) = -5.0/96.0; - restriction[3](8,12) = -35.0/192.0; - restriction[3](8,13) = -89.0/192.0; - restriction[3](8,14) = 445.0/768.0; - restriction[3](8,15) = 175.0/768.0; - restriction[3](9,0) = -5.0/2304.0; - restriction[3](9,1) = -37.0/6912.0; - restriction[3](9,2) = 407.0/6912.0; - restriction[3](9,3) = 55.0/2304.0; - restriction[3](9,4) = 17.0/2304.0; - restriction[3](9,5) = -5.0/1152.0; - restriction[3](9,6) = -37.0/576.0; - restriction[3](9,7) = 185.0/2304.0; - restriction[3](9,8) = -187.0/2304.0; - restriction[3](9,9) = 55.0/1152.0; - restriction[3](9,10) = -5.0/192.0; - restriction[3](9,11) = 25.0/768.0; - restriction[3](9,12) = 17.0/192.0; - restriction[3](9,13) = -5.0/96.0; - restriction[3](9,14) = 25.0/384.0; - restriction[3](9,15) = -85.0/768.0; - restriction[3](10,0) = 407.0/6912.0; - restriction[3](10,1) = -37.0/6912.0; - restriction[3](10,2) = -5.0/2304.0; - restriction[3](10,3) = 55.0/2304.0; - restriction[3](10,4) = 185.0/2304.0; - restriction[3](10,5) = -37.0/576.0; - restriction[3](10,6) = -5.0/1152.0; - restriction[3](10,7) = 17.0/2304.0; - restriction[3](10,8) = 25.0/768.0; - restriction[3](10,9) = -5.0/192.0; - restriction[3](10,10) = 55.0/1152.0; - restriction[3](10,11) = -187.0/2304.0; - restriction[3](10,12) = 25.0/384.0; - restriction[3](10,13) = -5.0/96.0; - restriction[3](10,14) = 17.0/192.0; - restriction[3](10,15) = -85.0/768.0; - restriction[3](11,0) = 583.0/6912.0; - restriction[3](11,1) = -53.0/6912.0; - restriction[3](11,2) = 1.0/288.0; - restriction[3](11,3) = -11.0/288.0; - restriction[3](11,4) = 265.0/2304.0; - restriction[3](11,5) = -53.0/576.0; - restriction[3](11,6) = -89.0/2304.0; - restriction[3](11,7) = -35.0/2304.0; - restriction[3](11,8) = -5.0/96.0; - restriction[3](11,9) = 1.0/24.0; - restriction[3](11,10) = 979.0/2304.0; - restriction[3](11,11) = 385.0/2304.0; - restriction[3](11,12) = 445.0/768.0; - restriction[3](11,13) = -89.0/192.0; - restriction[3](11,14) = -35.0/192.0; - restriction[3](11,15) = 175.0/768.0; - restriction[3](12,0) = -37.0/7776.0; - restriction[3](12,1) = 1961.0/186624.0; - restriction[3](12,2) = 265.0/62208.0; - restriction[3](12,3) = -5.0/2592.0; - restriction[3](12,4) = 1295.0/62208.0; - restriction[3](12,5) = 3293.0/62208.0; - restriction[3](12,6) = 265.0/31104.0; - restriction[3](12,7) = -901.0/62208.0; - restriction[3](12,8) = 175.0/20736.0; - restriction[3](12,9) = 445.0/20736.0; - restriction[3](12,10) = -5.0/1296.0; - restriction[3](12,11) = 17.0/2592.0; - restriction[3](12,12) = 175.0/10368.0; - restriction[3](12,13) = 445.0/10368.0; - restriction[3](12,14) = -1513.0/20736.0; - restriction[3](12,15) = -595.0/20736.0; - restriction[3](13,0) = 185.0/62208.0; - restriction[3](13,1) = 1369.0/186624.0; - restriction[3](13,2) = 185.0/62208.0; - restriction[3](13,3) = 25.0/20736.0; - restriction[3](13,4) = -629.0/62208.0; - restriction[3](13,5) = 185.0/31104.0; - restriction[3](13,6) = 185.0/31104.0; - restriction[3](13,7) = -629.0/62208.0; - restriction[3](13,8) = -85.0/20736.0; - restriction[3](13,9) = 25.0/10368.0; - restriction[3](13,10) = 25.0/10368.0; - restriction[3](13,11) = -85.0/20736.0; - restriction[3](13,12) = -85.0/10368.0; - restriction[3](13,13) = 25.0/5184.0; - restriction[3](13,14) = -85.0/10368.0; - restriction[3](13,15) = 289.0/20736.0; - restriction[3](14,0) = 265.0/62208.0; - restriction[3](14,1) = 1961.0/186624.0; - restriction[3](14,2) = -37.0/7776.0; - restriction[3](14,3) = -5.0/2592.0; - restriction[3](14,4) = -901.0/62208.0; - restriction[3](14,5) = 265.0/31104.0; - restriction[3](14,6) = 3293.0/62208.0; - restriction[3](14,7) = 1295.0/62208.0; - restriction[3](14,8) = 17.0/2592.0; - restriction[3](14,9) = -5.0/1296.0; - restriction[3](14,10) = 445.0/20736.0; - restriction[3](14,11) = 175.0/20736.0; - restriction[3](14,12) = -1513.0/20736.0; - restriction[3](14,13) = 445.0/10368.0; - restriction[3](14,14) = 175.0/10368.0; - restriction[3](14,15) = -595.0/20736.0; - restriction[3](15,0) = -53.0/7776.0; - restriction[3](15,1) = 2809.0/186624.0; - restriction[3](15,2) = -53.0/7776.0; - restriction[3](15,3) = 1.0/324.0; - restriction[3](15,4) = 1855.0/62208.0; - restriction[3](15,5) = 4717.0/62208.0; - restriction[3](15,6) = 4717.0/62208.0; - restriction[3](15,7) = 1855.0/62208.0; - restriction[3](15,8) = -35.0/2592.0; - restriction[3](15,9) = -89.0/2592.0; - restriction[3](15,10) = -89.0/2592.0; - restriction[3](15,11) = -35.0/2592.0; - restriction[3](15,12) = 3115.0/20736.0; - restriction[3](15,13) = 7921.0/20736.0; - restriction[3](15,14) = 3115.0/20736.0; - restriction[3](15,15) = 1225.0/20736.0; -}; - - - -template<> -FEDG_Q4<2>::FEDG_Q4(): - FEQ4<2>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - -#if 1 - // compiling the following function - // takes way too long. if you - // really need it, then change the - // preprocessor constant to let the - // following be compiled. - Assert (false, ExcNotImplemented()); -#else - restriction[0](0,0) = 43681.0/82944.0; - restriction[0](0,1) = 1045.0/82944.0; - restriction[0](0,2) = 25.0/82944.0; - restriction[0](0,3) = 1045.0/82944.0; - restriction[0](0,4) = 7315.0/10368.0; - restriction[0](0,5) = -5225.0/6912.0; - restriction[0](0,6) = 1045.0/10368.0; - restriction[0](0,7) = 175.0/10368.0; - restriction[0](0,8) = -125.0/6912.0; - restriction[0](0,9) = 25.0/10368.0; - restriction[0](0,10) = 175.0/10368.0; - restriction[0](0,11) = -125.0/6912.0; - restriction[0](0,12) = 25.0/10368.0; - restriction[0](0,13) = 7315.0/10368.0; - restriction[0](0,14) = -5225.0/6912.0; - restriction[0](0,15) = 1045.0/10368.0; - restriction[0](0,16) = 1225.0/1296.0; - restriction[0](0,17) = 175.0/1296.0; - restriction[0](0,18) = 25.0/1296.0; - restriction[0](0,19) = 175.0/1296.0; - restriction[0](0,20) = -875.0/864.0; - restriction[0](0,21) = -125.0/864.0; - restriction[0](0,22) = -125.0/864.0; - restriction[0](0,23) = -875.0/864.0; - restriction[0](0,24) = 625.0/576.0; - restriction[0](1,0) = 5225.0/82944.0; - restriction[0](1,1) = 5225.0/82944.0; - restriction[0](1,2) = 125.0/82944.0; - restriction[0](1,3) = 125.0/82944.0; - restriction[0](1,4) = -1045.0/10368.0; - restriction[0](1,5) = -1045.0/6912.0; - restriction[0](1,6) = 2717.0/10368.0; - restriction[0](1,7) = 875.0/10368.0; - restriction[0](1,8) = -625.0/6912.0; - restriction[0](1,9) = 125.0/10368.0; - restriction[0](1,10) = -25.0/10368.0; - restriction[0](1,11) = -25.0/6912.0; - restriction[0](1,12) = 65.0/10368.0; - restriction[0](1,13) = 875.0/10368.0; - restriction[0](1,14) = -625.0/6912.0; - restriction[0](1,15) = 125.0/10368.0; - restriction[0](1,16) = -175.0/1296.0; - restriction[0](1,17) = 455.0/1296.0; - restriction[0](1,18) = 65.0/1296.0; - restriction[0](1,19) = -25.0/1296.0; - restriction[0](1,20) = -175.0/864.0; - restriction[0](1,21) = -325.0/864.0; - restriction[0](1,22) = -25.0/864.0; - restriction[0](1,23) = 125.0/864.0; - restriction[0](1,24) = 125.0/576.0; - restriction[0](2,0) = 625.0/82944.0; - restriction[0](2,1) = 625.0/82944.0; - restriction[0](2,2) = 625.0/82944.0; - restriction[0](2,3) = 625.0/82944.0; - restriction[0](2,4) = -125.0/10368.0; - restriction[0](2,5) = -125.0/6912.0; - restriction[0](2,6) = 325.0/10368.0; - restriction[0](2,7) = -125.0/10368.0; - restriction[0](2,8) = -125.0/6912.0; - restriction[0](2,9) = 325.0/10368.0; - restriction[0](2,10) = -125.0/10368.0; - restriction[0](2,11) = -125.0/6912.0; - restriction[0](2,12) = 325.0/10368.0; - restriction[0](2,13) = -125.0/10368.0; - restriction[0](2,14) = -125.0/6912.0; - restriction[0](2,15) = 325.0/10368.0; - restriction[0](2,16) = 25.0/1296.0; - restriction[0](2,17) = -65.0/1296.0; - restriction[0](2,18) = 169.0/1296.0; - restriction[0](2,19) = -65.0/1296.0; - restriction[0](2,20) = 25.0/864.0; - restriction[0](2,21) = -65.0/864.0; - restriction[0](2,22) = -65.0/864.0; - restriction[0](2,23) = 25.0/864.0; - restriction[0](2,24) = 25.0/576.0; - restriction[0](3,0) = 5225.0/82944.0; - restriction[0](3,1) = 125.0/82944.0; - restriction[0](3,2) = 125.0/82944.0; - restriction[0](3,3) = 5225.0/82944.0; - restriction[0](3,4) = 875.0/10368.0; - restriction[0](3,5) = -625.0/6912.0; - restriction[0](3,6) = 125.0/10368.0; - restriction[0](3,7) = -25.0/10368.0; - restriction[0](3,8) = -25.0/6912.0; - restriction[0](3,9) = 65.0/10368.0; - restriction[0](3,10) = 875.0/10368.0; - restriction[0](3,11) = -625.0/6912.0; - restriction[0](3,12) = 125.0/10368.0; - restriction[0](3,13) = -1045.0/10368.0; - restriction[0](3,14) = -1045.0/6912.0; - restriction[0](3,15) = 2717.0/10368.0; - restriction[0](3,16) = -175.0/1296.0; - restriction[0](3,17) = -25.0/1296.0; - restriction[0](3,18) = 65.0/1296.0; - restriction[0](3,19) = 455.0/1296.0; - restriction[0](3,20) = 125.0/864.0; - restriction[0](3,21) = -25.0/864.0; - restriction[0](3,22) = -325.0/864.0; - restriction[0](3,23) = -175.0/864.0; - restriction[0](3,24) = 125.0/576.0; - restriction[0](4,0) = -525635.0/10616832.0; - restriction[0](4,1) = 245575.0/10616832.0; - restriction[0](4,2) = 5875.0/10616832.0; - restriction[0](4,3) = -12575.0/10616832.0; - restriction[0](4,4) = 289465.0/1327104.0; - restriction[0](4,5) = 334609.0/884736.0; - restriction[0](4,6) = 270655.0/1327104.0; - restriction[0](4,7) = 41125.0/1327104.0; - restriction[0](4,8) = -29375.0/884736.0; - restriction[0](4,9) = 5875.0/1327104.0; - restriction[0](4,10) = 6925.0/1327104.0; - restriction[0](4,11) = 8005.0/884736.0; - restriction[0](4,12) = 6475.0/1327104.0; - restriction[0](4,13) = -88025.0/1327104.0; - restriction[0](4,14) = 62875.0/884736.0; - restriction[0](4,15) = -12575.0/1327104.0; - restriction[0](4,16) = 48475.0/165888.0; - restriction[0](4,17) = 45325.0/165888.0; - restriction[0](4,18) = 6475.0/165888.0; - restriction[0](4,19) = 6925.0/165888.0; - restriction[0](4,20) = 56035.0/110592.0; - restriction[0](4,21) = -32375.0/110592.0; - restriction[0](4,22) = 8005.0/110592.0; - restriction[0](4,23) = -34625.0/110592.0; - restriction[0](4,24) = -40025.0/73728.0; - restriction[0](5,0) = 1045.0/73728.0; - restriction[0](5,1) = 22781.0/221184.0; - restriction[0](5,2) = 545.0/221184.0; - restriction[0](5,3) = 25.0/73728.0; - restriction[0](5,4) = -1045.0/27648.0; - restriction[0](5,5) = -1045.0/18432.0; - restriction[0](5,6) = 1045.0/3072.0; - restriction[0](5,7) = 3815.0/27648.0; - restriction[0](5,8) = -2725.0/18432.0; - restriction[0](5,9) = 545.0/27648.0; - restriction[0](5,10) = -25.0/27648.0; - restriction[0](5,11) = -25.0/18432.0; - restriction[0](5,12) = 25.0/3072.0; - restriction[0](5,13) = 175.0/9216.0; - restriction[0](5,14) = -125.0/6144.0; - restriction[0](5,15) = 25.0/9216.0; - restriction[0](5,16) = -175.0/3456.0; - restriction[0](5,17) = 175.0/384.0; - restriction[0](5,18) = 25.0/384.0; - restriction[0](5,19) = -25.0/3456.0; - restriction[0](5,20) = -175.0/2304.0; - restriction[0](5,21) = -125.0/256.0; - restriction[0](5,22) = -25.0/2304.0; - restriction[0](5,23) = 125.0/2304.0; - restriction[0](5,24) = 125.0/1536.0; - restriction[0](6,0) = -57475.0/10616832.0; - restriction[0](6,1) = 11495.0/10616832.0; - restriction[0](6,2) = 275.0/10616832.0; - restriction[0](6,3) = -1375.0/10616832.0; - restriction[0](6,4) = 35321.0/1327104.0; - restriction[0](6,5) = -19855.0/884736.0; - restriction[0](6,6) = -63745.0/1327104.0; - restriction[0](6,7) = 1925.0/1327104.0; - restriction[0](6,8) = -1375.0/884736.0; - restriction[0](6,9) = 275.0/1327104.0; - restriction[0](6,10) = 845.0/1327104.0; - restriction[0](6,11) = -475.0/884736.0; - restriction[0](6,12) = -1525.0/1327104.0; - restriction[0](6,13) = -9625.0/1327104.0; - restriction[0](6,14) = 6875.0/884736.0; - restriction[0](6,15) = -1375.0/1327104.0; - restriction[0](6,16) = 5915.0/165888.0; - restriction[0](6,17) = -10675.0/165888.0; - restriction[0](6,18) = -1525.0/165888.0; - restriction[0](6,19) = 845.0/165888.0; - restriction[0](6,20) = -3325.0/110592.0; - restriction[0](6,21) = 7625.0/110592.0; - restriction[0](6,22) = -475.0/110592.0; - restriction[0](6,23) = -4225.0/110592.0; - restriction[0](6,24) = 2375.0/73728.0; - restriction[0](7,0) = -62875.0/10616832.0; - restriction[0](7,1) = -62875.0/10616832.0; - restriction[0](7,2) = 29375.0/10616832.0; - restriction[0](7,3) = 29375.0/10616832.0; - restriction[0](7,4) = 12575.0/1327104.0; - restriction[0](7,5) = 12575.0/884736.0; - restriction[0](7,6) = -32695.0/1327104.0; - restriction[0](7,7) = 34625.0/1327104.0; - restriction[0](7,8) = 40025.0/884736.0; - restriction[0](7,9) = 32375.0/1327104.0; - restriction[0](7,10) = -5875.0/1327104.0; - restriction[0](7,11) = -5875.0/884736.0; - restriction[0](7,12) = 15275.0/1327104.0; - restriction[0](7,13) = 34625.0/1327104.0; - restriction[0](7,14) = 40025.0/884736.0; - restriction[0](7,15) = 32375.0/1327104.0; - restriction[0](7,16) = -6925.0/165888.0; - restriction[0](7,17) = 18005.0/165888.0; - restriction[0](7,18) = 16835.0/165888.0; - restriction[0](7,19) = -6475.0/165888.0; - restriction[0](7,20) = -6925.0/110592.0; - restriction[0](7,21) = 20813.0/110592.0; - restriction[0](7,22) = -6475.0/110592.0; - restriction[0](7,23) = -8005.0/110592.0; - restriction[0](7,24) = -8005.0/73728.0; - restriction[0](8,0) = 125.0/73728.0; - restriction[0](8,1) = 125.0/73728.0; - restriction[0](8,2) = 2725.0/221184.0; - restriction[0](8,3) = 2725.0/221184.0; - restriction[0](8,4) = -25.0/9216.0; - restriction[0](8,5) = -25.0/6144.0; - restriction[0](8,6) = 65.0/9216.0; - restriction[0](8,7) = -125.0/27648.0; - restriction[0](8,8) = -125.0/18432.0; - restriction[0](8,9) = 125.0/3072.0; - restriction[0](8,10) = -545.0/27648.0; - restriction[0](8,11) = -545.0/18432.0; - restriction[0](8,12) = 1417.0/27648.0; - restriction[0](8,13) = -125.0/27648.0; - restriction[0](8,14) = -125.0/18432.0; - restriction[0](8,15) = 125.0/3072.0; - restriction[0](8,16) = 25.0/3456.0; - restriction[0](8,17) = -65.0/3456.0; - restriction[0](8,18) = 65.0/384.0; - restriction[0](8,19) = -25.0/384.0; - restriction[0](8,20) = 25.0/2304.0; - restriction[0](8,21) = -65.0/2304.0; - restriction[0](8,22) = -25.0/256.0; - restriction[0](8,23) = 25.0/2304.0; - restriction[0](8,24) = 25.0/1536.0; - restriction[0](9,0) = -6875.0/10616832.0; - restriction[0](9,1) = -6875.0/10616832.0; - restriction[0](9,2) = 1375.0/10616832.0; - restriction[0](9,3) = 1375.0/10616832.0; - restriction[0](9,4) = 1375.0/1327104.0; - restriction[0](9,5) = 1375.0/884736.0; - restriction[0](9,6) = -3575.0/1327104.0; - restriction[0](9,7) = 4225.0/1327104.0; - restriction[0](9,8) = -2375.0/884736.0; - restriction[0](9,9) = -7625.0/1327104.0; - restriction[0](9,10) = -275.0/1327104.0; - restriction[0](9,11) = -275.0/884736.0; - restriction[0](9,12) = 715.0/1327104.0; - restriction[0](9,13) = 4225.0/1327104.0; - restriction[0](9,14) = -2375.0/884736.0; - restriction[0](9,15) = -7625.0/1327104.0; - restriction[0](9,16) = -845.0/165888.0; - restriction[0](9,17) = 2197.0/165888.0; - restriction[0](9,18) = -3965.0/165888.0; - restriction[0](9,19) = 1525.0/165888.0; - restriction[0](9,20) = -845.0/110592.0; - restriction[0](9,21) = -1235.0/110592.0; - restriction[0](9,22) = 1525.0/110592.0; - restriction[0](9,23) = 475.0/110592.0; - restriction[0](9,24) = 475.0/73728.0; - restriction[0](10,0) = -62875.0/10616832.0; - restriction[0](10,1) = 29375.0/10616832.0; - restriction[0](10,2) = 29375.0/10616832.0; - restriction[0](10,3) = -62875.0/10616832.0; - restriction[0](10,4) = 34625.0/1327104.0; - restriction[0](10,5) = 40025.0/884736.0; - restriction[0](10,6) = 32375.0/1327104.0; - restriction[0](10,7) = -5875.0/1327104.0; - restriction[0](10,8) = -5875.0/884736.0; - restriction[0](10,9) = 15275.0/1327104.0; - restriction[0](10,10) = 34625.0/1327104.0; - restriction[0](10,11) = 40025.0/884736.0; - restriction[0](10,12) = 32375.0/1327104.0; - restriction[0](10,13) = 12575.0/1327104.0; - restriction[0](10,14) = 12575.0/884736.0; - restriction[0](10,15) = -32695.0/1327104.0; - restriction[0](10,16) = -6925.0/165888.0; - restriction[0](10,17) = -6475.0/165888.0; - restriction[0](10,18) = 16835.0/165888.0; - restriction[0](10,19) = 18005.0/165888.0; - restriction[0](10,20) = -8005.0/110592.0; - restriction[0](10,21) = -6475.0/110592.0; - restriction[0](10,22) = 20813.0/110592.0; - restriction[0](10,23) = -6925.0/110592.0; - restriction[0](10,24) = -8005.0/73728.0; - restriction[0](11,0) = 125.0/73728.0; - restriction[0](11,1) = 2725.0/221184.0; - restriction[0](11,2) = 2725.0/221184.0; - restriction[0](11,3) = 125.0/73728.0; - restriction[0](11,4) = -125.0/27648.0; - restriction[0](11,5) = -125.0/18432.0; - restriction[0](11,6) = 125.0/3072.0; - restriction[0](11,7) = -545.0/27648.0; - restriction[0](11,8) = -545.0/18432.0; - restriction[0](11,9) = 1417.0/27648.0; - restriction[0](11,10) = -125.0/27648.0; - restriction[0](11,11) = -125.0/18432.0; - restriction[0](11,12) = 125.0/3072.0; - restriction[0](11,13) = -25.0/9216.0; - restriction[0](11,14) = -25.0/6144.0; - restriction[0](11,15) = 65.0/9216.0; - restriction[0](11,16) = 25.0/3456.0; - restriction[0](11,17) = -25.0/384.0; - restriction[0](11,18) = 65.0/384.0; - restriction[0](11,19) = -65.0/3456.0; - restriction[0](11,20) = 25.0/2304.0; - restriction[0](11,21) = -25.0/256.0; - restriction[0](11,22) = -65.0/2304.0; - restriction[0](11,23) = 25.0/2304.0; - restriction[0](11,24) = 25.0/1536.0; - restriction[0](12,0) = -6875.0/10616832.0; - restriction[0](12,1) = 1375.0/10616832.0; - restriction[0](12,2) = 1375.0/10616832.0; - restriction[0](12,3) = -6875.0/10616832.0; - restriction[0](12,4) = 4225.0/1327104.0; - restriction[0](12,5) = -2375.0/884736.0; - restriction[0](12,6) = -7625.0/1327104.0; - restriction[0](12,7) = -275.0/1327104.0; - restriction[0](12,8) = -275.0/884736.0; - restriction[0](12,9) = 715.0/1327104.0; - restriction[0](12,10) = 4225.0/1327104.0; - restriction[0](12,11) = -2375.0/884736.0; - restriction[0](12,12) = -7625.0/1327104.0; - restriction[0](12,13) = 1375.0/1327104.0; - restriction[0](12,14) = 1375.0/884736.0; - restriction[0](12,15) = -3575.0/1327104.0; - restriction[0](12,16) = -845.0/165888.0; - restriction[0](12,17) = 1525.0/165888.0; - restriction[0](12,18) = -3965.0/165888.0; - restriction[0](12,19) = 2197.0/165888.0; - restriction[0](12,20) = 475.0/110592.0; - restriction[0](12,21) = 1525.0/110592.0; - restriction[0](12,22) = -1235.0/110592.0; - restriction[0](12,23) = -845.0/110592.0; - restriction[0](12,24) = 475.0/73728.0; - restriction[0](13,0) = -525635.0/10616832.0; - restriction[0](13,1) = -12575.0/10616832.0; - restriction[0](13,2) = 5875.0/10616832.0; - restriction[0](13,3) = 245575.0/10616832.0; - restriction[0](13,4) = -88025.0/1327104.0; - restriction[0](13,5) = 62875.0/884736.0; - restriction[0](13,6) = -12575.0/1327104.0; - restriction[0](13,7) = 6925.0/1327104.0; - restriction[0](13,8) = 8005.0/884736.0; - restriction[0](13,9) = 6475.0/1327104.0; - restriction[0](13,10) = 41125.0/1327104.0; - restriction[0](13,11) = -29375.0/884736.0; - restriction[0](13,12) = 5875.0/1327104.0; - restriction[0](13,13) = 289465.0/1327104.0; - restriction[0](13,14) = 334609.0/884736.0; - restriction[0](13,15) = 270655.0/1327104.0; - restriction[0](13,16) = 48475.0/165888.0; - restriction[0](13,17) = 6925.0/165888.0; - restriction[0](13,18) = 6475.0/165888.0; - restriction[0](13,19) = 45325.0/165888.0; - restriction[0](13,20) = -34625.0/110592.0; - restriction[0](13,21) = 8005.0/110592.0; - restriction[0](13,22) = -32375.0/110592.0; - restriction[0](13,23) = 56035.0/110592.0; - restriction[0](13,24) = -40025.0/73728.0; - restriction[0](14,0) = 1045.0/73728.0; - restriction[0](14,1) = 25.0/73728.0; - restriction[0](14,2) = 545.0/221184.0; - restriction[0](14,3) = 22781.0/221184.0; - restriction[0](14,4) = 175.0/9216.0; - restriction[0](14,5) = -125.0/6144.0; - restriction[0](14,6) = 25.0/9216.0; - restriction[0](14,7) = -25.0/27648.0; - restriction[0](14,8) = -25.0/18432.0; - restriction[0](14,9) = 25.0/3072.0; - restriction[0](14,10) = 3815.0/27648.0; - restriction[0](14,11) = -2725.0/18432.0; - restriction[0](14,12) = 545.0/27648.0; - restriction[0](14,13) = -1045.0/27648.0; - restriction[0](14,14) = -1045.0/18432.0; - restriction[0](14,15) = 1045.0/3072.0; - restriction[0](14,16) = -175.0/3456.0; - restriction[0](14,17) = -25.0/3456.0; - restriction[0](14,18) = 25.0/384.0; - restriction[0](14,19) = 175.0/384.0; - restriction[0](14,20) = 125.0/2304.0; - restriction[0](14,21) = -25.0/2304.0; - restriction[0](14,22) = -125.0/256.0; - restriction[0](14,23) = -175.0/2304.0; - restriction[0](14,24) = 125.0/1536.0; - restriction[0](15,0) = -57475.0/10616832.0; - restriction[0](15,1) = -1375.0/10616832.0; - restriction[0](15,2) = 275.0/10616832.0; - restriction[0](15,3) = 11495.0/10616832.0; - restriction[0](15,4) = -9625.0/1327104.0; - restriction[0](15,5) = 6875.0/884736.0; - restriction[0](15,6) = -1375.0/1327104.0; - restriction[0](15,7) = 845.0/1327104.0; - restriction[0](15,8) = -475.0/884736.0; - restriction[0](15,9) = -1525.0/1327104.0; - restriction[0](15,10) = 1925.0/1327104.0; - restriction[0](15,11) = -1375.0/884736.0; - restriction[0](15,12) = 275.0/1327104.0; - restriction[0](15,13) = 35321.0/1327104.0; - restriction[0](15,14) = -19855.0/884736.0; - restriction[0](15,15) = -63745.0/1327104.0; - restriction[0](15,16) = 5915.0/165888.0; - restriction[0](15,17) = 845.0/165888.0; - restriction[0](15,18) = -1525.0/165888.0; - restriction[0](15,19) = -10675.0/165888.0; - restriction[0](15,20) = -4225.0/110592.0; - restriction[0](15,21) = -475.0/110592.0; - restriction[0](15,22) = 7625.0/110592.0; - restriction[0](15,23) = -3325.0/110592.0; - restriction[0](15,24) = 2375.0/73728.0; - restriction[0](16,0) = 6325225.0/1358954496.0; - restriction[0](16,1) = -2955125.0/1358954496.0; - restriction[0](16,2) = 1380625.0/1358954496.0; - restriction[0](16,3) = -2955125.0/1358954496.0; - restriction[0](16,4) = -3483275.0/169869312.0; - restriction[0](16,5) = -4026515.0/113246208.0; - restriction[0](16,6) = -3256925.0/169869312.0; - restriction[0](16,7) = 1627375.0/169869312.0; - restriction[0](16,8) = 1881175.0/113246208.0; - restriction[0](16,9) = 1521625.0/169869312.0; - restriction[0](16,10) = 1627375.0/169869312.0; - restriction[0](16,11) = 1881175.0/113246208.0; - restriction[0](16,12) = 1521625.0/169869312.0; - restriction[0](16,13) = -3483275.0/169869312.0; - restriction[0](16,14) = -4026515.0/113246208.0; - restriction[0](16,15) = -3256925.0/169869312.0; - restriction[0](16,16) = 1918225.0/21233664.0; - restriction[0](16,17) = 1793575.0/21233664.0; - restriction[0](16,18) = 1677025.0/21233664.0; - restriction[0](16,19) = 1793575.0/21233664.0; - restriction[0](16,20) = 2217385.0/14155776.0; - restriction[0](16,21) = 2073295.0/14155776.0; - restriction[0](16,22) = 2073295.0/14155776.0; - restriction[0](16,23) = 2217385.0/14155776.0; - restriction[0](16,24) = 2563201.0/9437184.0; - restriction[0](17,0) = 691625.0/1358954496.0; - restriction[0](17,1) = -138325.0/1358954496.0; - restriction[0](17,2) = 64625.0/1358954496.0; - restriction[0](17,3) = -323125.0/1358954496.0; - restriction[0](17,4) = -425035.0/169869312.0; - restriction[0](17,5) = 238925.0/113246208.0; - restriction[0](17,6) = 767075.0/169869312.0; - restriction[0](17,7) = 76175.0/169869312.0; - restriction[0](17,8) = 88055.0/113246208.0; - restriction[0](17,9) = 71225.0/169869312.0; - restriction[0](17,10) = 198575.0/169869312.0; - restriction[0](17,11) = -111625.0/113246208.0; - restriction[0](17,12) = -358375.0/169869312.0; - restriction[0](17,13) = -380875.0/169869312.0; - restriction[0](17,14) = -440275.0/113246208.0; - restriction[0](17,15) = -356125.0/169869312.0; - restriction[0](17,16) = 234065.0/21233664.0; - restriction[0](17,17) = -422425.0/21233664.0; - restriction[0](17,18) = -394975.0/21233664.0; - restriction[0](17,19) = 218855.0/21233664.0; - restriction[0](17,20) = -131575.0/14155776.0; - restriction[0](17,21) = -488305.0/14155776.0; - restriction[0](17,22) = -123025.0/14155776.0; - restriction[0](17,23) = 270569.0/14155776.0; - restriction[0](17,24) = -152095.0/9437184.0; - restriction[0](18,0) = 75625.0/1358954496.0; - restriction[0](18,1) = -15125.0/1358954496.0; - restriction[0](18,2) = 3025.0/1358954496.0; - restriction[0](18,3) = -15125.0/1358954496.0; - restriction[0](18,4) = -46475.0/169869312.0; - restriction[0](18,5) = 26125.0/113246208.0; - restriction[0](18,6) = 83875.0/169869312.0; - restriction[0](18,7) = 9295.0/169869312.0; - restriction[0](18,8) = -5225.0/113246208.0; - restriction[0](18,9) = -16775.0/169869312.0; - restriction[0](18,10) = 9295.0/169869312.0; - restriction[0](18,11) = -5225.0/113246208.0; - restriction[0](18,12) = -16775.0/169869312.0; - restriction[0](18,13) = -46475.0/169869312.0; - restriction[0](18,14) = 26125.0/113246208.0; - restriction[0](18,15) = 83875.0/169869312.0; - restriction[0](18,16) = 28561.0/21233664.0; - restriction[0](18,17) = -51545.0/21233664.0; - restriction[0](18,18) = 93025.0/21233664.0; - restriction[0](18,19) = -51545.0/21233664.0; - restriction[0](18,20) = -16055.0/14155776.0; - restriction[0](18,21) = 28975.0/14155776.0; - restriction[0](18,22) = 28975.0/14155776.0; - restriction[0](18,23) = -16055.0/14155776.0; - restriction[0](18,24) = 9025.0/9437184.0; - restriction[0](19,0) = 691625.0/1358954496.0; - restriction[0](19,1) = -323125.0/1358954496.0; - restriction[0](19,2) = 64625.0/1358954496.0; - restriction[0](19,3) = -138325.0/1358954496.0; - restriction[0](19,4) = -380875.0/169869312.0; - restriction[0](19,5) = -440275.0/113246208.0; - restriction[0](19,6) = -356125.0/169869312.0; - restriction[0](19,7) = 198575.0/169869312.0; - restriction[0](19,8) = -111625.0/113246208.0; - restriction[0](19,9) = -358375.0/169869312.0; - restriction[0](19,10) = 76175.0/169869312.0; - restriction[0](19,11) = 88055.0/113246208.0; - restriction[0](19,12) = 71225.0/169869312.0; - restriction[0](19,13) = -425035.0/169869312.0; - restriction[0](19,14) = 238925.0/113246208.0; - restriction[0](19,15) = 767075.0/169869312.0; - restriction[0](19,16) = 234065.0/21233664.0; - restriction[0](19,17) = 218855.0/21233664.0; - restriction[0](19,18) = -394975.0/21233664.0; - restriction[0](19,19) = -422425.0/21233664.0; - restriction[0](19,20) = 270569.0/14155776.0; - restriction[0](19,21) = -123025.0/14155776.0; - restriction[0](19,22) = -488305.0/14155776.0; - restriction[0](19,23) = -131575.0/14155776.0; - restriction[0](19,24) = -152095.0/9437184.0; - restriction[0](20,0) = -12575.0/9437184.0; - restriction[0](20,1) = -274135.0/28311552.0; - restriction[0](20,2) = 128075.0/28311552.0; - restriction[0](20,3) = 5875.0/9437184.0; - restriction[0](20,4) = 12575.0/3538944.0; - restriction[0](20,5) = 12575.0/2359296.0; - restriction[0](20,6) = -12575.0/393216.0; - restriction[0](20,7) = 150965.0/3538944.0; - restriction[0](20,8) = 174509.0/2359296.0; - restriction[0](20,9) = 141155.0/3538944.0; - restriction[0](20,10) = -5875.0/3538944.0; - restriction[0](20,11) = -5875.0/2359296.0; - restriction[0](20,12) = 5875.0/393216.0; - restriction[0](20,13) = 6925.0/1179648.0; - restriction[0](20,14) = 8005.0/786432.0; - restriction[0](20,15) = 6475.0/1179648.0; - restriction[0](20,16) = -6925.0/442368.0; - restriction[0](20,17) = 6925.0/49152.0; - restriction[0](20,18) = 6475.0/49152.0; - restriction[0](20,19) = -6475.0/442368.0; - restriction[0](20,20) = -6925.0/294912.0; - restriction[0](20,21) = 8005.0/32768.0; - restriction[0](20,22) = -6475.0/294912.0; - restriction[0](20,23) = -8005.0/294912.0; - restriction[0](20,24) = -8005.0/196608.0; - restriction[0](21,0) = -1375.0/9437184.0; - restriction[0](21,1) = 275.0/9437184.0; - restriction[0](21,2) = 5995.0/28311552.0; - restriction[0](21,3) = -29975.0/28311552.0; - restriction[0](21,4) = 845.0/1179648.0; - restriction[0](21,5) = -475.0/786432.0; - restriction[0](21,6) = -1525.0/1179648.0; - restriction[0](21,7) = -275.0/3538944.0; - restriction[0](21,8) = -275.0/2359296.0; - restriction[0](21,9) = 275.0/393216.0; - restriction[0](21,10) = 18421.0/3538944.0; - restriction[0](21,11) = -10355.0/2359296.0; - restriction[0](21,12) = -33245.0/3538944.0; - restriction[0](21,13) = 1375.0/3538944.0; - restriction[0](21,14) = 1375.0/2359296.0; - restriction[0](21,15) = -1375.0/393216.0; - restriction[0](21,16) = -845.0/442368.0; - restriction[0](21,17) = 1525.0/442368.0; - restriction[0](21,18) = -1525.0/49152.0; - restriction[0](21,19) = 845.0/49152.0; - restriction[0](21,20) = 475.0/294912.0; - restriction[0](21,21) = 1525.0/294912.0; - restriction[0](21,22) = -475.0/32768.0; - restriction[0](21,23) = -845.0/294912.0; - restriction[0](21,24) = 475.0/196608.0; - restriction[0](22,0) = -1375.0/9437184.0; - restriction[0](22,1) = -29975.0/28311552.0; - restriction[0](22,2) = 5995.0/28311552.0; - restriction[0](22,3) = 275.0/9437184.0; - restriction[0](22,4) = 1375.0/3538944.0; - restriction[0](22,5) = 1375.0/2359296.0; - restriction[0](22,6) = -1375.0/393216.0; - restriction[0](22,7) = 18421.0/3538944.0; - restriction[0](22,8) = -10355.0/2359296.0; - restriction[0](22,9) = -33245.0/3538944.0; - restriction[0](22,10) = -275.0/3538944.0; - restriction[0](22,11) = -275.0/2359296.0; - restriction[0](22,12) = 275.0/393216.0; - restriction[0](22,13) = 845.0/1179648.0; - restriction[0](22,14) = -475.0/786432.0; - restriction[0](22,15) = -1525.0/1179648.0; - restriction[0](22,16) = -845.0/442368.0; - restriction[0](22,17) = 845.0/49152.0; - restriction[0](22,18) = -1525.0/49152.0; - restriction[0](22,19) = 1525.0/442368.0; - restriction[0](22,20) = -845.0/294912.0; - restriction[0](22,21) = -475.0/32768.0; - restriction[0](22,22) = 1525.0/294912.0; - restriction[0](22,23) = 475.0/294912.0; - restriction[0](22,24) = 475.0/196608.0; - restriction[0](23,0) = -12575.0/9437184.0; - restriction[0](23,1) = 5875.0/9437184.0; - restriction[0](23,2) = 128075.0/28311552.0; - restriction[0](23,3) = -274135.0/28311552.0; - restriction[0](23,4) = 6925.0/1179648.0; - restriction[0](23,5) = 8005.0/786432.0; - restriction[0](23,6) = 6475.0/1179648.0; - restriction[0](23,7) = -5875.0/3538944.0; - restriction[0](23,8) = -5875.0/2359296.0; - restriction[0](23,9) = 5875.0/393216.0; - restriction[0](23,10) = 150965.0/3538944.0; - restriction[0](23,11) = 174509.0/2359296.0; - restriction[0](23,12) = 141155.0/3538944.0; - restriction[0](23,13) = 12575.0/3538944.0; - restriction[0](23,14) = 12575.0/2359296.0; - restriction[0](23,15) = -12575.0/393216.0; - restriction[0](23,16) = -6925.0/442368.0; - restriction[0](23,17) = -6475.0/442368.0; - restriction[0](23,18) = 6475.0/49152.0; - restriction[0](23,19) = 6925.0/49152.0; - restriction[0](23,20) = -8005.0/294912.0; - restriction[0](23,21) = -6475.0/294912.0; - restriction[0](23,22) = 8005.0/32768.0; - restriction[0](23,23) = -6925.0/294912.0; - restriction[0](23,24) = -8005.0/196608.0; - restriction[0](24,0) = 25.0/65536.0; - restriction[0](24,1) = 545.0/196608.0; - restriction[0](24,2) = 11881.0/589824.0; - restriction[0](24,3) = 545.0/196608.0; - restriction[0](24,4) = -25.0/24576.0; - restriction[0](24,5) = -25.0/16384.0; - restriction[0](24,6) = 75.0/8192.0; - restriction[0](24,7) = -545.0/73728.0; - restriction[0](24,8) = -545.0/49152.0; - restriction[0](24,9) = 545.0/8192.0; - restriction[0](24,10) = -545.0/73728.0; - restriction[0](24,11) = -545.0/49152.0; - restriction[0](24,12) = 545.0/8192.0; - restriction[0](24,13) = -25.0/24576.0; - restriction[0](24,14) = -25.0/16384.0; - restriction[0](24,15) = 75.0/8192.0; - restriction[0](24,16) = 25.0/9216.0; - restriction[0](24,17) = -25.0/1024.0; - restriction[0](24,18) = 225.0/1024.0; - restriction[0](24,19) = -25.0/1024.0; - restriction[0](24,20) = 25.0/6144.0; - restriction[0](24,21) = -75.0/2048.0; - restriction[0](24,22) = -75.0/2048.0; - restriction[0](24,23) = 25.0/6144.0; - restriction[0](24,24) = 25.0/4096.0; - restriction[1](0,0) = 5225.0/82944.0; - restriction[1](0,1) = 5225.0/82944.0; - restriction[1](0,2) = 125.0/82944.0; - restriction[1](0,3) = 125.0/82944.0; - restriction[1](0,4) = 2717.0/10368.0; - restriction[1](0,5) = -1045.0/6912.0; - restriction[1](0,6) = -1045.0/10368.0; - restriction[1](0,7) = 875.0/10368.0; - restriction[1](0,8) = -625.0/6912.0; - restriction[1](0,9) = 125.0/10368.0; - restriction[1](0,10) = 65.0/10368.0; - restriction[1](0,11) = -25.0/6912.0; - restriction[1](0,12) = -25.0/10368.0; - restriction[1](0,13) = 875.0/10368.0; - restriction[1](0,14) = -625.0/6912.0; - restriction[1](0,15) = 125.0/10368.0; - restriction[1](0,16) = 455.0/1296.0; - restriction[1](0,17) = -175.0/1296.0; - restriction[1](0,18) = -25.0/1296.0; - restriction[1](0,19) = 65.0/1296.0; - restriction[1](0,20) = -175.0/864.0; - restriction[1](0,21) = 125.0/864.0; - restriction[1](0,22) = -25.0/864.0; - restriction[1](0,23) = -325.0/864.0; - restriction[1](0,24) = 125.0/576.0; - restriction[1](1,0) = 1045.0/82944.0; - restriction[1](1,1) = 43681.0/82944.0; - restriction[1](1,2) = 1045.0/82944.0; - restriction[1](1,3) = 25.0/82944.0; - restriction[1](1,4) = 1045.0/10368.0; - restriction[1](1,5) = -5225.0/6912.0; - restriction[1](1,6) = 7315.0/10368.0; - restriction[1](1,7) = 7315.0/10368.0; - restriction[1](1,8) = -5225.0/6912.0; - restriction[1](1,9) = 1045.0/10368.0; - restriction[1](1,10) = 25.0/10368.0; - restriction[1](1,11) = -125.0/6912.0; - restriction[1](1,12) = 175.0/10368.0; - restriction[1](1,13) = 175.0/10368.0; - restriction[1](1,14) = -125.0/6912.0; - restriction[1](1,15) = 25.0/10368.0; - restriction[1](1,16) = 175.0/1296.0; - restriction[1](1,17) = 1225.0/1296.0; - restriction[1](1,18) = 175.0/1296.0; - restriction[1](1,19) = 25.0/1296.0; - restriction[1](1,20) = -875.0/864.0; - restriction[1](1,21) = -875.0/864.0; - restriction[1](1,22) = -125.0/864.0; - restriction[1](1,23) = -125.0/864.0; - restriction[1](1,24) = 625.0/576.0; - restriction[1](2,0) = 125.0/82944.0; - restriction[1](2,1) = 5225.0/82944.0; - restriction[1](2,2) = 5225.0/82944.0; - restriction[1](2,3) = 125.0/82944.0; - restriction[1](2,4) = 125.0/10368.0; - restriction[1](2,5) = -625.0/6912.0; - restriction[1](2,6) = 875.0/10368.0; - restriction[1](2,7) = -1045.0/10368.0; - restriction[1](2,8) = -1045.0/6912.0; - restriction[1](2,9) = 2717.0/10368.0; - restriction[1](2,10) = 125.0/10368.0; - restriction[1](2,11) = -625.0/6912.0; - restriction[1](2,12) = 875.0/10368.0; - restriction[1](2,13) = -25.0/10368.0; - restriction[1](2,14) = -25.0/6912.0; - restriction[1](2,15) = 65.0/10368.0; - restriction[1](2,16) = -25.0/1296.0; - restriction[1](2,17) = -175.0/1296.0; - restriction[1](2,18) = 455.0/1296.0; - restriction[1](2,19) = 65.0/1296.0; - restriction[1](2,20) = 125.0/864.0; - restriction[1](2,21) = -175.0/864.0; - restriction[1](2,22) = -325.0/864.0; - restriction[1](2,23) = -25.0/864.0; - restriction[1](2,24) = 125.0/576.0; - restriction[1](3,0) = 625.0/82944.0; - restriction[1](3,1) = 625.0/82944.0; - restriction[1](3,2) = 625.0/82944.0; - restriction[1](3,3) = 625.0/82944.0; - restriction[1](3,4) = 325.0/10368.0; - restriction[1](3,5) = -125.0/6912.0; - restriction[1](3,6) = -125.0/10368.0; - restriction[1](3,7) = -125.0/10368.0; - restriction[1](3,8) = -125.0/6912.0; - restriction[1](3,9) = 325.0/10368.0; - restriction[1](3,10) = 325.0/10368.0; - restriction[1](3,11) = -125.0/6912.0; - restriction[1](3,12) = -125.0/10368.0; - restriction[1](3,13) = -125.0/10368.0; - restriction[1](3,14) = -125.0/6912.0; - restriction[1](3,15) = 325.0/10368.0; - restriction[1](3,16) = -65.0/1296.0; - restriction[1](3,17) = 25.0/1296.0; - restriction[1](3,18) = -65.0/1296.0; - restriction[1](3,19) = 169.0/1296.0; - restriction[1](3,20) = 25.0/864.0; - restriction[1](3,21) = 25.0/864.0; - restriction[1](3,22) = -65.0/864.0; - restriction[1](3,23) = -65.0/864.0; - restriction[1](3,24) = 25.0/576.0; - restriction[1](4,0) = 11495.0/10616832.0; - restriction[1](4,1) = -57475.0/10616832.0; - restriction[1](4,2) = -1375.0/10616832.0; - restriction[1](4,3) = 275.0/10616832.0; - restriction[1](4,4) = -63745.0/1327104.0; - restriction[1](4,5) = -19855.0/884736.0; - restriction[1](4,6) = 35321.0/1327104.0; - restriction[1](4,7) = -9625.0/1327104.0; - restriction[1](4,8) = 6875.0/884736.0; - restriction[1](4,9) = -1375.0/1327104.0; - restriction[1](4,10) = -1525.0/1327104.0; - restriction[1](4,11) = -475.0/884736.0; - restriction[1](4,12) = 845.0/1327104.0; - restriction[1](4,13) = 1925.0/1327104.0; - restriction[1](4,14) = -1375.0/884736.0; - restriction[1](4,15) = 275.0/1327104.0; - restriction[1](4,16) = -10675.0/165888.0; - restriction[1](4,17) = 5915.0/165888.0; - restriction[1](4,18) = 845.0/165888.0; - restriction[1](4,19) = -1525.0/165888.0; - restriction[1](4,20) = -3325.0/110592.0; - restriction[1](4,21) = -4225.0/110592.0; - restriction[1](4,22) = -475.0/110592.0; - restriction[1](4,23) = 7625.0/110592.0; - restriction[1](4,24) = 2375.0/73728.0; - restriction[1](5,0) = 22781.0/221184.0; - restriction[1](5,1) = 1045.0/73728.0; - restriction[1](5,2) = 25.0/73728.0; - restriction[1](5,3) = 545.0/221184.0; - restriction[1](5,4) = 1045.0/3072.0; - restriction[1](5,5) = -1045.0/18432.0; - restriction[1](5,6) = -1045.0/27648.0; - restriction[1](5,7) = 175.0/9216.0; - restriction[1](5,8) = -125.0/6144.0; - restriction[1](5,9) = 25.0/9216.0; - restriction[1](5,10) = 25.0/3072.0; - restriction[1](5,11) = -25.0/18432.0; - restriction[1](5,12) = -25.0/27648.0; - restriction[1](5,13) = 3815.0/27648.0; - restriction[1](5,14) = -2725.0/18432.0; - restriction[1](5,15) = 545.0/27648.0; - restriction[1](5,16) = 175.0/384.0; - restriction[1](5,17) = -175.0/3456.0; - restriction[1](5,18) = -25.0/3456.0; - restriction[1](5,19) = 25.0/384.0; - restriction[1](5,20) = -175.0/2304.0; - restriction[1](5,21) = 125.0/2304.0; - restriction[1](5,22) = -25.0/2304.0; - restriction[1](5,23) = -125.0/256.0; - restriction[1](5,24) = 125.0/1536.0; - restriction[1](6,0) = 245575.0/10616832.0; - restriction[1](6,1) = -525635.0/10616832.0; - restriction[1](6,2) = -12575.0/10616832.0; - restriction[1](6,3) = 5875.0/10616832.0; - restriction[1](6,4) = 270655.0/1327104.0; - restriction[1](6,5) = 334609.0/884736.0; - restriction[1](6,6) = 289465.0/1327104.0; - restriction[1](6,7) = -88025.0/1327104.0; - restriction[1](6,8) = 62875.0/884736.0; - restriction[1](6,9) = -12575.0/1327104.0; - restriction[1](6,10) = 6475.0/1327104.0; - restriction[1](6,11) = 8005.0/884736.0; - restriction[1](6,12) = 6925.0/1327104.0; - restriction[1](6,13) = 41125.0/1327104.0; - restriction[1](6,14) = -29375.0/884736.0; - restriction[1](6,15) = 5875.0/1327104.0; - restriction[1](6,16) = 45325.0/165888.0; - restriction[1](6,17) = 48475.0/165888.0; - restriction[1](6,18) = 6925.0/165888.0; - restriction[1](6,19) = 6475.0/165888.0; - restriction[1](6,20) = 56035.0/110592.0; - restriction[1](6,21) = -34625.0/110592.0; - restriction[1](6,22) = 8005.0/110592.0; - restriction[1](6,23) = -32375.0/110592.0; - restriction[1](6,24) = -40025.0/73728.0; - restriction[1](7,0) = -12575.0/10616832.0; - restriction[1](7,1) = -525635.0/10616832.0; - restriction[1](7,2) = 245575.0/10616832.0; - restriction[1](7,3) = 5875.0/10616832.0; - restriction[1](7,4) = -12575.0/1327104.0; - restriction[1](7,5) = 62875.0/884736.0; - restriction[1](7,6) = -88025.0/1327104.0; - restriction[1](7,7) = 289465.0/1327104.0; - restriction[1](7,8) = 334609.0/884736.0; - restriction[1](7,9) = 270655.0/1327104.0; - restriction[1](7,10) = 5875.0/1327104.0; - restriction[1](7,11) = -29375.0/884736.0; - restriction[1](7,12) = 41125.0/1327104.0; - restriction[1](7,13) = 6925.0/1327104.0; - restriction[1](7,14) = 8005.0/884736.0; - restriction[1](7,15) = 6475.0/1327104.0; - restriction[1](7,16) = 6925.0/165888.0; - restriction[1](7,17) = 48475.0/165888.0; - restriction[1](7,18) = 45325.0/165888.0; - restriction[1](7,19) = 6475.0/165888.0; - restriction[1](7,20) = -34625.0/110592.0; - restriction[1](7,21) = 56035.0/110592.0; - restriction[1](7,22) = -32375.0/110592.0; - restriction[1](7,23) = 8005.0/110592.0; - restriction[1](7,24) = -40025.0/73728.0; - restriction[1](8,0) = 25.0/73728.0; - restriction[1](8,1) = 1045.0/73728.0; - restriction[1](8,2) = 22781.0/221184.0; - restriction[1](8,3) = 545.0/221184.0; - restriction[1](8,4) = 25.0/9216.0; - restriction[1](8,5) = -125.0/6144.0; - restriction[1](8,6) = 175.0/9216.0; - restriction[1](8,7) = -1045.0/27648.0; - restriction[1](8,8) = -1045.0/18432.0; - restriction[1](8,9) = 1045.0/3072.0; - restriction[1](8,10) = 545.0/27648.0; - restriction[1](8,11) = -2725.0/18432.0; - restriction[1](8,12) = 3815.0/27648.0; - restriction[1](8,13) = -25.0/27648.0; - restriction[1](8,14) = -25.0/18432.0; - restriction[1](8,15) = 25.0/3072.0; - restriction[1](8,16) = -25.0/3456.0; - restriction[1](8,17) = -175.0/3456.0; - restriction[1](8,18) = 175.0/384.0; - restriction[1](8,19) = 25.0/384.0; - restriction[1](8,20) = 125.0/2304.0; - restriction[1](8,21) = -175.0/2304.0; - restriction[1](8,22) = -125.0/256.0; - restriction[1](8,23) = -25.0/2304.0; - restriction[1](8,24) = 125.0/1536.0; - restriction[1](9,0) = -1375.0/10616832.0; - restriction[1](9,1) = -57475.0/10616832.0; - restriction[1](9,2) = 11495.0/10616832.0; - restriction[1](9,3) = 275.0/10616832.0; - restriction[1](9,4) = -1375.0/1327104.0; - restriction[1](9,5) = 6875.0/884736.0; - restriction[1](9,6) = -9625.0/1327104.0; - restriction[1](9,7) = 35321.0/1327104.0; - restriction[1](9,8) = -19855.0/884736.0; - restriction[1](9,9) = -63745.0/1327104.0; - restriction[1](9,10) = 275.0/1327104.0; - restriction[1](9,11) = -1375.0/884736.0; - restriction[1](9,12) = 1925.0/1327104.0; - restriction[1](9,13) = 845.0/1327104.0; - restriction[1](9,14) = -475.0/884736.0; - restriction[1](9,15) = -1525.0/1327104.0; - restriction[1](9,16) = 845.0/165888.0; - restriction[1](9,17) = 5915.0/165888.0; - restriction[1](9,18) = -10675.0/165888.0; - restriction[1](9,19) = -1525.0/165888.0; - restriction[1](9,20) = -4225.0/110592.0; - restriction[1](9,21) = -3325.0/110592.0; - restriction[1](9,22) = 7625.0/110592.0; - restriction[1](9,23) = -475.0/110592.0; - restriction[1](9,24) = 2375.0/73728.0; - restriction[1](10,0) = 1375.0/10616832.0; - restriction[1](10,1) = -6875.0/10616832.0; - restriction[1](10,2) = -6875.0/10616832.0; - restriction[1](10,3) = 1375.0/10616832.0; - restriction[1](10,4) = -7625.0/1327104.0; - restriction[1](10,5) = -2375.0/884736.0; - restriction[1](10,6) = 4225.0/1327104.0; - restriction[1](10,7) = 1375.0/1327104.0; - restriction[1](10,8) = 1375.0/884736.0; - restriction[1](10,9) = -3575.0/1327104.0; - restriction[1](10,10) = -7625.0/1327104.0; - restriction[1](10,11) = -2375.0/884736.0; - restriction[1](10,12) = 4225.0/1327104.0; - restriction[1](10,13) = -275.0/1327104.0; - restriction[1](10,14) = -275.0/884736.0; - restriction[1](10,15) = 715.0/1327104.0; - restriction[1](10,16) = 1525.0/165888.0; - restriction[1](10,17) = -845.0/165888.0; - restriction[1](10,18) = 2197.0/165888.0; - restriction[1](10,19) = -3965.0/165888.0; - restriction[1](10,20) = 475.0/110592.0; - restriction[1](10,21) = -845.0/110592.0; - restriction[1](10,22) = -1235.0/110592.0; - restriction[1](10,23) = 1525.0/110592.0; - restriction[1](10,24) = 475.0/73728.0; - restriction[1](11,0) = 2725.0/221184.0; - restriction[1](11,1) = 125.0/73728.0; - restriction[1](11,2) = 125.0/73728.0; - restriction[1](11,3) = 2725.0/221184.0; - restriction[1](11,4) = 125.0/3072.0; - restriction[1](11,5) = -125.0/18432.0; - restriction[1](11,6) = -125.0/27648.0; - restriction[1](11,7) = -25.0/9216.0; - restriction[1](11,8) = -25.0/6144.0; - restriction[1](11,9) = 65.0/9216.0; - restriction[1](11,10) = 125.0/3072.0; - restriction[1](11,11) = -125.0/18432.0; - restriction[1](11,12) = -125.0/27648.0; - restriction[1](11,13) = -545.0/27648.0; - restriction[1](11,14) = -545.0/18432.0; - restriction[1](11,15) = 1417.0/27648.0; - restriction[1](11,16) = -25.0/384.0; - restriction[1](11,17) = 25.0/3456.0; - restriction[1](11,18) = -65.0/3456.0; - restriction[1](11,19) = 65.0/384.0; - restriction[1](11,20) = 25.0/2304.0; - restriction[1](11,21) = 25.0/2304.0; - restriction[1](11,22) = -65.0/2304.0; - restriction[1](11,23) = -25.0/256.0; - restriction[1](11,24) = 25.0/1536.0; - restriction[1](12,0) = 29375.0/10616832.0; - restriction[1](12,1) = -62875.0/10616832.0; - restriction[1](12,2) = -62875.0/10616832.0; - restriction[1](12,3) = 29375.0/10616832.0; - restriction[1](12,4) = 32375.0/1327104.0; - restriction[1](12,5) = 40025.0/884736.0; - restriction[1](12,6) = 34625.0/1327104.0; - restriction[1](12,7) = 12575.0/1327104.0; - restriction[1](12,8) = 12575.0/884736.0; - restriction[1](12,9) = -32695.0/1327104.0; - restriction[1](12,10) = 32375.0/1327104.0; - restriction[1](12,11) = 40025.0/884736.0; - restriction[1](12,12) = 34625.0/1327104.0; - restriction[1](12,13) = -5875.0/1327104.0; - restriction[1](12,14) = -5875.0/884736.0; - restriction[1](12,15) = 15275.0/1327104.0; - restriction[1](12,16) = -6475.0/165888.0; - restriction[1](12,17) = -6925.0/165888.0; - restriction[1](12,18) = 18005.0/165888.0; - restriction[1](12,19) = 16835.0/165888.0; - restriction[1](12,20) = -8005.0/110592.0; - restriction[1](12,21) = -6925.0/110592.0; - restriction[1](12,22) = 20813.0/110592.0; - restriction[1](12,23) = -6475.0/110592.0; - restriction[1](12,24) = -8005.0/73728.0; - restriction[1](13,0) = -62875.0/10616832.0; - restriction[1](13,1) = -62875.0/10616832.0; - restriction[1](13,2) = 29375.0/10616832.0; - restriction[1](13,3) = 29375.0/10616832.0; - restriction[1](13,4) = -32695.0/1327104.0; - restriction[1](13,5) = 12575.0/884736.0; - restriction[1](13,6) = 12575.0/1327104.0; - restriction[1](13,7) = 34625.0/1327104.0; - restriction[1](13,8) = 40025.0/884736.0; - restriction[1](13,9) = 32375.0/1327104.0; - restriction[1](13,10) = 15275.0/1327104.0; - restriction[1](13,11) = -5875.0/884736.0; - restriction[1](13,12) = -5875.0/1327104.0; - restriction[1](13,13) = 34625.0/1327104.0; - restriction[1](13,14) = 40025.0/884736.0; - restriction[1](13,15) = 32375.0/1327104.0; - restriction[1](13,16) = 18005.0/165888.0; - restriction[1](13,17) = -6925.0/165888.0; - restriction[1](13,18) = -6475.0/165888.0; - restriction[1](13,19) = 16835.0/165888.0; - restriction[1](13,20) = -6925.0/110592.0; - restriction[1](13,21) = -8005.0/110592.0; - restriction[1](13,22) = -6475.0/110592.0; - restriction[1](13,23) = 20813.0/110592.0; - restriction[1](13,24) = -8005.0/73728.0; - restriction[1](14,0) = 125.0/73728.0; - restriction[1](14,1) = 125.0/73728.0; - restriction[1](14,2) = 2725.0/221184.0; - restriction[1](14,3) = 2725.0/221184.0; - restriction[1](14,4) = 65.0/9216.0; - restriction[1](14,5) = -25.0/6144.0; - restriction[1](14,6) = -25.0/9216.0; - restriction[1](14,7) = -125.0/27648.0; - restriction[1](14,8) = -125.0/18432.0; - restriction[1](14,9) = 125.0/3072.0; - restriction[1](14,10) = 1417.0/27648.0; - restriction[1](14,11) = -545.0/18432.0; - restriction[1](14,12) = -545.0/27648.0; - restriction[1](14,13) = -125.0/27648.0; - restriction[1](14,14) = -125.0/18432.0; - restriction[1](14,15) = 125.0/3072.0; - restriction[1](14,16) = -65.0/3456.0; - restriction[1](14,17) = 25.0/3456.0; - restriction[1](14,18) = -25.0/384.0; - restriction[1](14,19) = 65.0/384.0; - restriction[1](14,20) = 25.0/2304.0; - restriction[1](14,21) = 25.0/2304.0; - restriction[1](14,22) = -25.0/256.0; - restriction[1](14,23) = -65.0/2304.0; - restriction[1](14,24) = 25.0/1536.0; - restriction[1](15,0) = -6875.0/10616832.0; - restriction[1](15,1) = -6875.0/10616832.0; - restriction[1](15,2) = 1375.0/10616832.0; - restriction[1](15,3) = 1375.0/10616832.0; - restriction[1](15,4) = -3575.0/1327104.0; - restriction[1](15,5) = 1375.0/884736.0; - restriction[1](15,6) = 1375.0/1327104.0; - restriction[1](15,7) = 4225.0/1327104.0; - restriction[1](15,8) = -2375.0/884736.0; - restriction[1](15,9) = -7625.0/1327104.0; - restriction[1](15,10) = 715.0/1327104.0; - restriction[1](15,11) = -275.0/884736.0; - restriction[1](15,12) = -275.0/1327104.0; - restriction[1](15,13) = 4225.0/1327104.0; - restriction[1](15,14) = -2375.0/884736.0; - restriction[1](15,15) = -7625.0/1327104.0; - restriction[1](15,16) = 2197.0/165888.0; - restriction[1](15,17) = -845.0/165888.0; - restriction[1](15,18) = 1525.0/165888.0; - restriction[1](15,19) = -3965.0/165888.0; - restriction[1](15,20) = -845.0/110592.0; - restriction[1](15,21) = 475.0/110592.0; - restriction[1](15,22) = 1525.0/110592.0; - restriction[1](15,23) = -1235.0/110592.0; - restriction[1](15,24) = 475.0/73728.0; - restriction[1](16,0) = -138325.0/1358954496.0; - restriction[1](16,1) = 691625.0/1358954496.0; - restriction[1](16,2) = -323125.0/1358954496.0; - restriction[1](16,3) = 64625.0/1358954496.0; - restriction[1](16,4) = 767075.0/169869312.0; - restriction[1](16,5) = 238925.0/113246208.0; - restriction[1](16,6) = -425035.0/169869312.0; - restriction[1](16,7) = -380875.0/169869312.0; - restriction[1](16,8) = -440275.0/113246208.0; - restriction[1](16,9) = -356125.0/169869312.0; - restriction[1](16,10) = -358375.0/169869312.0; - restriction[1](16,11) = -111625.0/113246208.0; - restriction[1](16,12) = 198575.0/169869312.0; - restriction[1](16,13) = 76175.0/169869312.0; - restriction[1](16,14) = 88055.0/113246208.0; - restriction[1](16,15) = 71225.0/169869312.0; - restriction[1](16,16) = -422425.0/21233664.0; - restriction[1](16,17) = 234065.0/21233664.0; - restriction[1](16,18) = 218855.0/21233664.0; - restriction[1](16,19) = -394975.0/21233664.0; - restriction[1](16,20) = -131575.0/14155776.0; - restriction[1](16,21) = 270569.0/14155776.0; - restriction[1](16,22) = -123025.0/14155776.0; - restriction[1](16,23) = -488305.0/14155776.0; - restriction[1](16,24) = -152095.0/9437184.0; - restriction[1](17,0) = -2955125.0/1358954496.0; - restriction[1](17,1) = 6325225.0/1358954496.0; - restriction[1](17,2) = -2955125.0/1358954496.0; - restriction[1](17,3) = 1380625.0/1358954496.0; - restriction[1](17,4) = -3256925.0/169869312.0; - restriction[1](17,5) = -4026515.0/113246208.0; - restriction[1](17,6) = -3483275.0/169869312.0; - restriction[1](17,7) = -3483275.0/169869312.0; - restriction[1](17,8) = -4026515.0/113246208.0; - restriction[1](17,9) = -3256925.0/169869312.0; - restriction[1](17,10) = 1521625.0/169869312.0; - restriction[1](17,11) = 1881175.0/113246208.0; - restriction[1](17,12) = 1627375.0/169869312.0; - restriction[1](17,13) = 1627375.0/169869312.0; - restriction[1](17,14) = 1881175.0/113246208.0; - restriction[1](17,15) = 1521625.0/169869312.0; - restriction[1](17,16) = 1793575.0/21233664.0; - restriction[1](17,17) = 1918225.0/21233664.0; - restriction[1](17,18) = 1793575.0/21233664.0; - restriction[1](17,19) = 1677025.0/21233664.0; - restriction[1](17,20) = 2217385.0/14155776.0; - restriction[1](17,21) = 2217385.0/14155776.0; - restriction[1](17,22) = 2073295.0/14155776.0; - restriction[1](17,23) = 2073295.0/14155776.0; - restriction[1](17,24) = 2563201.0/9437184.0; - restriction[1](18,0) = -323125.0/1358954496.0; - restriction[1](18,1) = 691625.0/1358954496.0; - restriction[1](18,2) = -138325.0/1358954496.0; - restriction[1](18,3) = 64625.0/1358954496.0; - restriction[1](18,4) = -356125.0/169869312.0; - restriction[1](18,5) = -440275.0/113246208.0; - restriction[1](18,6) = -380875.0/169869312.0; - restriction[1](18,7) = -425035.0/169869312.0; - restriction[1](18,8) = 238925.0/113246208.0; - restriction[1](18,9) = 767075.0/169869312.0; - restriction[1](18,10) = 71225.0/169869312.0; - restriction[1](18,11) = 88055.0/113246208.0; - restriction[1](18,12) = 76175.0/169869312.0; - restriction[1](18,13) = 198575.0/169869312.0; - restriction[1](18,14) = -111625.0/113246208.0; - restriction[1](18,15) = -358375.0/169869312.0; - restriction[1](18,16) = 218855.0/21233664.0; - restriction[1](18,17) = 234065.0/21233664.0; - restriction[1](18,18) = -422425.0/21233664.0; - restriction[1](18,19) = -394975.0/21233664.0; - restriction[1](18,20) = 270569.0/14155776.0; - restriction[1](18,21) = -131575.0/14155776.0; - restriction[1](18,22) = -488305.0/14155776.0; - restriction[1](18,23) = -123025.0/14155776.0; - restriction[1](18,24) = -152095.0/9437184.0; - restriction[1](19,0) = -15125.0/1358954496.0; - restriction[1](19,1) = 75625.0/1358954496.0; - restriction[1](19,2) = -15125.0/1358954496.0; - restriction[1](19,3) = 3025.0/1358954496.0; - restriction[1](19,4) = 83875.0/169869312.0; - restriction[1](19,5) = 26125.0/113246208.0; - restriction[1](19,6) = -46475.0/169869312.0; - restriction[1](19,7) = -46475.0/169869312.0; - restriction[1](19,8) = 26125.0/113246208.0; - restriction[1](19,9) = 83875.0/169869312.0; - restriction[1](19,10) = -16775.0/169869312.0; - restriction[1](19,11) = -5225.0/113246208.0; - restriction[1](19,12) = 9295.0/169869312.0; - restriction[1](19,13) = 9295.0/169869312.0; - restriction[1](19,14) = -5225.0/113246208.0; - restriction[1](19,15) = -16775.0/169869312.0; - restriction[1](19,16) = -51545.0/21233664.0; - restriction[1](19,17) = 28561.0/21233664.0; - restriction[1](19,18) = -51545.0/21233664.0; - restriction[1](19,19) = 93025.0/21233664.0; - restriction[1](19,20) = -16055.0/14155776.0; - restriction[1](19,21) = -16055.0/14155776.0; - restriction[1](19,22) = 28975.0/14155776.0; - restriction[1](19,23) = 28975.0/14155776.0; - restriction[1](19,24) = 9025.0/9437184.0; - restriction[1](20,0) = -274135.0/28311552.0; - restriction[1](20,1) = -12575.0/9437184.0; - restriction[1](20,2) = 5875.0/9437184.0; - restriction[1](20,3) = 128075.0/28311552.0; - restriction[1](20,4) = -12575.0/393216.0; - restriction[1](20,5) = 12575.0/2359296.0; - restriction[1](20,6) = 12575.0/3538944.0; - restriction[1](20,7) = 6925.0/1179648.0; - restriction[1](20,8) = 8005.0/786432.0; - restriction[1](20,9) = 6475.0/1179648.0; - restriction[1](20,10) = 5875.0/393216.0; - restriction[1](20,11) = -5875.0/2359296.0; - restriction[1](20,12) = -5875.0/3538944.0; - restriction[1](20,13) = 150965.0/3538944.0; - restriction[1](20,14) = 174509.0/2359296.0; - restriction[1](20,15) = 141155.0/3538944.0; - restriction[1](20,16) = 6925.0/49152.0; - restriction[1](20,17) = -6925.0/442368.0; - restriction[1](20,18) = -6475.0/442368.0; - restriction[1](20,19) = 6475.0/49152.0; - restriction[1](20,20) = -6925.0/294912.0; - restriction[1](20,21) = -8005.0/294912.0; - restriction[1](20,22) = -6475.0/294912.0; - restriction[1](20,23) = 8005.0/32768.0; - restriction[1](20,24) = -8005.0/196608.0; - restriction[1](21,0) = 5875.0/9437184.0; - restriction[1](21,1) = -12575.0/9437184.0; - restriction[1](21,2) = -274135.0/28311552.0; - restriction[1](21,3) = 128075.0/28311552.0; - restriction[1](21,4) = 6475.0/1179648.0; - restriction[1](21,5) = 8005.0/786432.0; - restriction[1](21,6) = 6925.0/1179648.0; - restriction[1](21,7) = 12575.0/3538944.0; - restriction[1](21,8) = 12575.0/2359296.0; - restriction[1](21,9) = -12575.0/393216.0; - restriction[1](21,10) = 141155.0/3538944.0; - restriction[1](21,11) = 174509.0/2359296.0; - restriction[1](21,12) = 150965.0/3538944.0; - restriction[1](21,13) = -5875.0/3538944.0; - restriction[1](21,14) = -5875.0/2359296.0; - restriction[1](21,15) = 5875.0/393216.0; - restriction[1](21,16) = -6475.0/442368.0; - restriction[1](21,17) = -6925.0/442368.0; - restriction[1](21,18) = 6925.0/49152.0; - restriction[1](21,19) = 6475.0/49152.0; - restriction[1](21,20) = -8005.0/294912.0; - restriction[1](21,21) = -6925.0/294912.0; - restriction[1](21,22) = 8005.0/32768.0; - restriction[1](21,23) = -6475.0/294912.0; - restriction[1](21,24) = -8005.0/196608.0; - restriction[1](22,0) = -29975.0/28311552.0; - restriction[1](22,1) = -1375.0/9437184.0; - restriction[1](22,2) = 275.0/9437184.0; - restriction[1](22,3) = 5995.0/28311552.0; - restriction[1](22,4) = -1375.0/393216.0; - restriction[1](22,5) = 1375.0/2359296.0; - restriction[1](22,6) = 1375.0/3538944.0; - restriction[1](22,7) = 845.0/1179648.0; - restriction[1](22,8) = -475.0/786432.0; - restriction[1](22,9) = -1525.0/1179648.0; - restriction[1](22,10) = 275.0/393216.0; - restriction[1](22,11) = -275.0/2359296.0; - restriction[1](22,12) = -275.0/3538944.0; - restriction[1](22,13) = 18421.0/3538944.0; - restriction[1](22,14) = -10355.0/2359296.0; - restriction[1](22,15) = -33245.0/3538944.0; - restriction[1](22,16) = 845.0/49152.0; - restriction[1](22,17) = -845.0/442368.0; - restriction[1](22,18) = 1525.0/442368.0; - restriction[1](22,19) = -1525.0/49152.0; - restriction[1](22,20) = -845.0/294912.0; - restriction[1](22,21) = 475.0/294912.0; - restriction[1](22,22) = 1525.0/294912.0; - restriction[1](22,23) = -475.0/32768.0; - restriction[1](22,24) = 475.0/196608.0; - restriction[1](23,0) = 275.0/9437184.0; - restriction[1](23,1) = -1375.0/9437184.0; - restriction[1](23,2) = -29975.0/28311552.0; - restriction[1](23,3) = 5995.0/28311552.0; - restriction[1](23,4) = -1525.0/1179648.0; - restriction[1](23,5) = -475.0/786432.0; - restriction[1](23,6) = 845.0/1179648.0; - restriction[1](23,7) = 1375.0/3538944.0; - restriction[1](23,8) = 1375.0/2359296.0; - restriction[1](23,9) = -1375.0/393216.0; - restriction[1](23,10) = -33245.0/3538944.0; - restriction[1](23,11) = -10355.0/2359296.0; - restriction[1](23,12) = 18421.0/3538944.0; - restriction[1](23,13) = -275.0/3538944.0; - restriction[1](23,14) = -275.0/2359296.0; - restriction[1](23,15) = 275.0/393216.0; - restriction[1](23,16) = 1525.0/442368.0; - restriction[1](23,17) = -845.0/442368.0; - restriction[1](23,18) = 845.0/49152.0; - restriction[1](23,19) = -1525.0/49152.0; - restriction[1](23,20) = 475.0/294912.0; - restriction[1](23,21) = -845.0/294912.0; - restriction[1](23,22) = -475.0/32768.0; - restriction[1](23,23) = 1525.0/294912.0; - restriction[1](23,24) = 475.0/196608.0; - restriction[1](24,0) = 545.0/196608.0; - restriction[1](24,1) = 25.0/65536.0; - restriction[1](24,2) = 545.0/196608.0; - restriction[1](24,3) = 11881.0/589824.0; - restriction[1](24,4) = 75.0/8192.0; - restriction[1](24,5) = -25.0/16384.0; - restriction[1](24,6) = -25.0/24576.0; - restriction[1](24,7) = -25.0/24576.0; - restriction[1](24,8) = -25.0/16384.0; - restriction[1](24,9) = 75.0/8192.0; - restriction[1](24,10) = 545.0/8192.0; - restriction[1](24,11) = -545.0/49152.0; - restriction[1](24,12) = -545.0/73728.0; - restriction[1](24,13) = -545.0/73728.0; - restriction[1](24,14) = -545.0/49152.0; - restriction[1](24,15) = 545.0/8192.0; - restriction[1](24,16) = -25.0/1024.0; - restriction[1](24,17) = 25.0/9216.0; - restriction[1](24,18) = -25.0/1024.0; - restriction[1](24,19) = 225.0/1024.0; - restriction[1](24,20) = 25.0/6144.0; - restriction[1](24,21) = 25.0/6144.0; - restriction[1](24,22) = -75.0/2048.0; - restriction[1](24,23) = -75.0/2048.0; - restriction[1](24,24) = 25.0/4096.0; - restriction[2](0,0) = 625.0/82944.0; - restriction[2](0,1) = 625.0/82944.0; - restriction[2](0,2) = 625.0/82944.0; - restriction[2](0,3) = 625.0/82944.0; - restriction[2](0,4) = 325.0/10368.0; - restriction[2](0,5) = -125.0/6912.0; - restriction[2](0,6) = -125.0/10368.0; - restriction[2](0,7) = 325.0/10368.0; - restriction[2](0,8) = -125.0/6912.0; - restriction[2](0,9) = -125.0/10368.0; - restriction[2](0,10) = 325.0/10368.0; - restriction[2](0,11) = -125.0/6912.0; - restriction[2](0,12) = -125.0/10368.0; - restriction[2](0,13) = 325.0/10368.0; - restriction[2](0,14) = -125.0/6912.0; - restriction[2](0,15) = -125.0/10368.0; - restriction[2](0,16) = 169.0/1296.0; - restriction[2](0,17) = -65.0/1296.0; - restriction[2](0,18) = 25.0/1296.0; - restriction[2](0,19) = -65.0/1296.0; - restriction[2](0,20) = -65.0/864.0; - restriction[2](0,21) = 25.0/864.0; - restriction[2](0,22) = 25.0/864.0; - restriction[2](0,23) = -65.0/864.0; - restriction[2](0,24) = 25.0/576.0; - restriction[2](1,0) = 125.0/82944.0; - restriction[2](1,1) = 5225.0/82944.0; - restriction[2](1,2) = 5225.0/82944.0; - restriction[2](1,3) = 125.0/82944.0; - restriction[2](1,4) = 125.0/10368.0; - restriction[2](1,5) = -625.0/6912.0; - restriction[2](1,6) = 875.0/10368.0; - restriction[2](1,7) = 2717.0/10368.0; - restriction[2](1,8) = -1045.0/6912.0; - restriction[2](1,9) = -1045.0/10368.0; - restriction[2](1,10) = 125.0/10368.0; - restriction[2](1,11) = -625.0/6912.0; - restriction[2](1,12) = 875.0/10368.0; - restriction[2](1,13) = 65.0/10368.0; - restriction[2](1,14) = -25.0/6912.0; - restriction[2](1,15) = -25.0/10368.0; - restriction[2](1,16) = 65.0/1296.0; - restriction[2](1,17) = 455.0/1296.0; - restriction[2](1,18) = -175.0/1296.0; - restriction[2](1,19) = -25.0/1296.0; - restriction[2](1,20) = -325.0/864.0; - restriction[2](1,21) = -175.0/864.0; - restriction[2](1,22) = 125.0/864.0; - restriction[2](1,23) = -25.0/864.0; - restriction[2](1,24) = 125.0/576.0; - restriction[2](2,0) = 25.0/82944.0; - restriction[2](2,1) = 1045.0/82944.0; - restriction[2](2,2) = 43681.0/82944.0; - restriction[2](2,3) = 1045.0/82944.0; - restriction[2](2,4) = 25.0/10368.0; - restriction[2](2,5) = -125.0/6912.0; - restriction[2](2,6) = 175.0/10368.0; - restriction[2](2,7) = 1045.0/10368.0; - restriction[2](2,8) = -5225.0/6912.0; - restriction[2](2,9) = 7315.0/10368.0; - restriction[2](2,10) = 1045.0/10368.0; - restriction[2](2,11) = -5225.0/6912.0; - restriction[2](2,12) = 7315.0/10368.0; - restriction[2](2,13) = 25.0/10368.0; - restriction[2](2,14) = -125.0/6912.0; - restriction[2](2,15) = 175.0/10368.0; - restriction[2](2,16) = 25.0/1296.0; - restriction[2](2,17) = 175.0/1296.0; - restriction[2](2,18) = 1225.0/1296.0; - restriction[2](2,19) = 175.0/1296.0; - restriction[2](2,20) = -125.0/864.0; - restriction[2](2,21) = -875.0/864.0; - restriction[2](2,22) = -875.0/864.0; - restriction[2](2,23) = -125.0/864.0; - restriction[2](2,24) = 625.0/576.0; - restriction[2](3,0) = 125.0/82944.0; - restriction[2](3,1) = 125.0/82944.0; - restriction[2](3,2) = 5225.0/82944.0; - restriction[2](3,3) = 5225.0/82944.0; - restriction[2](3,4) = 65.0/10368.0; - restriction[2](3,5) = -25.0/6912.0; - restriction[2](3,6) = -25.0/10368.0; - restriction[2](3,7) = 125.0/10368.0; - restriction[2](3,8) = -625.0/6912.0; - restriction[2](3,9) = 875.0/10368.0; - restriction[2](3,10) = 2717.0/10368.0; - restriction[2](3,11) = -1045.0/6912.0; - restriction[2](3,12) = -1045.0/10368.0; - restriction[2](3,13) = 125.0/10368.0; - restriction[2](3,14) = -625.0/6912.0; - restriction[2](3,15) = 875.0/10368.0; - restriction[2](3,16) = 65.0/1296.0; - restriction[2](3,17) = -25.0/1296.0; - restriction[2](3,18) = -175.0/1296.0; - restriction[2](3,19) = 455.0/1296.0; - restriction[2](3,20) = -25.0/864.0; - restriction[2](3,21) = 125.0/864.0; - restriction[2](3,22) = -175.0/864.0; - restriction[2](3,23) = -325.0/864.0; - restriction[2](3,24) = 125.0/576.0; - restriction[2](4,0) = 1375.0/10616832.0; - restriction[2](4,1) = -6875.0/10616832.0; - restriction[2](4,2) = -6875.0/10616832.0; - restriction[2](4,3) = 1375.0/10616832.0; - restriction[2](4,4) = -7625.0/1327104.0; - restriction[2](4,5) = -2375.0/884736.0; - restriction[2](4,6) = 4225.0/1327104.0; - restriction[2](4,7) = -3575.0/1327104.0; - restriction[2](4,8) = 1375.0/884736.0; - restriction[2](4,9) = 1375.0/1327104.0; - restriction[2](4,10) = -7625.0/1327104.0; - restriction[2](4,11) = -2375.0/884736.0; - restriction[2](4,12) = 4225.0/1327104.0; - restriction[2](4,13) = 715.0/1327104.0; - restriction[2](4,14) = -275.0/884736.0; - restriction[2](4,15) = -275.0/1327104.0; - restriction[2](4,16) = -3965.0/165888.0; - restriction[2](4,17) = 2197.0/165888.0; - restriction[2](4,18) = -845.0/165888.0; - restriction[2](4,19) = 1525.0/165888.0; - restriction[2](4,20) = -1235.0/110592.0; - restriction[2](4,21) = -845.0/110592.0; - restriction[2](4,22) = 475.0/110592.0; - restriction[2](4,23) = 1525.0/110592.0; - restriction[2](4,24) = 475.0/73728.0; - restriction[2](5,0) = 2725.0/221184.0; - restriction[2](5,1) = 125.0/73728.0; - restriction[2](5,2) = 125.0/73728.0; - restriction[2](5,3) = 2725.0/221184.0; - restriction[2](5,4) = 125.0/3072.0; - restriction[2](5,5) = -125.0/18432.0; - restriction[2](5,6) = -125.0/27648.0; - restriction[2](5,7) = 65.0/9216.0; - restriction[2](5,8) = -25.0/6144.0; - restriction[2](5,9) = -25.0/9216.0; - restriction[2](5,10) = 125.0/3072.0; - restriction[2](5,11) = -125.0/18432.0; - restriction[2](5,12) = -125.0/27648.0; - restriction[2](5,13) = 1417.0/27648.0; - restriction[2](5,14) = -545.0/18432.0; - restriction[2](5,15) = -545.0/27648.0; - restriction[2](5,16) = 65.0/384.0; - restriction[2](5,17) = -65.0/3456.0; - restriction[2](5,18) = 25.0/3456.0; - restriction[2](5,19) = -25.0/384.0; - restriction[2](5,20) = -65.0/2304.0; - restriction[2](5,21) = 25.0/2304.0; - restriction[2](5,22) = 25.0/2304.0; - restriction[2](5,23) = -25.0/256.0; - restriction[2](5,24) = 25.0/1536.0; - restriction[2](6,0) = 29375.0/10616832.0; - restriction[2](6,1) = -62875.0/10616832.0; - restriction[2](6,2) = -62875.0/10616832.0; - restriction[2](6,3) = 29375.0/10616832.0; - restriction[2](6,4) = 32375.0/1327104.0; - restriction[2](6,5) = 40025.0/884736.0; - restriction[2](6,6) = 34625.0/1327104.0; - restriction[2](6,7) = -32695.0/1327104.0; - restriction[2](6,8) = 12575.0/884736.0; - restriction[2](6,9) = 12575.0/1327104.0; - restriction[2](6,10) = 32375.0/1327104.0; - restriction[2](6,11) = 40025.0/884736.0; - restriction[2](6,12) = 34625.0/1327104.0; - restriction[2](6,13) = 15275.0/1327104.0; - restriction[2](6,14) = -5875.0/884736.0; - restriction[2](6,15) = -5875.0/1327104.0; - restriction[2](6,16) = 16835.0/165888.0; - restriction[2](6,17) = 18005.0/165888.0; - restriction[2](6,18) = -6925.0/165888.0; - restriction[2](6,19) = -6475.0/165888.0; - restriction[2](6,20) = 20813.0/110592.0; - restriction[2](6,21) = -6925.0/110592.0; - restriction[2](6,22) = -8005.0/110592.0; - restriction[2](6,23) = -6475.0/110592.0; - restriction[2](6,24) = -8005.0/73728.0; - restriction[2](7,0) = 275.0/10616832.0; - restriction[2](7,1) = 11495.0/10616832.0; - restriction[2](7,2) = -57475.0/10616832.0; - restriction[2](7,3) = -1375.0/10616832.0; - restriction[2](7,4) = 275.0/1327104.0; - restriction[2](7,5) = -1375.0/884736.0; - restriction[2](7,6) = 1925.0/1327104.0; - restriction[2](7,7) = -63745.0/1327104.0; - restriction[2](7,8) = -19855.0/884736.0; - restriction[2](7,9) = 35321.0/1327104.0; - restriction[2](7,10) = -1375.0/1327104.0; - restriction[2](7,11) = 6875.0/884736.0; - restriction[2](7,12) = -9625.0/1327104.0; - restriction[2](7,13) = -1525.0/1327104.0; - restriction[2](7,14) = -475.0/884736.0; - restriction[2](7,15) = 845.0/1327104.0; - restriction[2](7,16) = -1525.0/165888.0; - restriction[2](7,17) = -10675.0/165888.0; - restriction[2](7,18) = 5915.0/165888.0; - restriction[2](7,19) = 845.0/165888.0; - restriction[2](7,20) = 7625.0/110592.0; - restriction[2](7,21) = -3325.0/110592.0; - restriction[2](7,22) = -4225.0/110592.0; - restriction[2](7,23) = -475.0/110592.0; - restriction[2](7,24) = 2375.0/73728.0; - restriction[2](8,0) = 545.0/221184.0; - restriction[2](8,1) = 22781.0/221184.0; - restriction[2](8,2) = 1045.0/73728.0; - restriction[2](8,3) = 25.0/73728.0; - restriction[2](8,4) = 545.0/27648.0; - restriction[2](8,5) = -2725.0/18432.0; - restriction[2](8,6) = 3815.0/27648.0; - restriction[2](8,7) = 1045.0/3072.0; - restriction[2](8,8) = -1045.0/18432.0; - restriction[2](8,9) = -1045.0/27648.0; - restriction[2](8,10) = 25.0/9216.0; - restriction[2](8,11) = -125.0/6144.0; - restriction[2](8,12) = 175.0/9216.0; - restriction[2](8,13) = 25.0/3072.0; - restriction[2](8,14) = -25.0/18432.0; - restriction[2](8,15) = -25.0/27648.0; - restriction[2](8,16) = 25.0/384.0; - restriction[2](8,17) = 175.0/384.0; - restriction[2](8,18) = -175.0/3456.0; - restriction[2](8,19) = -25.0/3456.0; - restriction[2](8,20) = -125.0/256.0; - restriction[2](8,21) = -175.0/2304.0; - restriction[2](8,22) = 125.0/2304.0; - restriction[2](8,23) = -25.0/2304.0; - restriction[2](8,24) = 125.0/1536.0; - restriction[2](9,0) = 5875.0/10616832.0; - restriction[2](9,1) = 245575.0/10616832.0; - restriction[2](9,2) = -525635.0/10616832.0; - restriction[2](9,3) = -12575.0/10616832.0; - restriction[2](9,4) = 5875.0/1327104.0; - restriction[2](9,5) = -29375.0/884736.0; - restriction[2](9,6) = 41125.0/1327104.0; - restriction[2](9,7) = 270655.0/1327104.0; - restriction[2](9,8) = 334609.0/884736.0; - restriction[2](9,9) = 289465.0/1327104.0; - restriction[2](9,10) = -12575.0/1327104.0; - restriction[2](9,11) = 62875.0/884736.0; - restriction[2](9,12) = -88025.0/1327104.0; - restriction[2](9,13) = 6475.0/1327104.0; - restriction[2](9,14) = 8005.0/884736.0; - restriction[2](9,15) = 6925.0/1327104.0; - restriction[2](9,16) = 6475.0/165888.0; - restriction[2](9,17) = 45325.0/165888.0; - restriction[2](9,18) = 48475.0/165888.0; - restriction[2](9,19) = 6925.0/165888.0; - restriction[2](9,20) = -32375.0/110592.0; - restriction[2](9,21) = 56035.0/110592.0; - restriction[2](9,22) = -34625.0/110592.0; - restriction[2](9,23) = 8005.0/110592.0; - restriction[2](9,24) = -40025.0/73728.0; - restriction[2](10,0) = 275.0/10616832.0; - restriction[2](10,1) = -1375.0/10616832.0; - restriction[2](10,2) = -57475.0/10616832.0; - restriction[2](10,3) = 11495.0/10616832.0; - restriction[2](10,4) = -1525.0/1327104.0; - restriction[2](10,5) = -475.0/884736.0; - restriction[2](10,6) = 845.0/1327104.0; - restriction[2](10,7) = -1375.0/1327104.0; - restriction[2](10,8) = 6875.0/884736.0; - restriction[2](10,9) = -9625.0/1327104.0; - restriction[2](10,10) = -63745.0/1327104.0; - restriction[2](10,11) = -19855.0/884736.0; - restriction[2](10,12) = 35321.0/1327104.0; - restriction[2](10,13) = 275.0/1327104.0; - restriction[2](10,14) = -1375.0/884736.0; - restriction[2](10,15) = 1925.0/1327104.0; - restriction[2](10,16) = -1525.0/165888.0; - restriction[2](10,17) = 845.0/165888.0; - restriction[2](10,18) = 5915.0/165888.0; - restriction[2](10,19) = -10675.0/165888.0; - restriction[2](10,20) = -475.0/110592.0; - restriction[2](10,21) = -4225.0/110592.0; - restriction[2](10,22) = -3325.0/110592.0; - restriction[2](10,23) = 7625.0/110592.0; - restriction[2](10,24) = 2375.0/73728.0; - restriction[2](11,0) = 545.0/221184.0; - restriction[2](11,1) = 25.0/73728.0; - restriction[2](11,2) = 1045.0/73728.0; - restriction[2](11,3) = 22781.0/221184.0; - restriction[2](11,4) = 25.0/3072.0; - restriction[2](11,5) = -25.0/18432.0; - restriction[2](11,6) = -25.0/27648.0; - restriction[2](11,7) = 25.0/9216.0; - restriction[2](11,8) = -125.0/6144.0; - restriction[2](11,9) = 175.0/9216.0; - restriction[2](11,10) = 1045.0/3072.0; - restriction[2](11,11) = -1045.0/18432.0; - restriction[2](11,12) = -1045.0/27648.0; - restriction[2](11,13) = 545.0/27648.0; - restriction[2](11,14) = -2725.0/18432.0; - restriction[2](11,15) = 3815.0/27648.0; - restriction[2](11,16) = 25.0/384.0; - restriction[2](11,17) = -25.0/3456.0; - restriction[2](11,18) = -175.0/3456.0; - restriction[2](11,19) = 175.0/384.0; - restriction[2](11,20) = -25.0/2304.0; - restriction[2](11,21) = 125.0/2304.0; - restriction[2](11,22) = -175.0/2304.0; - restriction[2](11,23) = -125.0/256.0; - restriction[2](11,24) = 125.0/1536.0; - restriction[2](12,0) = 5875.0/10616832.0; - restriction[2](12,1) = -12575.0/10616832.0; - restriction[2](12,2) = -525635.0/10616832.0; - restriction[2](12,3) = 245575.0/10616832.0; - restriction[2](12,4) = 6475.0/1327104.0; - restriction[2](12,5) = 8005.0/884736.0; - restriction[2](12,6) = 6925.0/1327104.0; - restriction[2](12,7) = -12575.0/1327104.0; - restriction[2](12,8) = 62875.0/884736.0; - restriction[2](12,9) = -88025.0/1327104.0; - restriction[2](12,10) = 270655.0/1327104.0; - restriction[2](12,11) = 334609.0/884736.0; - restriction[2](12,12) = 289465.0/1327104.0; - restriction[2](12,13) = 5875.0/1327104.0; - restriction[2](12,14) = -29375.0/884736.0; - restriction[2](12,15) = 41125.0/1327104.0; - restriction[2](12,16) = 6475.0/165888.0; - restriction[2](12,17) = 6925.0/165888.0; - restriction[2](12,18) = 48475.0/165888.0; - restriction[2](12,19) = 45325.0/165888.0; - restriction[2](12,20) = 8005.0/110592.0; - restriction[2](12,21) = -34625.0/110592.0; - restriction[2](12,22) = 56035.0/110592.0; - restriction[2](12,23) = -32375.0/110592.0; - restriction[2](12,24) = -40025.0/73728.0; - restriction[2](13,0) = 1375.0/10616832.0; - restriction[2](13,1) = 1375.0/10616832.0; - restriction[2](13,2) = -6875.0/10616832.0; - restriction[2](13,3) = -6875.0/10616832.0; - restriction[2](13,4) = 715.0/1327104.0; - restriction[2](13,5) = -275.0/884736.0; - restriction[2](13,6) = -275.0/1327104.0; - restriction[2](13,7) = -7625.0/1327104.0; - restriction[2](13,8) = -2375.0/884736.0; - restriction[2](13,9) = 4225.0/1327104.0; - restriction[2](13,10) = -3575.0/1327104.0; - restriction[2](13,11) = 1375.0/884736.0; - restriction[2](13,12) = 1375.0/1327104.0; - restriction[2](13,13) = -7625.0/1327104.0; - restriction[2](13,14) = -2375.0/884736.0; - restriction[2](13,15) = 4225.0/1327104.0; - restriction[2](13,16) = -3965.0/165888.0; - restriction[2](13,17) = 1525.0/165888.0; - restriction[2](13,18) = -845.0/165888.0; - restriction[2](13,19) = 2197.0/165888.0; - restriction[2](13,20) = 1525.0/110592.0; - restriction[2](13,21) = 475.0/110592.0; - restriction[2](13,22) = -845.0/110592.0; - restriction[2](13,23) = -1235.0/110592.0; - restriction[2](13,24) = 475.0/73728.0; - restriction[2](14,0) = 2725.0/221184.0; - restriction[2](14,1) = 2725.0/221184.0; - restriction[2](14,2) = 125.0/73728.0; - restriction[2](14,3) = 125.0/73728.0; - restriction[2](14,4) = 1417.0/27648.0; - restriction[2](14,5) = -545.0/18432.0; - restriction[2](14,6) = -545.0/27648.0; - restriction[2](14,7) = 125.0/3072.0; - restriction[2](14,8) = -125.0/18432.0; - restriction[2](14,9) = -125.0/27648.0; - restriction[2](14,10) = 65.0/9216.0; - restriction[2](14,11) = -25.0/6144.0; - restriction[2](14,12) = -25.0/9216.0; - restriction[2](14,13) = 125.0/3072.0; - restriction[2](14,14) = -125.0/18432.0; - restriction[2](14,15) = -125.0/27648.0; - restriction[2](14,16) = 65.0/384.0; - restriction[2](14,17) = -25.0/384.0; - restriction[2](14,18) = 25.0/3456.0; - restriction[2](14,19) = -65.0/3456.0; - restriction[2](14,20) = -25.0/256.0; - restriction[2](14,21) = 25.0/2304.0; - restriction[2](14,22) = 25.0/2304.0; - restriction[2](14,23) = -65.0/2304.0; - restriction[2](14,24) = 25.0/1536.0; - restriction[2](15,0) = 29375.0/10616832.0; - restriction[2](15,1) = 29375.0/10616832.0; - restriction[2](15,2) = -62875.0/10616832.0; - restriction[2](15,3) = -62875.0/10616832.0; - restriction[2](15,4) = 15275.0/1327104.0; - restriction[2](15,5) = -5875.0/884736.0; - restriction[2](15,6) = -5875.0/1327104.0; - restriction[2](15,7) = 32375.0/1327104.0; - restriction[2](15,8) = 40025.0/884736.0; - restriction[2](15,9) = 34625.0/1327104.0; - restriction[2](15,10) = -32695.0/1327104.0; - restriction[2](15,11) = 12575.0/884736.0; - restriction[2](15,12) = 12575.0/1327104.0; - restriction[2](15,13) = 32375.0/1327104.0; - restriction[2](15,14) = 40025.0/884736.0; - restriction[2](15,15) = 34625.0/1327104.0; - restriction[2](15,16) = 16835.0/165888.0; - restriction[2](15,17) = -6475.0/165888.0; - restriction[2](15,18) = -6925.0/165888.0; - restriction[2](15,19) = 18005.0/165888.0; - restriction[2](15,20) = -6475.0/110592.0; - restriction[2](15,21) = -8005.0/110592.0; - restriction[2](15,22) = -6925.0/110592.0; - restriction[2](15,23) = 20813.0/110592.0; - restriction[2](15,24) = -8005.0/73728.0; - restriction[2](16,0) = 3025.0/1358954496.0; - restriction[2](16,1) = -15125.0/1358954496.0; - restriction[2](16,2) = 75625.0/1358954496.0; - restriction[2](16,3) = -15125.0/1358954496.0; - restriction[2](16,4) = -16775.0/169869312.0; - restriction[2](16,5) = -5225.0/113246208.0; - restriction[2](16,6) = 9295.0/169869312.0; - restriction[2](16,7) = 83875.0/169869312.0; - restriction[2](16,8) = 26125.0/113246208.0; - restriction[2](16,9) = -46475.0/169869312.0; - restriction[2](16,10) = 83875.0/169869312.0; - restriction[2](16,11) = 26125.0/113246208.0; - restriction[2](16,12) = -46475.0/169869312.0; - restriction[2](16,13) = -16775.0/169869312.0; - restriction[2](16,14) = -5225.0/113246208.0; - restriction[2](16,15) = 9295.0/169869312.0; - restriction[2](16,16) = 93025.0/21233664.0; - restriction[2](16,17) = -51545.0/21233664.0; - restriction[2](16,18) = 28561.0/21233664.0; - restriction[2](16,19) = -51545.0/21233664.0; - restriction[2](16,20) = 28975.0/14155776.0; - restriction[2](16,21) = -16055.0/14155776.0; - restriction[2](16,22) = -16055.0/14155776.0; - restriction[2](16,23) = 28975.0/14155776.0; - restriction[2](16,24) = 9025.0/9437184.0; - restriction[2](17,0) = 64625.0/1358954496.0; - restriction[2](17,1) = -138325.0/1358954496.0; - restriction[2](17,2) = 691625.0/1358954496.0; - restriction[2](17,3) = -323125.0/1358954496.0; - restriction[2](17,4) = 71225.0/169869312.0; - restriction[2](17,5) = 88055.0/113246208.0; - restriction[2](17,6) = 76175.0/169869312.0; - restriction[2](17,7) = 767075.0/169869312.0; - restriction[2](17,8) = 238925.0/113246208.0; - restriction[2](17,9) = -425035.0/169869312.0; - restriction[2](17,10) = -356125.0/169869312.0; - restriction[2](17,11) = -440275.0/113246208.0; - restriction[2](17,12) = -380875.0/169869312.0; - restriction[2](17,13) = -358375.0/169869312.0; - restriction[2](17,14) = -111625.0/113246208.0; - restriction[2](17,15) = 198575.0/169869312.0; - restriction[2](17,16) = -394975.0/21233664.0; - restriction[2](17,17) = -422425.0/21233664.0; - restriction[2](17,18) = 234065.0/21233664.0; - restriction[2](17,19) = 218855.0/21233664.0; - restriction[2](17,20) = -488305.0/14155776.0; - restriction[2](17,21) = -131575.0/14155776.0; - restriction[2](17,22) = 270569.0/14155776.0; - restriction[2](17,23) = -123025.0/14155776.0; - restriction[2](17,24) = -152095.0/9437184.0; - restriction[2](18,0) = 1380625.0/1358954496.0; - restriction[2](18,1) = -2955125.0/1358954496.0; - restriction[2](18,2) = 6325225.0/1358954496.0; - restriction[2](18,3) = -2955125.0/1358954496.0; - restriction[2](18,4) = 1521625.0/169869312.0; - restriction[2](18,5) = 1881175.0/113246208.0; - restriction[2](18,6) = 1627375.0/169869312.0; - restriction[2](18,7) = -3256925.0/169869312.0; - restriction[2](18,8) = -4026515.0/113246208.0; - restriction[2](18,9) = -3483275.0/169869312.0; - restriction[2](18,10) = -3256925.0/169869312.0; - restriction[2](18,11) = -4026515.0/113246208.0; - restriction[2](18,12) = -3483275.0/169869312.0; - restriction[2](18,13) = 1521625.0/169869312.0; - restriction[2](18,14) = 1881175.0/113246208.0; - restriction[2](18,15) = 1627375.0/169869312.0; - restriction[2](18,16) = 1677025.0/21233664.0; - restriction[2](18,17) = 1793575.0/21233664.0; - restriction[2](18,18) = 1918225.0/21233664.0; - restriction[2](18,19) = 1793575.0/21233664.0; - restriction[2](18,20) = 2073295.0/14155776.0; - restriction[2](18,21) = 2217385.0/14155776.0; - restriction[2](18,22) = 2217385.0/14155776.0; - restriction[2](18,23) = 2073295.0/14155776.0; - restriction[2](18,24) = 2563201.0/9437184.0; - restriction[2](19,0) = 64625.0/1358954496.0; - restriction[2](19,1) = -323125.0/1358954496.0; - restriction[2](19,2) = 691625.0/1358954496.0; - restriction[2](19,3) = -138325.0/1358954496.0; - restriction[2](19,4) = -358375.0/169869312.0; - restriction[2](19,5) = -111625.0/113246208.0; - restriction[2](19,6) = 198575.0/169869312.0; - restriction[2](19,7) = -356125.0/169869312.0; - restriction[2](19,8) = -440275.0/113246208.0; - restriction[2](19,9) = -380875.0/169869312.0; - restriction[2](19,10) = 767075.0/169869312.0; - restriction[2](19,11) = 238925.0/113246208.0; - restriction[2](19,12) = -425035.0/169869312.0; - restriction[2](19,13) = 71225.0/169869312.0; - restriction[2](19,14) = 88055.0/113246208.0; - restriction[2](19,15) = 76175.0/169869312.0; - restriction[2](19,16) = -394975.0/21233664.0; - restriction[2](19,17) = 218855.0/21233664.0; - restriction[2](19,18) = 234065.0/21233664.0; - restriction[2](19,19) = -422425.0/21233664.0; - restriction[2](19,20) = -123025.0/14155776.0; - restriction[2](19,21) = 270569.0/14155776.0; - restriction[2](19,22) = -131575.0/14155776.0; - restriction[2](19,23) = -488305.0/14155776.0; - restriction[2](19,24) = -152095.0/9437184.0; - restriction[2](20,0) = 5995.0/28311552.0; - restriction[2](20,1) = 275.0/9437184.0; - restriction[2](20,2) = -1375.0/9437184.0; - restriction[2](20,3) = -29975.0/28311552.0; - restriction[2](20,4) = 275.0/393216.0; - restriction[2](20,5) = -275.0/2359296.0; - restriction[2](20,6) = -275.0/3538944.0; - restriction[2](20,7) = -1525.0/1179648.0; - restriction[2](20,8) = -475.0/786432.0; - restriction[2](20,9) = 845.0/1179648.0; - restriction[2](20,10) = -1375.0/393216.0; - restriction[2](20,11) = 1375.0/2359296.0; - restriction[2](20,12) = 1375.0/3538944.0; - restriction[2](20,13) = -33245.0/3538944.0; - restriction[2](20,14) = -10355.0/2359296.0; - restriction[2](20,15) = 18421.0/3538944.0; - restriction[2](20,16) = -1525.0/49152.0; - restriction[2](20,17) = 1525.0/442368.0; - restriction[2](20,18) = -845.0/442368.0; - restriction[2](20,19) = 845.0/49152.0; - restriction[2](20,20) = 1525.0/294912.0; - restriction[2](20,21) = 475.0/294912.0; - restriction[2](20,22) = -845.0/294912.0; - restriction[2](20,23) = -475.0/32768.0; - restriction[2](20,24) = 475.0/196608.0; - restriction[2](21,0) = 128075.0/28311552.0; - restriction[2](21,1) = -274135.0/28311552.0; - restriction[2](21,2) = -12575.0/9437184.0; - restriction[2](21,3) = 5875.0/9437184.0; - restriction[2](21,4) = 141155.0/3538944.0; - restriction[2](21,5) = 174509.0/2359296.0; - restriction[2](21,6) = 150965.0/3538944.0; - restriction[2](21,7) = -12575.0/393216.0; - restriction[2](21,8) = 12575.0/2359296.0; - restriction[2](21,9) = 12575.0/3538944.0; - restriction[2](21,10) = 6475.0/1179648.0; - restriction[2](21,11) = 8005.0/786432.0; - restriction[2](21,12) = 6925.0/1179648.0; - restriction[2](21,13) = 5875.0/393216.0; - restriction[2](21,14) = -5875.0/2359296.0; - restriction[2](21,15) = -5875.0/3538944.0; - restriction[2](21,16) = 6475.0/49152.0; - restriction[2](21,17) = 6925.0/49152.0; - restriction[2](21,18) = -6925.0/442368.0; - restriction[2](21,19) = -6475.0/442368.0; - restriction[2](21,20) = 8005.0/32768.0; - restriction[2](21,21) = -6925.0/294912.0; - restriction[2](21,22) = -8005.0/294912.0; - restriction[2](21,23) = -6475.0/294912.0; - restriction[2](21,24) = -8005.0/196608.0; - restriction[2](22,0) = 128075.0/28311552.0; - restriction[2](22,1) = 5875.0/9437184.0; - restriction[2](22,2) = -12575.0/9437184.0; - restriction[2](22,3) = -274135.0/28311552.0; - restriction[2](22,4) = 5875.0/393216.0; - restriction[2](22,5) = -5875.0/2359296.0; - restriction[2](22,6) = -5875.0/3538944.0; - restriction[2](22,7) = 6475.0/1179648.0; - restriction[2](22,8) = 8005.0/786432.0; - restriction[2](22,9) = 6925.0/1179648.0; - restriction[2](22,10) = -12575.0/393216.0; - restriction[2](22,11) = 12575.0/2359296.0; - restriction[2](22,12) = 12575.0/3538944.0; - restriction[2](22,13) = 141155.0/3538944.0; - restriction[2](22,14) = 174509.0/2359296.0; - restriction[2](22,15) = 150965.0/3538944.0; - restriction[2](22,16) = 6475.0/49152.0; - restriction[2](22,17) = -6475.0/442368.0; - restriction[2](22,18) = -6925.0/442368.0; - restriction[2](22,19) = 6925.0/49152.0; - restriction[2](22,20) = -6475.0/294912.0; - restriction[2](22,21) = -8005.0/294912.0; - restriction[2](22,22) = -6925.0/294912.0; - restriction[2](22,23) = 8005.0/32768.0; - restriction[2](22,24) = -8005.0/196608.0; - restriction[2](23,0) = 5995.0/28311552.0; - restriction[2](23,1) = -29975.0/28311552.0; - restriction[2](23,2) = -1375.0/9437184.0; - restriction[2](23,3) = 275.0/9437184.0; - restriction[2](23,4) = -33245.0/3538944.0; - restriction[2](23,5) = -10355.0/2359296.0; - restriction[2](23,6) = 18421.0/3538944.0; - restriction[2](23,7) = -1375.0/393216.0; - restriction[2](23,8) = 1375.0/2359296.0; - restriction[2](23,9) = 1375.0/3538944.0; - restriction[2](23,10) = -1525.0/1179648.0; - restriction[2](23,11) = -475.0/786432.0; - restriction[2](23,12) = 845.0/1179648.0; - restriction[2](23,13) = 275.0/393216.0; - restriction[2](23,14) = -275.0/2359296.0; - restriction[2](23,15) = -275.0/3538944.0; - restriction[2](23,16) = -1525.0/49152.0; - restriction[2](23,17) = 845.0/49152.0; - restriction[2](23,18) = -845.0/442368.0; - restriction[2](23,19) = 1525.0/442368.0; - restriction[2](23,20) = -475.0/32768.0; - restriction[2](23,21) = -845.0/294912.0; - restriction[2](23,22) = 475.0/294912.0; - restriction[2](23,23) = 1525.0/294912.0; - restriction[2](23,24) = 475.0/196608.0; - restriction[2](24,0) = 11881.0/589824.0; - restriction[2](24,1) = 545.0/196608.0; - restriction[2](24,2) = 25.0/65536.0; - restriction[2](24,3) = 545.0/196608.0; - restriction[2](24,4) = 545.0/8192.0; - restriction[2](24,5) = -545.0/49152.0; - restriction[2](24,6) = -545.0/73728.0; - restriction[2](24,7) = 75.0/8192.0; - restriction[2](24,8) = -25.0/16384.0; - restriction[2](24,9) = -25.0/24576.0; - restriction[2](24,10) = 75.0/8192.0; - restriction[2](24,11) = -25.0/16384.0; - restriction[2](24,12) = -25.0/24576.0; - restriction[2](24,13) = 545.0/8192.0; - restriction[2](24,14) = -545.0/49152.0; - restriction[2](24,15) = -545.0/73728.0; - restriction[2](24,16) = 225.0/1024.0; - restriction[2](24,17) = -25.0/1024.0; - restriction[2](24,18) = 25.0/9216.0; - restriction[2](24,19) = -25.0/1024.0; - restriction[2](24,20) = -75.0/2048.0; - restriction[2](24,21) = 25.0/6144.0; - restriction[2](24,22) = 25.0/6144.0; - restriction[2](24,23) = -75.0/2048.0; - restriction[2](24,24) = 25.0/4096.0; - restriction[3](0,0) = 5225.0/82944.0; - restriction[3](0,1) = 125.0/82944.0; - restriction[3](0,2) = 125.0/82944.0; - restriction[3](0,3) = 5225.0/82944.0; - restriction[3](0,4) = 875.0/10368.0; - restriction[3](0,5) = -625.0/6912.0; - restriction[3](0,6) = 125.0/10368.0; - restriction[3](0,7) = 65.0/10368.0; - restriction[3](0,8) = -25.0/6912.0; - restriction[3](0,9) = -25.0/10368.0; - restriction[3](0,10) = 875.0/10368.0; - restriction[3](0,11) = -625.0/6912.0; - restriction[3](0,12) = 125.0/10368.0; - restriction[3](0,13) = 2717.0/10368.0; - restriction[3](0,14) = -1045.0/6912.0; - restriction[3](0,15) = -1045.0/10368.0; - restriction[3](0,16) = 455.0/1296.0; - restriction[3](0,17) = 65.0/1296.0; - restriction[3](0,18) = -25.0/1296.0; - restriction[3](0,19) = -175.0/1296.0; - restriction[3](0,20) = -325.0/864.0; - restriction[3](0,21) = -25.0/864.0; - restriction[3](0,22) = 125.0/864.0; - restriction[3](0,23) = -175.0/864.0; - restriction[3](0,24) = 125.0/576.0; - restriction[3](1,0) = 625.0/82944.0; - restriction[3](1,1) = 625.0/82944.0; - restriction[3](1,2) = 625.0/82944.0; - restriction[3](1,3) = 625.0/82944.0; - restriction[3](1,4) = -125.0/10368.0; - restriction[3](1,5) = -125.0/6912.0; - restriction[3](1,6) = 325.0/10368.0; - restriction[3](1,7) = 325.0/10368.0; - restriction[3](1,8) = -125.0/6912.0; - restriction[3](1,9) = -125.0/10368.0; - restriction[3](1,10) = -125.0/10368.0; - restriction[3](1,11) = -125.0/6912.0; - restriction[3](1,12) = 325.0/10368.0; - restriction[3](1,13) = 325.0/10368.0; - restriction[3](1,14) = -125.0/6912.0; - restriction[3](1,15) = -125.0/10368.0; - restriction[3](1,16) = -65.0/1296.0; - restriction[3](1,17) = 169.0/1296.0; - restriction[3](1,18) = -65.0/1296.0; - restriction[3](1,19) = 25.0/1296.0; - restriction[3](1,20) = -65.0/864.0; - restriction[3](1,21) = -65.0/864.0; - restriction[3](1,22) = 25.0/864.0; - restriction[3](1,23) = 25.0/864.0; - restriction[3](1,24) = 25.0/576.0; - restriction[3](2,0) = 125.0/82944.0; - restriction[3](2,1) = 125.0/82944.0; - restriction[3](2,2) = 5225.0/82944.0; - restriction[3](2,3) = 5225.0/82944.0; - restriction[3](2,4) = -25.0/10368.0; - restriction[3](2,5) = -25.0/6912.0; - restriction[3](2,6) = 65.0/10368.0; - restriction[3](2,7) = 125.0/10368.0; - restriction[3](2,8) = -625.0/6912.0; - restriction[3](2,9) = 875.0/10368.0; - restriction[3](2,10) = -1045.0/10368.0; - restriction[3](2,11) = -1045.0/6912.0; - restriction[3](2,12) = 2717.0/10368.0; - restriction[3](2,13) = 125.0/10368.0; - restriction[3](2,14) = -625.0/6912.0; - restriction[3](2,15) = 875.0/10368.0; - restriction[3](2,16) = -25.0/1296.0; - restriction[3](2,17) = 65.0/1296.0; - restriction[3](2,18) = 455.0/1296.0; - restriction[3](2,19) = -175.0/1296.0; - restriction[3](2,20) = -25.0/864.0; - restriction[3](2,21) = -325.0/864.0; - restriction[3](2,22) = -175.0/864.0; - restriction[3](2,23) = 125.0/864.0; - restriction[3](2,24) = 125.0/576.0; - restriction[3](3,0) = 1045.0/82944.0; - restriction[3](3,1) = 25.0/82944.0; - restriction[3](3,2) = 1045.0/82944.0; - restriction[3](3,3) = 43681.0/82944.0; - restriction[3](3,4) = 175.0/10368.0; - restriction[3](3,5) = -125.0/6912.0; - restriction[3](3,6) = 25.0/10368.0; - restriction[3](3,7) = 25.0/10368.0; - restriction[3](3,8) = -125.0/6912.0; - restriction[3](3,9) = 175.0/10368.0; - restriction[3](3,10) = 7315.0/10368.0; - restriction[3](3,11) = -5225.0/6912.0; - restriction[3](3,12) = 1045.0/10368.0; - restriction[3](3,13) = 1045.0/10368.0; - restriction[3](3,14) = -5225.0/6912.0; - restriction[3](3,15) = 7315.0/10368.0; - restriction[3](3,16) = 175.0/1296.0; - restriction[3](3,17) = 25.0/1296.0; - restriction[3](3,18) = 175.0/1296.0; - restriction[3](3,19) = 1225.0/1296.0; - restriction[3](3,20) = -125.0/864.0; - restriction[3](3,21) = -125.0/864.0; - restriction[3](3,22) = -875.0/864.0; - restriction[3](3,23) = -875.0/864.0; - restriction[3](3,24) = 625.0/576.0; - restriction[3](4,0) = -62875.0/10616832.0; - restriction[3](4,1) = 29375.0/10616832.0; - restriction[3](4,2) = 29375.0/10616832.0; - restriction[3](4,3) = -62875.0/10616832.0; - restriction[3](4,4) = 34625.0/1327104.0; - restriction[3](4,5) = 40025.0/884736.0; - restriction[3](4,6) = 32375.0/1327104.0; - restriction[3](4,7) = 15275.0/1327104.0; - restriction[3](4,8) = -5875.0/884736.0; - restriction[3](4,9) = -5875.0/1327104.0; - restriction[3](4,10) = 34625.0/1327104.0; - restriction[3](4,11) = 40025.0/884736.0; - restriction[3](4,12) = 32375.0/1327104.0; - restriction[3](4,13) = -32695.0/1327104.0; - restriction[3](4,14) = 12575.0/884736.0; - restriction[3](4,15) = 12575.0/1327104.0; - restriction[3](4,16) = 18005.0/165888.0; - restriction[3](4,17) = 16835.0/165888.0; - restriction[3](4,18) = -6475.0/165888.0; - restriction[3](4,19) = -6925.0/165888.0; - restriction[3](4,20) = 20813.0/110592.0; - restriction[3](4,21) = -6475.0/110592.0; - restriction[3](4,22) = -8005.0/110592.0; - restriction[3](4,23) = -6925.0/110592.0; - restriction[3](4,24) = -8005.0/73728.0; - restriction[3](5,0) = 125.0/73728.0; - restriction[3](5,1) = 2725.0/221184.0; - restriction[3](5,2) = 2725.0/221184.0; - restriction[3](5,3) = 125.0/73728.0; - restriction[3](5,4) = -125.0/27648.0; - restriction[3](5,5) = -125.0/18432.0; - restriction[3](5,6) = 125.0/3072.0; - restriction[3](5,7) = 1417.0/27648.0; - restriction[3](5,8) = -545.0/18432.0; - restriction[3](5,9) = -545.0/27648.0; - restriction[3](5,10) = -125.0/27648.0; - restriction[3](5,11) = -125.0/18432.0; - restriction[3](5,12) = 125.0/3072.0; - restriction[3](5,13) = 65.0/9216.0; - restriction[3](5,14) = -25.0/6144.0; - restriction[3](5,15) = -25.0/9216.0; - restriction[3](5,16) = -65.0/3456.0; - restriction[3](5,17) = 65.0/384.0; - restriction[3](5,18) = -25.0/384.0; - restriction[3](5,19) = 25.0/3456.0; - restriction[3](5,20) = -65.0/2304.0; - restriction[3](5,21) = -25.0/256.0; - restriction[3](5,22) = 25.0/2304.0; - restriction[3](5,23) = 25.0/2304.0; - restriction[3](5,24) = 25.0/1536.0; - restriction[3](6,0) = -6875.0/10616832.0; - restriction[3](6,1) = 1375.0/10616832.0; - restriction[3](6,2) = 1375.0/10616832.0; - restriction[3](6,3) = -6875.0/10616832.0; - restriction[3](6,4) = 4225.0/1327104.0; - restriction[3](6,5) = -2375.0/884736.0; - restriction[3](6,6) = -7625.0/1327104.0; - restriction[3](6,7) = 715.0/1327104.0; - restriction[3](6,8) = -275.0/884736.0; - restriction[3](6,9) = -275.0/1327104.0; - restriction[3](6,10) = 4225.0/1327104.0; - restriction[3](6,11) = -2375.0/884736.0; - restriction[3](6,12) = -7625.0/1327104.0; - restriction[3](6,13) = -3575.0/1327104.0; - restriction[3](6,14) = 1375.0/884736.0; - restriction[3](6,15) = 1375.0/1327104.0; - restriction[3](6,16) = 2197.0/165888.0; - restriction[3](6,17) = -3965.0/165888.0; - restriction[3](6,18) = 1525.0/165888.0; - restriction[3](6,19) = -845.0/165888.0; - restriction[3](6,20) = -1235.0/110592.0; - restriction[3](6,21) = 1525.0/110592.0; - restriction[3](6,22) = 475.0/110592.0; - restriction[3](6,23) = -845.0/110592.0; - restriction[3](6,24) = 475.0/73728.0; - restriction[3](7,0) = 1375.0/10616832.0; - restriction[3](7,1) = 1375.0/10616832.0; - restriction[3](7,2) = -6875.0/10616832.0; - restriction[3](7,3) = -6875.0/10616832.0; - restriction[3](7,4) = -275.0/1327104.0; - restriction[3](7,5) = -275.0/884736.0; - restriction[3](7,6) = 715.0/1327104.0; - restriction[3](7,7) = -7625.0/1327104.0; - restriction[3](7,8) = -2375.0/884736.0; - restriction[3](7,9) = 4225.0/1327104.0; - restriction[3](7,10) = 1375.0/1327104.0; - restriction[3](7,11) = 1375.0/884736.0; - restriction[3](7,12) = -3575.0/1327104.0; - restriction[3](7,13) = -7625.0/1327104.0; - restriction[3](7,14) = -2375.0/884736.0; - restriction[3](7,15) = 4225.0/1327104.0; - restriction[3](7,16) = 1525.0/165888.0; - restriction[3](7,17) = -3965.0/165888.0; - restriction[3](7,18) = 2197.0/165888.0; - restriction[3](7,19) = -845.0/165888.0; - restriction[3](7,20) = 1525.0/110592.0; - restriction[3](7,21) = -1235.0/110592.0; - restriction[3](7,22) = -845.0/110592.0; - restriction[3](7,23) = 475.0/110592.0; - restriction[3](7,24) = 475.0/73728.0; - restriction[3](8,0) = 2725.0/221184.0; - restriction[3](8,1) = 2725.0/221184.0; - restriction[3](8,2) = 125.0/73728.0; - restriction[3](8,3) = 125.0/73728.0; - restriction[3](8,4) = -545.0/27648.0; - restriction[3](8,5) = -545.0/18432.0; - restriction[3](8,6) = 1417.0/27648.0; - restriction[3](8,7) = 125.0/3072.0; - restriction[3](8,8) = -125.0/18432.0; - restriction[3](8,9) = -125.0/27648.0; - restriction[3](8,10) = -25.0/9216.0; - restriction[3](8,11) = -25.0/6144.0; - restriction[3](8,12) = 65.0/9216.0; - restriction[3](8,13) = 125.0/3072.0; - restriction[3](8,14) = -125.0/18432.0; - restriction[3](8,15) = -125.0/27648.0; - restriction[3](8,16) = -25.0/384.0; - restriction[3](8,17) = 65.0/384.0; - restriction[3](8,18) = -65.0/3456.0; - restriction[3](8,19) = 25.0/3456.0; - restriction[3](8,20) = -25.0/256.0; - restriction[3](8,21) = -65.0/2304.0; - restriction[3](8,22) = 25.0/2304.0; - restriction[3](8,23) = 25.0/2304.0; - restriction[3](8,24) = 25.0/1536.0; - restriction[3](9,0) = 29375.0/10616832.0; - restriction[3](9,1) = 29375.0/10616832.0; - restriction[3](9,2) = -62875.0/10616832.0; - restriction[3](9,3) = -62875.0/10616832.0; - restriction[3](9,4) = -5875.0/1327104.0; - restriction[3](9,5) = -5875.0/884736.0; - restriction[3](9,6) = 15275.0/1327104.0; - restriction[3](9,7) = 32375.0/1327104.0; - restriction[3](9,8) = 40025.0/884736.0; - restriction[3](9,9) = 34625.0/1327104.0; - restriction[3](9,10) = 12575.0/1327104.0; - restriction[3](9,11) = 12575.0/884736.0; - restriction[3](9,12) = -32695.0/1327104.0; - restriction[3](9,13) = 32375.0/1327104.0; - restriction[3](9,14) = 40025.0/884736.0; - restriction[3](9,15) = 34625.0/1327104.0; - restriction[3](9,16) = -6475.0/165888.0; - restriction[3](9,17) = 16835.0/165888.0; - restriction[3](9,18) = 18005.0/165888.0; - restriction[3](9,19) = -6925.0/165888.0; - restriction[3](9,20) = -6475.0/110592.0; - restriction[3](9,21) = 20813.0/110592.0; - restriction[3](9,22) = -6925.0/110592.0; - restriction[3](9,23) = -8005.0/110592.0; - restriction[3](9,24) = -8005.0/73728.0; - restriction[3](10,0) = -12575.0/10616832.0; - restriction[3](10,1) = 5875.0/10616832.0; - restriction[3](10,2) = 245575.0/10616832.0; - restriction[3](10,3) = -525635.0/10616832.0; - restriction[3](10,4) = 6925.0/1327104.0; - restriction[3](10,5) = 8005.0/884736.0; - restriction[3](10,6) = 6475.0/1327104.0; - restriction[3](10,7) = 5875.0/1327104.0; - restriction[3](10,8) = -29375.0/884736.0; - restriction[3](10,9) = 41125.0/1327104.0; - restriction[3](10,10) = 289465.0/1327104.0; - restriction[3](10,11) = 334609.0/884736.0; - restriction[3](10,12) = 270655.0/1327104.0; - restriction[3](10,13) = -12575.0/1327104.0; - restriction[3](10,14) = 62875.0/884736.0; - restriction[3](10,15) = -88025.0/1327104.0; - restriction[3](10,16) = 6925.0/165888.0; - restriction[3](10,17) = 6475.0/165888.0; - restriction[3](10,18) = 45325.0/165888.0; - restriction[3](10,19) = 48475.0/165888.0; - restriction[3](10,20) = 8005.0/110592.0; - restriction[3](10,21) = -32375.0/110592.0; - restriction[3](10,22) = 56035.0/110592.0; - restriction[3](10,23) = -34625.0/110592.0; - restriction[3](10,24) = -40025.0/73728.0; - restriction[3](11,0) = 25.0/73728.0; - restriction[3](11,1) = 545.0/221184.0; - restriction[3](11,2) = 22781.0/221184.0; - restriction[3](11,3) = 1045.0/73728.0; - restriction[3](11,4) = -25.0/27648.0; - restriction[3](11,5) = -25.0/18432.0; - restriction[3](11,6) = 25.0/3072.0; - restriction[3](11,7) = 545.0/27648.0; - restriction[3](11,8) = -2725.0/18432.0; - restriction[3](11,9) = 3815.0/27648.0; - restriction[3](11,10) = -1045.0/27648.0; - restriction[3](11,11) = -1045.0/18432.0; - restriction[3](11,12) = 1045.0/3072.0; - restriction[3](11,13) = 25.0/9216.0; - restriction[3](11,14) = -125.0/6144.0; - restriction[3](11,15) = 175.0/9216.0; - restriction[3](11,16) = -25.0/3456.0; - restriction[3](11,17) = 25.0/384.0; - restriction[3](11,18) = 175.0/384.0; - restriction[3](11,19) = -175.0/3456.0; - restriction[3](11,20) = -25.0/2304.0; - restriction[3](11,21) = -125.0/256.0; - restriction[3](11,22) = -175.0/2304.0; - restriction[3](11,23) = 125.0/2304.0; - restriction[3](11,24) = 125.0/1536.0; - restriction[3](12,0) = -1375.0/10616832.0; - restriction[3](12,1) = 275.0/10616832.0; - restriction[3](12,2) = 11495.0/10616832.0; - restriction[3](12,3) = -57475.0/10616832.0; - restriction[3](12,4) = 845.0/1327104.0; - restriction[3](12,5) = -475.0/884736.0; - restriction[3](12,6) = -1525.0/1327104.0; - restriction[3](12,7) = 275.0/1327104.0; - restriction[3](12,8) = -1375.0/884736.0; - restriction[3](12,9) = 1925.0/1327104.0; - restriction[3](12,10) = 35321.0/1327104.0; - restriction[3](12,11) = -19855.0/884736.0; - restriction[3](12,12) = -63745.0/1327104.0; - restriction[3](12,13) = -1375.0/1327104.0; - restriction[3](12,14) = 6875.0/884736.0; - restriction[3](12,15) = -9625.0/1327104.0; - restriction[3](12,16) = 845.0/165888.0; - restriction[3](12,17) = -1525.0/165888.0; - restriction[3](12,18) = -10675.0/165888.0; - restriction[3](12,19) = 5915.0/165888.0; - restriction[3](12,20) = -475.0/110592.0; - restriction[3](12,21) = 7625.0/110592.0; - restriction[3](12,22) = -3325.0/110592.0; - restriction[3](12,23) = -4225.0/110592.0; - restriction[3](12,24) = 2375.0/73728.0; - restriction[3](13,0) = 11495.0/10616832.0; - restriction[3](13,1) = 275.0/10616832.0; - restriction[3](13,2) = -1375.0/10616832.0; - restriction[3](13,3) = -57475.0/10616832.0; - restriction[3](13,4) = 1925.0/1327104.0; - restriction[3](13,5) = -1375.0/884736.0; - restriction[3](13,6) = 275.0/1327104.0; - restriction[3](13,7) = -1525.0/1327104.0; - restriction[3](13,8) = -475.0/884736.0; - restriction[3](13,9) = 845.0/1327104.0; - restriction[3](13,10) = -9625.0/1327104.0; - restriction[3](13,11) = 6875.0/884736.0; - restriction[3](13,12) = -1375.0/1327104.0; - restriction[3](13,13) = -63745.0/1327104.0; - restriction[3](13,14) = -19855.0/884736.0; - restriction[3](13,15) = 35321.0/1327104.0; - restriction[3](13,16) = -10675.0/165888.0; - restriction[3](13,17) = -1525.0/165888.0; - restriction[3](13,18) = 845.0/165888.0; - restriction[3](13,19) = 5915.0/165888.0; - restriction[3](13,20) = 7625.0/110592.0; - restriction[3](13,21) = -475.0/110592.0; - restriction[3](13,22) = -4225.0/110592.0; - restriction[3](13,23) = -3325.0/110592.0; - restriction[3](13,24) = 2375.0/73728.0; - restriction[3](14,0) = 22781.0/221184.0; - restriction[3](14,1) = 545.0/221184.0; - restriction[3](14,2) = 25.0/73728.0; - restriction[3](14,3) = 1045.0/73728.0; - restriction[3](14,4) = 3815.0/27648.0; - restriction[3](14,5) = -2725.0/18432.0; - restriction[3](14,6) = 545.0/27648.0; - restriction[3](14,7) = 25.0/3072.0; - restriction[3](14,8) = -25.0/18432.0; - restriction[3](14,9) = -25.0/27648.0; - restriction[3](14,10) = 175.0/9216.0; - restriction[3](14,11) = -125.0/6144.0; - restriction[3](14,12) = 25.0/9216.0; - restriction[3](14,13) = 1045.0/3072.0; - restriction[3](14,14) = -1045.0/18432.0; - restriction[3](14,15) = -1045.0/27648.0; - restriction[3](14,16) = 175.0/384.0; - restriction[3](14,17) = 25.0/384.0; - restriction[3](14,18) = -25.0/3456.0; - restriction[3](14,19) = -175.0/3456.0; - restriction[3](14,20) = -125.0/256.0; - restriction[3](14,21) = -25.0/2304.0; - restriction[3](14,22) = 125.0/2304.0; - restriction[3](14,23) = -175.0/2304.0; - restriction[3](14,24) = 125.0/1536.0; - restriction[3](15,0) = 245575.0/10616832.0; - restriction[3](15,1) = 5875.0/10616832.0; - restriction[3](15,2) = -12575.0/10616832.0; - restriction[3](15,3) = -525635.0/10616832.0; - restriction[3](15,4) = 41125.0/1327104.0; - restriction[3](15,5) = -29375.0/884736.0; - restriction[3](15,6) = 5875.0/1327104.0; - restriction[3](15,7) = 6475.0/1327104.0; - restriction[3](15,8) = 8005.0/884736.0; - restriction[3](15,9) = 6925.0/1327104.0; - restriction[3](15,10) = -88025.0/1327104.0; - restriction[3](15,11) = 62875.0/884736.0; - restriction[3](15,12) = -12575.0/1327104.0; - restriction[3](15,13) = 270655.0/1327104.0; - restriction[3](15,14) = 334609.0/884736.0; - restriction[3](15,15) = 289465.0/1327104.0; - restriction[3](15,16) = 45325.0/165888.0; - restriction[3](15,17) = 6475.0/165888.0; - restriction[3](15,18) = 6925.0/165888.0; - restriction[3](15,19) = 48475.0/165888.0; - restriction[3](15,20) = -32375.0/110592.0; - restriction[3](15,21) = 8005.0/110592.0; - restriction[3](15,22) = -34625.0/110592.0; - restriction[3](15,23) = 56035.0/110592.0; - restriction[3](15,24) = -40025.0/73728.0; - restriction[3](16,0) = -138325.0/1358954496.0; - restriction[3](16,1) = 64625.0/1358954496.0; - restriction[3](16,2) = -323125.0/1358954496.0; - restriction[3](16,3) = 691625.0/1358954496.0; - restriction[3](16,4) = 76175.0/169869312.0; - restriction[3](16,5) = 88055.0/113246208.0; - restriction[3](16,6) = 71225.0/169869312.0; - restriction[3](16,7) = -358375.0/169869312.0; - restriction[3](16,8) = -111625.0/113246208.0; - restriction[3](16,9) = 198575.0/169869312.0; - restriction[3](16,10) = -380875.0/169869312.0; - restriction[3](16,11) = -440275.0/113246208.0; - restriction[3](16,12) = -356125.0/169869312.0; - restriction[3](16,13) = 767075.0/169869312.0; - restriction[3](16,14) = 238925.0/113246208.0; - restriction[3](16,15) = -425035.0/169869312.0; - restriction[3](16,16) = -422425.0/21233664.0; - restriction[3](16,17) = -394975.0/21233664.0; - restriction[3](16,18) = 218855.0/21233664.0; - restriction[3](16,19) = 234065.0/21233664.0; - restriction[3](16,20) = -488305.0/14155776.0; - restriction[3](16,21) = -123025.0/14155776.0; - restriction[3](16,22) = 270569.0/14155776.0; - restriction[3](16,23) = -131575.0/14155776.0; - restriction[3](16,24) = -152095.0/9437184.0; - restriction[3](17,0) = -15125.0/1358954496.0; - restriction[3](17,1) = 3025.0/1358954496.0; - restriction[3](17,2) = -15125.0/1358954496.0; - restriction[3](17,3) = 75625.0/1358954496.0; - restriction[3](17,4) = 9295.0/169869312.0; - restriction[3](17,5) = -5225.0/113246208.0; - restriction[3](17,6) = -16775.0/169869312.0; - restriction[3](17,7) = -16775.0/169869312.0; - restriction[3](17,8) = -5225.0/113246208.0; - restriction[3](17,9) = 9295.0/169869312.0; - restriction[3](17,10) = -46475.0/169869312.0; - restriction[3](17,11) = 26125.0/113246208.0; - restriction[3](17,12) = 83875.0/169869312.0; - restriction[3](17,13) = 83875.0/169869312.0; - restriction[3](17,14) = 26125.0/113246208.0; - restriction[3](17,15) = -46475.0/169869312.0; - restriction[3](17,16) = -51545.0/21233664.0; - restriction[3](17,17) = 93025.0/21233664.0; - restriction[3](17,18) = -51545.0/21233664.0; - restriction[3](17,19) = 28561.0/21233664.0; - restriction[3](17,20) = 28975.0/14155776.0; - restriction[3](17,21) = 28975.0/14155776.0; - restriction[3](17,22) = -16055.0/14155776.0; - restriction[3](17,23) = -16055.0/14155776.0; - restriction[3](17,24) = 9025.0/9437184.0; - restriction[3](18,0) = -323125.0/1358954496.0; - restriction[3](18,1) = 64625.0/1358954496.0; - restriction[3](18,2) = -138325.0/1358954496.0; - restriction[3](18,3) = 691625.0/1358954496.0; - restriction[3](18,4) = 198575.0/169869312.0; - restriction[3](18,5) = -111625.0/113246208.0; - restriction[3](18,6) = -358375.0/169869312.0; - restriction[3](18,7) = 71225.0/169869312.0; - restriction[3](18,8) = 88055.0/113246208.0; - restriction[3](18,9) = 76175.0/169869312.0; - restriction[3](18,10) = -425035.0/169869312.0; - restriction[3](18,11) = 238925.0/113246208.0; - restriction[3](18,12) = 767075.0/169869312.0; - restriction[3](18,13) = -356125.0/169869312.0; - restriction[3](18,14) = -440275.0/113246208.0; - restriction[3](18,15) = -380875.0/169869312.0; - restriction[3](18,16) = 218855.0/21233664.0; - restriction[3](18,17) = -394975.0/21233664.0; - restriction[3](18,18) = -422425.0/21233664.0; - restriction[3](18,19) = 234065.0/21233664.0; - restriction[3](18,20) = -123025.0/14155776.0; - restriction[3](18,21) = -488305.0/14155776.0; - restriction[3](18,22) = -131575.0/14155776.0; - restriction[3](18,23) = 270569.0/14155776.0; - restriction[3](18,24) = -152095.0/9437184.0; - restriction[3](19,0) = -2955125.0/1358954496.0; - restriction[3](19,1) = 1380625.0/1358954496.0; - restriction[3](19,2) = -2955125.0/1358954496.0; - restriction[3](19,3) = 6325225.0/1358954496.0; - restriction[3](19,4) = 1627375.0/169869312.0; - restriction[3](19,5) = 1881175.0/113246208.0; - restriction[3](19,6) = 1521625.0/169869312.0; - restriction[3](19,7) = 1521625.0/169869312.0; - restriction[3](19,8) = 1881175.0/113246208.0; - restriction[3](19,9) = 1627375.0/169869312.0; - restriction[3](19,10) = -3483275.0/169869312.0; - restriction[3](19,11) = -4026515.0/113246208.0; - restriction[3](19,12) = -3256925.0/169869312.0; - restriction[3](19,13) = -3256925.0/169869312.0; - restriction[3](19,14) = -4026515.0/113246208.0; - restriction[3](19,15) = -3483275.0/169869312.0; - restriction[3](19,16) = 1793575.0/21233664.0; - restriction[3](19,17) = 1677025.0/21233664.0; - restriction[3](19,18) = 1793575.0/21233664.0; - restriction[3](19,19) = 1918225.0/21233664.0; - restriction[3](19,20) = 2073295.0/14155776.0; - restriction[3](19,21) = 2073295.0/14155776.0; - restriction[3](19,22) = 2217385.0/14155776.0; - restriction[3](19,23) = 2217385.0/14155776.0; - restriction[3](19,24) = 2563201.0/9437184.0; - restriction[3](20,0) = 275.0/9437184.0; - restriction[3](20,1) = 5995.0/28311552.0; - restriction[3](20,2) = -29975.0/28311552.0; - restriction[3](20,3) = -1375.0/9437184.0; - restriction[3](20,4) = -275.0/3538944.0; - restriction[3](20,5) = -275.0/2359296.0; - restriction[3](20,6) = 275.0/393216.0; - restriction[3](20,7) = -33245.0/3538944.0; - restriction[3](20,8) = -10355.0/2359296.0; - restriction[3](20,9) = 18421.0/3538944.0; - restriction[3](20,10) = 1375.0/3538944.0; - restriction[3](20,11) = 1375.0/2359296.0; - restriction[3](20,12) = -1375.0/393216.0; - restriction[3](20,13) = -1525.0/1179648.0; - restriction[3](20,14) = -475.0/786432.0; - restriction[3](20,15) = 845.0/1179648.0; - restriction[3](20,16) = 1525.0/442368.0; - restriction[3](20,17) = -1525.0/49152.0; - restriction[3](20,18) = 845.0/49152.0; - restriction[3](20,19) = -845.0/442368.0; - restriction[3](20,20) = 1525.0/294912.0; - restriction[3](20,21) = -475.0/32768.0; - restriction[3](20,22) = -845.0/294912.0; - restriction[3](20,23) = 475.0/294912.0; - restriction[3](20,24) = 475.0/196608.0; - restriction[3](21,0) = -29975.0/28311552.0; - restriction[3](21,1) = 5995.0/28311552.0; - restriction[3](21,2) = 275.0/9437184.0; - restriction[3](21,3) = -1375.0/9437184.0; - restriction[3](21,4) = 18421.0/3538944.0; - restriction[3](21,5) = -10355.0/2359296.0; - restriction[3](21,6) = -33245.0/3538944.0; - restriction[3](21,7) = 275.0/393216.0; - restriction[3](21,8) = -275.0/2359296.0; - restriction[3](21,9) = -275.0/3538944.0; - restriction[3](21,10) = 845.0/1179648.0; - restriction[3](21,11) = -475.0/786432.0; - restriction[3](21,12) = -1525.0/1179648.0; - restriction[3](21,13) = -1375.0/393216.0; - restriction[3](21,14) = 1375.0/2359296.0; - restriction[3](21,15) = 1375.0/3538944.0; - restriction[3](21,16) = 845.0/49152.0; - restriction[3](21,17) = -1525.0/49152.0; - restriction[3](21,18) = 1525.0/442368.0; - restriction[3](21,19) = -845.0/442368.0; - restriction[3](21,20) = -475.0/32768.0; - restriction[3](21,21) = 1525.0/294912.0; - restriction[3](21,22) = 475.0/294912.0; - restriction[3](21,23) = -845.0/294912.0; - restriction[3](21,24) = 475.0/196608.0; - restriction[3](22,0) = 5875.0/9437184.0; - restriction[3](22,1) = 128075.0/28311552.0; - restriction[3](22,2) = -274135.0/28311552.0; - restriction[3](22,3) = -12575.0/9437184.0; - restriction[3](22,4) = -5875.0/3538944.0; - restriction[3](22,5) = -5875.0/2359296.0; - restriction[3](22,6) = 5875.0/393216.0; - restriction[3](22,7) = 141155.0/3538944.0; - restriction[3](22,8) = 174509.0/2359296.0; - restriction[3](22,9) = 150965.0/3538944.0; - restriction[3](22,10) = 12575.0/3538944.0; - restriction[3](22,11) = 12575.0/2359296.0; - restriction[3](22,12) = -12575.0/393216.0; - restriction[3](22,13) = 6475.0/1179648.0; - restriction[3](22,14) = 8005.0/786432.0; - restriction[3](22,15) = 6925.0/1179648.0; - restriction[3](22,16) = -6475.0/442368.0; - restriction[3](22,17) = 6475.0/49152.0; - restriction[3](22,18) = 6925.0/49152.0; - restriction[3](22,19) = -6925.0/442368.0; - restriction[3](22,20) = -6475.0/294912.0; - restriction[3](22,21) = 8005.0/32768.0; - restriction[3](22,22) = -6925.0/294912.0; - restriction[3](22,23) = -8005.0/294912.0; - restriction[3](22,24) = -8005.0/196608.0; - restriction[3](23,0) = -274135.0/28311552.0; - restriction[3](23,1) = 128075.0/28311552.0; - restriction[3](23,2) = 5875.0/9437184.0; - restriction[3](23,3) = -12575.0/9437184.0; - restriction[3](23,4) = 150965.0/3538944.0; - restriction[3](23,5) = 174509.0/2359296.0; - restriction[3](23,6) = 141155.0/3538944.0; - restriction[3](23,7) = 5875.0/393216.0; - restriction[3](23,8) = -5875.0/2359296.0; - restriction[3](23,9) = -5875.0/3538944.0; - restriction[3](23,10) = 6925.0/1179648.0; - restriction[3](23,11) = 8005.0/786432.0; - restriction[3](23,12) = 6475.0/1179648.0; - restriction[3](23,13) = -12575.0/393216.0; - restriction[3](23,14) = 12575.0/2359296.0; - restriction[3](23,15) = 12575.0/3538944.0; - restriction[3](23,16) = 6925.0/49152.0; - restriction[3](23,17) = 6475.0/49152.0; - restriction[3](23,18) = -6475.0/442368.0; - restriction[3](23,19) = -6925.0/442368.0; - restriction[3](23,20) = 8005.0/32768.0; - restriction[3](23,21) = -6475.0/294912.0; - restriction[3](23,22) = -8005.0/294912.0; - restriction[3](23,23) = -6925.0/294912.0; - restriction[3](23,24) = -8005.0/196608.0; - restriction[3](24,0) = 545.0/196608.0; - restriction[3](24,1) = 11881.0/589824.0; - restriction[3](24,2) = 545.0/196608.0; - restriction[3](24,3) = 25.0/65536.0; - restriction[3](24,4) = -545.0/73728.0; - restriction[3](24,5) = -545.0/49152.0; - restriction[3](24,6) = 545.0/8192.0; - restriction[3](24,7) = 545.0/8192.0; - restriction[3](24,8) = -545.0/49152.0; - restriction[3](24,9) = -545.0/73728.0; - restriction[3](24,10) = -25.0/24576.0; - restriction[3](24,11) = -25.0/16384.0; - restriction[3](24,12) = 75.0/8192.0; - restriction[3](24,13) = 75.0/8192.0; - restriction[3](24,14) = -25.0/16384.0; - restriction[3](24,15) = -25.0/24576.0; - restriction[3](24,16) = -25.0/1024.0; - restriction[3](24,17) = 225.0/1024.0; - restriction[3](24,18) = -25.0/1024.0; - restriction[3](24,19) = 25.0/9216.0; - restriction[3](24,20) = -75.0/2048.0; - restriction[3](24,21) = -75.0/2048.0; - restriction[3](24,22) = 25.0/6144.0; - restriction[3](24,23) = 25.0/6144.0; - restriction[3](24,24) = 25.0/4096.0; -#endif -}; - - -#endif - - -#if deal_II_dimension == 3 - - -template<> -FEDG_Q1<3>::FEDG_Q1(): - FEQ1<3>(1) -{ - // Overwrite the - // restriction matrices to change - // them from a point interpolation - // to a projection on the reference - // square. - for (unsigned int child=0; - child::children_per_cell; ++ child) - restriction[child].clear(); - - restriction[0](0,0) = 27.0/64.0; - restriction[0](0,1) = 9.0/32.0; - restriction[0](0,2) = 3.0/16.0; - restriction[0](0,3) = 9.0/32.0; - restriction[0](0,4) = 9.0/32.0; - restriction[0](0,5) = 3.0/16.0; - restriction[0](0,6) = 1.0/8.0; - restriction[0](0,7) = 3.0/16.0; - restriction[0](1,0) = -9.0/64.0; - restriction[0](1,3) = -3.0/32.0; - restriction[0](1,4) = -3.0/32.0; - restriction[0](1,7) = -1.0/16.0; - restriction[0](2,0) = 3.0/64.0; - restriction[0](2,4) = 1.0/32.0; - restriction[0](3,0) = -9.0/64.0; - restriction[0](3,1) = -3.0/32.0; - restriction[0](3,4) = -3.0/32.0; - restriction[0](3,5) = -1.0/16.0; - restriction[0](4,0) = -9.0/64.0; - restriction[0](4,1) = -3.0/32.0; - restriction[0](4,2) = -1.0/16.0; - restriction[0](4,3) = -3.0/32.0; - restriction[0](5,0) = 3.0/64.0; - restriction[0](5,3) = 1.0/32.0; - restriction[0](6,0) = -1.0/64.0; - restriction[0](7,0) = 3.0/64.0; - restriction[0](7,1) = 1.0/32.0; - restriction[1](0,1) = -9.0/64.0; - restriction[1](0,2) = -3.0/32.0; - restriction[1](0,5) = -3.0/32.0; - restriction[1](0,6) = -1.0/16.0; - restriction[1](1,0) = 9.0/32.0; - restriction[1](1,1) = 27.0/64.0; - restriction[1](1,2) = 9.0/32.0; - restriction[1](1,3) = 3.0/16.0; - restriction[1](1,4) = 3.0/16.0; - restriction[1](1,5) = 9.0/32.0; - restriction[1](1,6) = 3.0/16.0; - restriction[1](1,7) = 1.0/8.0; - restriction[1](2,0) = -3.0/32.0; - restriction[1](2,1) = -9.0/64.0; - restriction[1](2,4) = -1.0/16.0; - restriction[1](2,5) = -3.0/32.0; - restriction[1](3,1) = 3.0/64.0; - restriction[1](3,5) = 1.0/32.0; - restriction[1](4,1) = 3.0/64.0; - restriction[1](4,2) = 1.0/32.0; - restriction[1](5,0) = -3.0/32.0; - restriction[1](5,1) = -9.0/64.0; - restriction[1](5,2) = -3.0/32.0; - restriction[1](5,3) = -1.0/16.0; - restriction[1](6,0) = 1.0/32.0; - restriction[1](6,1) = 3.0/64.0; - restriction[1](7,1) = -1.0/64.0; - restriction[2](0,2) = 3.0/64.0; - restriction[2](0,6) = 1.0/32.0; - restriction[2](1,2) = -9.0/64.0; - restriction[2](1,3) = -3.0/32.0; - restriction[2](1,6) = -3.0/32.0; - restriction[2](1,7) = -1.0/16.0; - restriction[2](2,0) = 3.0/16.0; - restriction[2](2,1) = 9.0/32.0; - restriction[2](2,2) = 27.0/64.0; - restriction[2](2,3) = 9.0/32.0; - restriction[2](2,4) = 1.0/8.0; - restriction[2](2,5) = 3.0/16.0; - restriction[2](2,6) = 9.0/32.0; - restriction[2](2,7) = 3.0/16.0; - restriction[2](3,1) = -3.0/32.0; - restriction[2](3,2) = -9.0/64.0; - restriction[2](3,5) = -1.0/16.0; - restriction[2](3,6) = -3.0/32.0; - restriction[2](4,2) = -1.0/64.0; - restriction[2](5,2) = 3.0/64.0; - restriction[2](5,3) = 1.0/32.0; - restriction[2](6,0) = -1.0/16.0; - restriction[2](6,1) = -3.0/32.0; - restriction[2](6,2) = -9.0/64.0; - restriction[2](6,3) = -3.0/32.0; - restriction[2](7,1) = 1.0/32.0; - restriction[2](7,2) = 3.0/64.0; - restriction[3](0,2) = -3.0/32.0; - restriction[3](0,3) = -9.0/64.0; - restriction[3](0,6) = -1.0/16.0; - restriction[3](0,7) = -3.0/32.0; - restriction[3](1,3) = 3.0/64.0; - restriction[3](1,7) = 1.0/32.0; - restriction[3](2,0) = -3.0/32.0; - restriction[3](2,3) = -9.0/64.0; - restriction[3](2,4) = -1.0/16.0; - restriction[3](2,7) = -3.0/32.0; - restriction[3](3,0) = 9.0/32.0; - restriction[3](3,1) = 3.0/16.0; - restriction[3](3,2) = 9.0/32.0; - restriction[3](3,3) = 27.0/64.0; - restriction[3](3,4) = 3.0/16.0; - restriction[3](3,5) = 1.0/8.0; - restriction[3](3,6) = 3.0/16.0; - restriction[3](3,7) = 9.0/32.0; - restriction[3](4,2) = 1.0/32.0; - restriction[3](4,3) = 3.0/64.0; - restriction[3](5,3) = -1.0/64.0; - restriction[3](6,0) = 1.0/32.0; - restriction[3](6,3) = 3.0/64.0; - restriction[3](7,0) = -3.0/32.0; - restriction[3](7,1) = -1.0/16.0; - restriction[3](7,2) = -3.0/32.0; - restriction[3](7,3) = -9.0/64.0; - restriction[4](0,4) = -9.0/64.0; - restriction[4](0,5) = -3.0/32.0; - restriction[4](0,6) = -1.0/16.0; - restriction[4](0,7) = -3.0/32.0; - restriction[4](1,4) = 3.0/64.0; - restriction[4](1,7) = 1.0/32.0; - restriction[4](2,4) = -1.0/64.0; - restriction[4](3,4) = 3.0/64.0; - restriction[4](3,5) = 1.0/32.0; - restriction[4](4,0) = 9.0/32.0; - restriction[4](4,1) = 3.0/16.0; - restriction[4](4,2) = 1.0/8.0; - restriction[4](4,3) = 3.0/16.0; - restriction[4](4,4) = 27.0/64.0; - restriction[4](4,5) = 9.0/32.0; - restriction[4](4,6) = 3.0/16.0; - restriction[4](4,7) = 9.0/32.0; - restriction[4](5,0) = -3.0/32.0; - restriction[4](5,3) = -1.0/16.0; - restriction[4](5,4) = -9.0/64.0; - restriction[4](5,7) = -3.0/32.0; - restriction[4](6,0) = 1.0/32.0; - restriction[4](6,4) = 3.0/64.0; - restriction[4](7,0) = -3.0/32.0; - restriction[4](7,1) = -1.0/16.0; - restriction[4](7,4) = -9.0/64.0; - restriction[4](7,5) = -3.0/32.0; - restriction[5](0,5) = 3.0/64.0; - restriction[5](0,6) = 1.0/32.0; - restriction[5](1,4) = -3.0/32.0; - restriction[5](1,5) = -9.0/64.0; - restriction[5](1,6) = -3.0/32.0; - restriction[5](1,7) = -1.0/16.0; - restriction[5](2,4) = 1.0/32.0; - restriction[5](2,5) = 3.0/64.0; - restriction[5](3,5) = -1.0/64.0; - restriction[5](4,1) = -3.0/32.0; - restriction[5](4,2) = -1.0/16.0; - restriction[5](4,5) = -9.0/64.0; - restriction[5](4,6) = -3.0/32.0; - restriction[5](5,0) = 3.0/16.0; - restriction[5](5,1) = 9.0/32.0; - restriction[5](5,2) = 3.0/16.0; - restriction[5](5,3) = 1.0/8.0; - restriction[5](5,4) = 9.0/32.0; - restriction[5](5,5) = 27.0/64.0; - restriction[5](5,6) = 9.0/32.0; - restriction[5](5,7) = 3.0/16.0; - restriction[5](6,0) = -1.0/16.0; - restriction[5](6,1) = -3.0/32.0; - restriction[5](6,4) = -3.0/32.0; - restriction[5](6,5) = -9.0/64.0; - restriction[5](7,1) = 1.0/32.0; - restriction[5](7,5) = 3.0/64.0; - restriction[6](0,6) = -1.0/64.0; - restriction[6](1,6) = 3.0/64.0; - restriction[6](1,7) = 1.0/32.0; - restriction[6](2,4) = -1.0/16.0; - restriction[6](2,5) = -3.0/32.0; - restriction[6](2,6) = -9.0/64.0; - restriction[6](2,7) = -3.0/32.0; - restriction[6](3,5) = 1.0/32.0; - restriction[6](3,6) = 3.0/64.0; - restriction[6](4,2) = 1.0/32.0; - restriction[6](4,6) = 3.0/64.0; - restriction[6](5,2) = -3.0/32.0; - restriction[6](5,3) = -1.0/16.0; - restriction[6](5,6) = -9.0/64.0; - restriction[6](5,7) = -3.0/32.0; - restriction[6](6,0) = 1.0/8.0; - restriction[6](6,1) = 3.0/16.0; - restriction[6](6,2) = 9.0/32.0; - restriction[6](6,3) = 3.0/16.0; - restriction[6](6,4) = 3.0/16.0; - restriction[6](6,5) = 9.0/32.0; - restriction[6](6,6) = 27.0/64.0; - restriction[6](6,7) = 9.0/32.0; - restriction[6](7,1) = -1.0/16.0; - restriction[6](7,2) = -3.0/32.0; - restriction[6](7,5) = -3.0/32.0; - restriction[6](7,6) = -9.0/64.0; - restriction[7](0,6) = 1.0/32.0; - restriction[7](0,7) = 3.0/64.0; - restriction[7](1,7) = -1.0/64.0; - restriction[7](2,4) = 1.0/32.0; - restriction[7](2,7) = 3.0/64.0; - restriction[7](3,4) = -3.0/32.0; - restriction[7](3,5) = -1.0/16.0; - restriction[7](3,6) = -3.0/32.0; - restriction[7](3,7) = -9.0/64.0; - restriction[7](4,2) = -1.0/16.0; - restriction[7](4,3) = -3.0/32.0; - restriction[7](4,6) = -3.0/32.0; - restriction[7](4,7) = -9.0/64.0; - restriction[7](5,3) = 1.0/32.0; - restriction[7](5,7) = 3.0/64.0; - restriction[7](6,0) = -1.0/16.0; - restriction[7](6,3) = -3.0/32.0; - restriction[7](6,4) = -3.0/32.0; - restriction[7](6,7) = -9.0/64.0; - restriction[7](7,0) = 3.0/16.0; - restriction[7](7,1) = 1.0/8.0; - restriction[7](7,2) = 3.0/16.0; - restriction[7](7,3) = 9.0/32.0; - restriction[7](7,4) = 9.0/32.0; - restriction[7](7,5) = 3.0/16.0; - restriction[7](7,6) = 9.0/32.0; - restriction[7](7,7) = 27.0/64.0; -}; - - -template<> -FEDG_Q2<3>::FEDG_Q2(): - FEQ2<3>(1) -{ - Assert (false, ExcNotImplemented()); -}; - - -template<> -FEDG_Q3<3>::FEDG_Q3(): - FEQ3<3>(1) -{ - Assert (false, ExcNotImplemented()); -}; - - - -template<> -FEDG_Q4<3>::FEDG_Q4(): - FEQ4<3>(1) -{ - Assert (false, ExcNotImplemented()); -}; - - -#endif// deal_II_dimension == 3 - - - -template -void -FEDG_Q1::get_face_support_points (const typename DoFHandler::face_iterator &, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == 0), - FiniteElementBase::ExcWrongFieldDimension (support_points.size(),0)); -}; - - - -template -void -FEDG_Q2::get_face_support_points (const typename DoFHandler::face_iterator &, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == 0), - FiniteElementBase::ExcWrongFieldDimension (support_points.size(),0)); -}; - - - -template -void -FEDG_Q3::get_face_support_points (const typename DoFHandler::face_iterator &, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == 0), - FiniteElementBase::ExcWrongFieldDimension (support_points.size(),0)); -}; - - - -template -void -FEDG_Q4::get_face_support_points (const typename DoFHandler::face_iterator &, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == 0), - FiniteElementBase::ExcWrongFieldDimension (support_points.size(),0)); -}; - - -// explicit instantiations -template class FEDG_Q1; -template class FEDG_Q2; -template class FEDG_Q3; -template class FEDG_Q4; diff --git a/deal.II/deal.II/source/fe/fe_lib.dg.constant.cc b/deal.II/deal.II/source/fe/fe_lib.dg.constant.cc deleted file mode 100644 index dd2484abde..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.dg.constant.cc +++ /dev/null @@ -1,152 +0,0 @@ -//---------------------------- fe_lib.dg.constant.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.dg.constant.cc --------------------------- - - -#include -#include -#include -#include -#include -#include - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - - -template -FEDG_Q0::FEDG_Q0 () : - FEQ1Mapping (0, - (dim==1 ? 1 : 0), - (dim==2 ? 1 : 0), - (dim==3 ? 1 : 0), - 1, - std::vector (1, true)) -{ - for (unsigned int i=0; i::children_per_cell; ++i) - { - restriction[i](0,0) = 1./GeometryInfo::children_per_cell; - prolongation[i](0,0) = 1.0; - } -}; - - -#if deal_II_dimension == 1 - - -template <> -void -FEDG_Q0<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcInternalError()); -}; - -#endif - - - -template -inline -double -FEDG_Q0::shape_value (const unsigned int i, - const Point&) const -{ - Assert((i -inline -Tensor<1,dim> -FEDG_Q0::shape_grad (const unsigned int i, - const Point&) const -{ - Assert((i (); -}; - - - -template -inline -Tensor<2,dim> -FEDG_Q0::shape_grad_grad (const unsigned int i, - const Point &) const -{ - Assert((i(); -}; - - - -template -void FEDG_Q0::get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - local_mass_matrix(0,0) = cell->measure(); -}; - - - -template -void -FEDG_Q0::get_unit_support_points (typename std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell)); - for (unsigned int d=0; d -void -FEDG_Q0::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase::ExcWrongFieldDimension (support_points.size(), dofs_per_cell)); - - support_points[0] = cell->center(); -}; - - - -template -void -FEDG_Q0::get_face_support_points (const typename DoFHandler::face_iterator &, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == 0), - FiniteElementBase::ExcWrongFieldDimension (support_points.size(),0)); -}; - - -// explicit instantiations - -template class FEDG_Q0; diff --git a/deal.II/deal.II/source/fe/fe_lib.dgp1.cc b/deal.II/deal.II/source/fe/fe_lib.dgp1.cc deleted file mode 100644 index 3dc7209579..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.dgp1.cc +++ /dev/null @@ -1,398 +0,0 @@ -//---------------------------- $RCSFile$ --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- $RCSFile$ --------------------------- - - -#include -#include -#include -#include -#include -#include - - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - - -// declare explicit specializations before use: -template <> void FEDG_P1::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEDG_P1<1>::FEDG_P1 () : - FEQ1Mapping<1> (0, 2, 0, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P1<1>::initialize_matrices () -{ - // for restriction and prolongation matrices: - // note that we do not add up all the - // contributions since then we would get - // two summands per vertex in 1d (four - // in 2d, etc), but only one per line dof. - // We could accomplish for that by dividing - // the vertex dof values by 2 (4, etc), but - // would get into trouble at the boundary - // of the domain since there only one - // cell contributes to a vertex. Rather, - // we do not add up the contributions but - // set them right into the matrices! - restriction[0](0,0) = 1.0; - restriction[1](1,1) = 1.0; - - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = 1./2.; - prolongation[0](1,1) = 1./2.; - - prolongation[1](0,0) = 1./2.; - prolongation[1](0,1) = 1./2.; - prolongation[1](1,1) = 1.0; -}; - - -template <> -double -FEDG_P1<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -inline -Tensor<1,1> -FEDG_P1<1>::shape_grad(const unsigned int i, - const Point<1>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-1.); - case 1: return Point<1>(1.); - } - return Point<1>(); -}; - - -template <> -inline -Tensor<2,1> -FEDG_P1<1>::shape_grad_grad (const unsigned int i, - const Point<1> &) const -{ - Assert((i(); -}; - - -template <> -void FEDG_P1<1>::get_unit_support_points (std::vector > &support_points) const -{ - FiniteElement<1>::get_unit_support_points (support_points); -}; - - -template <> -void FEDG_P1<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const -{ - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEDG_P1<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcInternalError()); -}; - - -template <> -void FEDG_P1<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double h = cell->vertex(1)(0) - cell->vertex(0)(0); - Assert (h>0, ExcJacobiDeterminantHasWrongSign()); - - local_mass_matrix(0,0) = local_mass_matrix(1,1) = 1./3.*h; - local_mass_matrix(0,1) = local_mass_matrix(1,0) = 1./6.*h; -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEDG_P1<2>::FEDG_P1 () : - FEQ1Mapping<2> (0, 0, 3, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P1<2>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P1<2>::shape_value (const unsigned int i, - const Point<2>& p) const -{ - Assert((i -inline -Tensor<1,2> -FEDG_P1<2>::shape_grad (const unsigned int i, - const Point<2>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2> (0,0); - case 1: return Point<2> (1,0); - case 2: return Point<2> (0,1); - } - return Point<2> (); -}; - - -template <> -inline -Tensor<2,2> -FEDG_P1<2>::shape_grad_grad (const unsigned int i, - const Point<2> &) const -{ - Assert((i(); -}; - - -template <> -void FEDG_P1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert(false, ExcNotImplemented ()); - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); -}; - - -template <> -void FEDG_P1<2>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2> (.5,.5); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (0,1); -}; - - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEDG_P1<3>::FEDG_P1 () : - FEQ1Mapping<3> (0, 0, 0, 4, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P1<3>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P1<3>::shape_value (const unsigned int i, - const Point<3>& p) const -{ - Assert((i -inline -Tensor<1,3> -FEDG_P1<3>::shape_grad (const unsigned int i, - const Point<3>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(0,0,0); - case 1: return Point<3>(1,0,0); - case 2: return Point<3>(0,1,0); - case 3: return Point<3>(0,0,1); - } - return Point<3> (); -}; - - -template <> -inline -Tensor<2,3> -FEDG_P1<3>::shape_grad_grad (const unsigned int i, - const Point<3> &) const -{ - Assert((i return_value; - return return_value; -}; - - -template <> -void FEDG_P1<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - -template <> -void FEDG_P1<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<3> (.5,.5,.5); - unit_points[1] = Point<3> (1,0,0); - unit_points[2] = Point<3> (0,1,0); - unit_points[3] = Point<3> (0,0,1); -}; - - -#endif - - -template -void -FEDG_P1::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - support_points[vertex] = cell->vertex(vertex); -}; - - -template -void -FEDG_P1::get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == dofs_per_face) && - (support_points.size() == GeometryInfo::vertices_per_face), - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - GeometryInfo::vertices_per_face)); - - for (unsigned int vertex=0; vertexvertex(vertex); -}; - - -// explicit instantiations - -template class FEDG_P1; diff --git a/deal.II/deal.II/source/fe/fe_lib.dgp2.cc b/deal.II/deal.II/source/fe/fe_lib.dgp2.cc deleted file mode 100644 index 0a88bb02d2..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.dgp2.cc +++ /dev/null @@ -1,380 +0,0 @@ -//---------------------------- $RCSFile$ --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- $RCSFile$ --------------------------- - - -#include -#include -#include -#include -#include -#include - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - - -// declare explicit specializations before use: -template <> void FEDG_P2::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEDG_P2<1>::FEDG_P2 () : - FEQ1Mapping<1> (0, 3, 0, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P2<1>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -double -FEDG_P2<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -inline -Tensor<1,1> -FEDG_P2<1>::shape_grad(const unsigned int i, - const Point<1>&p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-1.); - case 1: return Point<1>(1.); - case 2: return Point<1>(2.*p(0)); - - } - return Point<1>(); -}; - - -template <> -inline -Tensor<2,1> -FEDG_P2<1>::shape_grad_grad (const unsigned int i, - const Point<1> &) const -{ - Assert(false, ExcNotImplemented()); - Assert((i(); -}; - - -template <> -void FEDG_P2<1>::get_unit_support_points (std::vector > &support_points) const -{ - FiniteElement<1>::get_unit_support_points (support_points); -}; - - -template <> -void FEDG_P2<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const -{ - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEDG_P2<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcInternalError()); -}; - - -template <> -void FEDG_P2<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert(false, ExcNotImplemented()); - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEDG_P2<2>::FEDG_P2 () : - FEQ1Mapping<2> (0, 0, 6, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P2<2>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P2<2>::shape_value (const unsigned int i, - const Point<2>& p) const -{ - Assert((i -inline -Tensor<1,2> -FEDG_P2<2>::shape_grad (const unsigned int i, - const Point<2>& p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2> (0,0); - case 1: return Point<2> (1,0); - case 2: return Point<2> (0,1); - case 3: return Point<2> (2*p(0),0); - case 4: return Point<2> (p(1),p(0)); - case 5: return Point<2> (0,2*p(1)); - } - return Point<2> (); -}; - - -template <> -inline -Tensor<2,2> -FEDG_P2<2>::shape_grad_grad (const unsigned int i, - const Point<2> &) const -{ - Assert(false, ExcNotImplemented()); - Assert((i(); -}; - - -template <> -void FEDG_P2<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &, - FullMatrix &) const -{ - Assert(false, ExcNotImplemented ()); -}; - - -template <> -void FEDG_P2<2>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2> (.5,.5); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (0,1); - unit_points[3] = Point<2> (1,0); - unit_points[4] = Point<2> (0,1); - unit_points[5] = Point<2> (1,1); -}; - - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEDG_P2<3>::FEDG_P2 () : - FEQ1Mapping<3> (0, 0, 0, 4, 1, - std::vector (1, true)) -{ - Assert(false, ExcNotImplemented ()); -// initialize_matrices (); -}; - - -template <> -void FEDG_P2<3>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P2<3>::shape_value (const unsigned int i, - const Point<3>& p) const -{ - Assert((i -inline -Tensor<1,3> -FEDG_P2<3>::shape_grad (const unsigned int i, - const Point<3>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(0,0,0); - case 1: return Point<3>(1,0,0); - case 2: return Point<3>(0,1,0); - case 3: return Point<3>(0,0,1); - } - return Point<3> (); -}; - - -template <> -inline -Tensor<2,3> -FEDG_P2<3>::shape_grad_grad (const unsigned int i, - const Point<3> &) const -{ - Assert((i return_value; - return return_value; -}; - - - -template <> -void FEDG_P2<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - - -template <> -void FEDG_P2<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<3> (.5,.5,.5); - unit_points[1] = Point<3> (1,0,0); - unit_points[2] = Point<3> (0,1,0); - unit_points[3] = Point<3> (0,0,1); -}; - - -#endif - - -template -void -FEDG_P2::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - support_points[vertex] = cell->vertex(vertex); -}; - - -template -void -FEDG_P2::get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == dofs_per_face) && - (support_points.size() == GeometryInfo::vertices_per_face), - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - GeometryInfo::vertices_per_face)); - - for (unsigned int vertex=0; vertexvertex(vertex); -}; - - -// explicit instantiations - -template class FEDG_P2; diff --git a/deal.II/deal.II/source/fe/fe_lib.dgp3.cc b/deal.II/deal.II/source/fe/fe_lib.dgp3.cc deleted file mode 100644 index ba31d9a3e0..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.dgp3.cc +++ /dev/null @@ -1,389 +0,0 @@ -//---------------------------- $RCSFile$ --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- $RCSFile$ --------------------------- - - -#include -#include -#include -#include -#include -#include - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - -// declare explicit specializations before use: -template <> void FEDG_P3::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEDG_P3<1>::FEDG_P3 () : - FEQ1Mapping<1> (0, 4, 0, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P3<1>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -double -FEDG_P3<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -inline -Tensor<1,1> -FEDG_P3<1>::shape_grad(const unsigned int i, - const Point<1>&p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-1.); - case 1: return Point<1>(1.); - case 2: return Point<1>(2.*p(0)); - case 3: return Point<1>(3.*p(0)*p(0)); - - } - return Point<1>(); -}; - - -template <> -inline -Tensor<2,1> -FEDG_P3<1>::shape_grad_grad (const unsigned int i, - const Point<1> &) const -{ - Assert(false, ExcNotImplemented()); - Assert((i(); -}; - - -template <> -void FEDG_P3<1>::get_unit_support_points (std::vector > &support_points) const -{ - FiniteElement<1>::get_unit_support_points (support_points); -}; - - -template <> -void FEDG_P3<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const -{ - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEDG_P3<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcInternalError()); -}; - - -template <> -void FEDG_P3<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &/*cell*/, - FullMatrix &local_mass_matrix) const -{ - Assert(false, ExcNotImplemented()); - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEDG_P3<2>::FEDG_P3 () : - FEQ1Mapping<2> (0, 0, 10, 0, 1, - std::vector (1, true)) -{ -// initialize_matrices (); -}; - - -template <> -void FEDG_P3<2>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P3<2>::shape_value (const unsigned int i, - const Point<2>& p) const -{ - Assert((i -inline -Tensor<1,2> -FEDG_P3<2>::shape_grad (const unsigned int i, - const Point<2>& p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2> (0,0); - case 1: return Point<2> (1,0); - case 2: return Point<2> (0,1); - case 3: return Point<2> (2*p(0),0); - case 4: return Point<2> (p(1),p(0)); - case 5: return Point<2> (0,2*p(1)); - case 6: return Point<2> (3*p(0)*p(0), 0); - case 7: return Point<2> (2*p(0)*p(1), p(0)*p(0)); - case 8: return Point<2> (p(1)*p(1), 2*p(0)*p(1)); - case 9: return Point<2> (0, 3*p(1)*p(1)); - } - return Point<2> (); -}; - - -template <> -inline -Tensor<2,2> -FEDG_P3<2>::shape_grad_grad (const unsigned int i, - const Point<2> &) const -{ - Assert(false, ExcNotImplemented()); - Assert((i(); -}; - - -template <> -void FEDG_P3<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &, - FullMatrix &) const -{ - Assert(false, ExcNotImplemented ()); -}; - - -template <> -void FEDG_P3<2>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert(false, ExcNotImplemented ()); - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2> (.5,.5); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (0,1); - unit_points[3] = Point<2> (1,0); - unit_points[4] = Point<2> (0,1); - unit_points[5] = Point<2> (1,1); -}; - - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEDG_P3<3>::FEDG_P3 () : - FEQ1Mapping<3> (0, 0, 0, 4, 1, - std::vector (1, true)) -{ - Assert(false, ExcNotImplemented ()); -// initialize_matrices (); -}; - - -template <> -void FEDG_P3<3>::initialize_matrices () -{ - Assert(false, ExcNotImplemented()); -}; - - -template <> -inline -double -FEDG_P3<3>::shape_value (const unsigned int i, - const Point<3>& p) const -{ - Assert((i -inline -Tensor<1,3> -FEDG_P3<3>::shape_grad (const unsigned int i, - const Point<3>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(0,0,0); - case 1: return Point<3>(1,0,0); - case 2: return Point<3>(0,1,0); - case 3: return Point<3>(0,0,1); - } - return Point<3> (); -}; - - -template <> -inline -Tensor<2,3> -FEDG_P3<3>::shape_grad_grad (const unsigned int i, - const Point<3> &) const -{ - Assert((i return_value; - return return_value; -}; - - -template <> -void FEDG_P3<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - - -template <> -void FEDG_P3<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<3> (.5,.5,.5); - unit_points[1] = Point<3> (1,0,0); - unit_points[2] = Point<3> (0,1,0); - unit_points[3] = Point<3> (0,0,1); -}; - - -#endif - - -template -void -FEDG_P3::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - support_points[vertex] = cell->vertex(vertex); -}; - - -template -void -FEDG_P3::get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const -{ - Assert ((support_points.size() == dofs_per_face) && - (support_points.size() == GeometryInfo::vertices_per_face), - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - GeometryInfo::vertices_per_face)); - - for (unsigned int vertex=0; vertexvertex(vertex); -}; - - -// explicit instantiations - -template class FEDG_P3; diff --git a/deal.II/deal.II/source/fe/fe_lib.linear.cc b/deal.II/deal.II/source/fe/fe_lib.linear.cc deleted file mode 100644 index fe33af27b1..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.linear.cc +++ /dev/null @@ -1,912 +0,0 @@ -//---------------------------- fe_lib.linear.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.linear.cc --------------------------- - - -#include -#include -#include -#include -#include -#include - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - - -// declare explicit specializations before use: -template <> void FEQ1::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEQ1<1>::FEQ1 () : - FEQ1Mapping<1> (1, 0, 0, 0, 1, - std::vector (1, false)) -{ - initialize_matrices (); -}; - - -template <> -FEQ1<1>::FEQ1 (const int) : - FEQ1Mapping<1> (0, 2, 0, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ1<1>::initialize_matrices () -{ - // for restriction and prolongation matrices: - // note that we do not add up all the - // contributions since then we would get - // two summands per vertex in 1d (four - // in 2d, etc), but only one per line dof. - // We could accomplish for that by dividing - // the vertex dof values by 2 (4, etc), but - // would get into trouble at the boundary - // of the domain since there only one - // cell contributes to a vertex. Rather, - // we do not add up the contributions but - // set them right into the matrices! - restriction[0](0,0) = 1.0; - restriction[1](1,1) = 1.0; - - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = 1./2.; - prolongation[0](1,1) = 1./2.; - - prolongation[1](0,0) = 1./2.; - prolongation[1](0,1) = 1./2.; - prolongation[1](1,1) = 1.0; -}; - - -template <> -double -FEQ1<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -inline -Tensor<1,1> -FEQ1<1>::shape_grad(const unsigned int i, - const Point<1>&) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-1.); - case 1: return Point<1>(1.); - } - return Point<1>(); -}; - - -template <> -inline -Tensor<2,1> -FEQ1<1>::shape_grad_grad (const unsigned int i, - const Point<1> &) const -{ - Assert((i(); -}; - - -template <> -void FEQ1<1>::get_unit_support_points (std::vector > &support_points) const { - FiniteElement<1>::get_unit_support_points (support_points); -}; - - -template <> -void FEQ1<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const { - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEQ1<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ1<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double h = cell->vertex(1)(0) - cell->vertex(0)(0); - Assert (h>0, ExcJacobiDeterminantHasWrongSign()); - - local_mass_matrix(0,0) = local_mass_matrix(1,1) = 1./3.*h; - local_mass_matrix(0,1) = local_mass_matrix(1,0) = 1./6.*h; -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEQ1<2>::FEQ1 () : - FEQ1Mapping<2> (1, 0, 0, 0, 1, - std::vector (1, false)) -{ - interface_constraints(0,0) = 1./2.; - interface_constraints(0,1) = 1./2.; - - initialize_matrices (); -}; - - -template <> -FEQ1<2>::FEQ1 (const int) : - FEQ1Mapping<2> (0, 0, 4, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ1<2>::initialize_matrices () -{ - restriction[0](0,0) = 1.0; - restriction[1](1,1) = 1.0; - restriction[2](2,2) = 1.0; - restriction[3](3,3) = 1.0; - - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = 1./2.; - prolongation[0](1,1) = 1./2.; - prolongation[0](3,0) = 1./2.; - prolongation[0](3,3) = 1./2.; - prolongation[0](2,0) = 1./4.; - prolongation[0](2,1) = 1./4.; - prolongation[0](2,2) = 1./4.; - prolongation[0](2,3) = 1./4.; - - prolongation[1](1,1) = 1.0; - prolongation[1](0,0) = 1./2.; - prolongation[1](0,1) = 1./2.; - prolongation[1](2,1) = 1./2.; - prolongation[1](2,2) = 1./2.; - prolongation[1](3,0) = 1./4.; - prolongation[1](3,1) = 1./4.; - prolongation[1](3,2) = 1./4.; - prolongation[1](3,3) = 1./4.; - - prolongation[2](2,2) = 1.0; - prolongation[2](1,2) = 1./2.; - prolongation[2](1,1) = 1./2.; - prolongation[2](3,2) = 1./2.; - prolongation[2](3,3) = 1./2.; - prolongation[2](0,0) = 1./4.; - prolongation[2](0,1) = 1./4.; - prolongation[2](0,2) = 1./4.; - prolongation[2](0,3) = 1./4.; - - prolongation[3](3,3) = 1.0; - prolongation[3](0,0) = 1./2.; - prolongation[3](0,3) = 1./2.; - prolongation[3](2,2) = 1./2.; - prolongation[3](2,3) = 1./2.; - prolongation[3](1,0) = 1./4.; - prolongation[3](1,1) = 1./4.; - prolongation[3](1,2) = 1./4.; - prolongation[3](1,3) = 1./4.; -}; - - -template <> -inline -double -FEQ1<2>::shape_value (const unsigned int i, - const Point<2>& p) const -{ - Assert((i -inline -Tensor<1,2> -FEQ1<2>::shape_grad (const unsigned int i, - const Point<2>& p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2> (p(1)-1., p(0)-1.); - case 1: return Point<2> (1.-p(1), -p(0)); - case 2: return Point<2> (p(1), p(0)); - case 3: return Point<2> (-p(1), 1.-p(0)); - } - return Point<2> (); -}; - - -template <> -inline -Tensor<2,2> -FEQ1<2>::shape_grad_grad (const unsigned int i, - const Point<2> &) const -{ - Assert((i(initializer); - }; - - case 1: - case 3: - { - const double initializer[2][2] = {{0, -1},{-1,0}}; - return Tensor<2,2>(initializer); - }; - }; - - return Tensor<2,2>(); -}; - - -template <> -void FEQ1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - -/* Get the computation of the local mass matrix by these lines in maple: - - x_real := sum(x[i]*phi[i], i=0..3); - y_real := sum(y[i]*phi[i], i=0..3); - phi[0] := (1-xi)*(1-eta); - phi[1] := xi*(1-eta); - phi[2] := xi*eta; - phi[3] := (1-xi)*eta; - detJ := diff(x_real,xi)*diff(y_real,eta) - diff(x_real,eta)*diff(y_real,xi); - - m := proc (i,j) int( int(phi[i]*phi[j]*detJ, xi=0..1), eta=0..1); end; - - M := array(0..3,0..3); - for i from 0 to 3 do - for j from 0 to 3 do - M[i,j] := m(i,j); - od; - od; - - readlib(C); - C(M, optimized); -*/ - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - -/* check that the Jacobi determinant - - t0 = (-x[0]*(1.0-eta)+x[1]*(1.0-eta)+x[2]*eta-x[3]*eta) * - (-y[0]*(1.0-xi)-y[1]*xi+y[2]*xi+y[3]*(1.0-xi)) - - (-x[0]*(1.0-xi)-x[1]*xi+x[2]*xi+x[3]*(1.0-xi)) * - (-y[0]*(1.0-eta)+y[1]*(1.0-eta)+y[2]*eta-y[3]*eta) - - has the right sign. - - We do not attempt to check its (hopefully) positive sign at all points - on the unit cell, but we check that it is positive in the four corners, - which is sufficient since $det J$ is a bilinear function. -*/ - Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]), // xi=eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]), // xi=0, eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]), // xi=eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]), // xi=1, eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - - const double t1 = x[1]*y[3], - t2 = x[1]*y[2], - t3 = x[1]*y[0], - t4 = x[0]*y[3], - t5 = x[0]*y[1], - t6 = x[2]*y[3], - t7 = x[3]*y[0], - t8 = x[2]*y[1], - t9 = x[3]*y[2], - t10 = x[3]*y[1], - t12 = x[0]*y[2], - t13 = x[2]*y[0], - t14 = t1/72+t2/36-t3/24-t4/36-t12/72+t5/24+t6/72 - +t7/36-t8/36-t9/72-t10/72+t13/72, - t15 = t2/72-t3/72-t4/72+t5/72+t6/72+t7/72-t8/72-t9/72, - t16 = t1/72+t2/72-t3/36-t4/24+t12/72+t5/36+t6/36 - +t7/24-t8/72-t9/36-t10/72-t13/72, - t18 = -t1/72+t2/24-t3/36-t4/72-t12/72+t5/36+t6/36 - +t7/72-t8/24-t9/36+t10/72+t13/72, - t20 = -t1/72+t12/72+t2/36+t5/72-t3/72+t6/24 - -t9/24-t13/72+t10/72-t4/36+t7/36-t8/36; - local_mass_matrix(0,0) = t1/18+t2/36-t3/12-t4/12+t5/12+t6/36+t7/12-t8/36-t9/36-t10/18; - local_mass_matrix(0,1) = t14; - local_mass_matrix(0,2) = t15; - local_mass_matrix(0,3) = t16; - local_mass_matrix(1,0) = t14; - local_mass_matrix(1,1) = t2/12-t3/12-t4/36-t12/18+t5/12+t6/36+ - t7/36-t8/12-t9/36+t13/18; - local_mass_matrix(1,2) = t18; - local_mass_matrix(1,3) = t15; - local_mass_matrix(2,0) = t15; - local_mass_matrix(2,1) = t18; - local_mass_matrix(2,2) = -t1/18+t2/12+t5/36-t3/36+t6/12-t9/12+ - t10/18-t4/36+t7/36-t8/12; - local_mass_matrix(2,3) = t20; - local_mass_matrix(3,0) = t16; - local_mass_matrix(3,1) = t15; - local_mass_matrix(3,2) = t20; - local_mass_matrix(3,3) = t12/18+t2/36+t5/36-t3/36+t6/12-t9/12- - t13/18-t4/12+t7/12-t8/36; -}; - - -template <> -void FEQ1<2>::get_unit_support_points (std::vector > &unit_points) const { - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2> (0,0); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (1,1); - unit_points[3] = Point<2> (0,1); -}; - - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEQ1<3>::FEQ1 () : - FEQ1Mapping<3> (1, 0, 0, 0, 1, - std::vector (1, false)) -{ - interface_constraints(0,0) = 1.0/4.0; - interface_constraints(0,1) = 1.0/4.0; - interface_constraints(0,2) = 1.0/4.0; - interface_constraints(0,3) = 1.0/4.0; - interface_constraints(1,0) = 1.0/2.0; - interface_constraints(1,1) = 1.0/2.0; - interface_constraints(2,1) = 1.0/2.0; - interface_constraints(2,2) = 1.0/2.0; - interface_constraints(3,2) = 1.0/2.0; - interface_constraints(3,3) = 1.0/2.0; - interface_constraints(4,0) = 1.0/2.0; - interface_constraints(4,3) = 1.0/2.0; - - initialize_matrices (); -}; - - -template <> -FEQ1<3>::FEQ1 (const int) : - FEQ1Mapping<3> (0, 0, 0, 8, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ1<3>::initialize_matrices () -{ - restriction[0](0,0) = 1.0; - restriction[1](1,1) = 1.0; - restriction[2](2,2) = 1.0; - restriction[3](3,3) = 1.0; - restriction[4](4,4) = 1.0; - restriction[5](5,5) = 1.0; - restriction[6](6,6) = 1.0; - restriction[7](7,7) = 1.0; - - prolongation[0](0,0) = 1.0; - prolongation[0](1,0) = 1.0/2.0; - prolongation[0](1,1) = 1.0/2.0; - prolongation[0](2,0) = 1.0/4.0; - prolongation[0](2,1) = 1.0/4.0; - prolongation[0](2,2) = 1.0/4.0; - prolongation[0](2,3) = 1.0/4.0; - prolongation[0](3,0) = 1.0/2.0; - prolongation[0](3,3) = 1.0/2.0; - prolongation[0](4,0) = 1.0/2.0; - prolongation[0](4,4) = 1.0/2.0; - prolongation[0](5,0) = 1.0/4.0; - prolongation[0](5,1) = 1.0/4.0; - prolongation[0](5,4) = 1.0/4.0; - prolongation[0](5,5) = 1.0/4.0; - prolongation[0](6,0) = 1.0/8.0; - prolongation[0](6,1) = 1.0/8.0; - prolongation[0](6,2) = 1.0/8.0; - prolongation[0](6,3) = 1.0/8.0; - prolongation[0](6,4) = 1.0/8.0; - prolongation[0](6,5) = 1.0/8.0; - prolongation[0](6,6) = 1.0/8.0; - prolongation[0](6,7) = 1.0/8.0; - prolongation[0](7,0) = 1.0/4.0; - prolongation[0](7,3) = 1.0/4.0; - prolongation[0](7,4) = 1.0/4.0; - prolongation[0](7,7) = 1.0/4.0; - prolongation[1](0,0) = 1.0/2.0; - prolongation[1](0,1) = 1.0/2.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,1) = 1.0/2.0; - prolongation[1](2,2) = 1.0/2.0; - prolongation[1](3,0) = 1.0/4.0; - prolongation[1](3,1) = 1.0/4.0; - prolongation[1](3,2) = 1.0/4.0; - prolongation[1](3,3) = 1.0/4.0; - prolongation[1](4,0) = 1.0/4.0; - prolongation[1](4,1) = 1.0/4.0; - prolongation[1](4,4) = 1.0/4.0; - prolongation[1](4,5) = 1.0/4.0; - prolongation[1](5,1) = 1.0/2.0; - prolongation[1](5,5) = 1.0/2.0; - prolongation[1](6,1) = 1.0/4.0; - prolongation[1](6,2) = 1.0/4.0; - prolongation[1](6,5) = 1.0/4.0; - prolongation[1](6,6) = 1.0/4.0; - prolongation[1](7,0) = 1.0/8.0; - prolongation[1](7,1) = 1.0/8.0; - prolongation[1](7,2) = 1.0/8.0; - prolongation[1](7,3) = 1.0/8.0; - prolongation[1](7,4) = 1.0/8.0; - prolongation[1](7,5) = 1.0/8.0; - prolongation[1](7,6) = 1.0/8.0; - prolongation[1](7,7) = 1.0/8.0; - prolongation[2](0,0) = 1.0/4.0; - prolongation[2](0,1) = 1.0/4.0; - prolongation[2](0,2) = 1.0/4.0; - prolongation[2](0,3) = 1.0/4.0; - prolongation[2](1,1) = 1.0/2.0; - prolongation[2](1,2) = 1.0/2.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,2) = 1.0/2.0; - prolongation[2](3,3) = 1.0/2.0; - prolongation[2](4,0) = 1.0/8.0; - prolongation[2](4,1) = 1.0/8.0; - prolongation[2](4,2) = 1.0/8.0; - prolongation[2](4,3) = 1.0/8.0; - prolongation[2](4,4) = 1.0/8.0; - prolongation[2](4,5) = 1.0/8.0; - prolongation[2](4,6) = 1.0/8.0; - prolongation[2](4,7) = 1.0/8.0; - prolongation[2](5,1) = 1.0/4.0; - prolongation[2](5,2) = 1.0/4.0; - prolongation[2](5,5) = 1.0/4.0; - prolongation[2](5,6) = 1.0/4.0; - prolongation[2](6,2) = 1.0/2.0; - prolongation[2](6,6) = 1.0/2.0; - prolongation[2](7,2) = 1.0/4.0; - prolongation[2](7,3) = 1.0/4.0; - prolongation[2](7,6) = 1.0/4.0; - prolongation[2](7,7) = 1.0/4.0; - prolongation[3](0,0) = 1.0/2.0; - prolongation[3](0,3) = 1.0/2.0; - prolongation[3](1,0) = 1.0/4.0; - prolongation[3](1,1) = 1.0/4.0; - prolongation[3](1,2) = 1.0/4.0; - prolongation[3](1,3) = 1.0/4.0; - prolongation[3](2,2) = 1.0/2.0; - prolongation[3](2,3) = 1.0/2.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,0) = 1.0/4.0; - prolongation[3](4,3) = 1.0/4.0; - prolongation[3](4,4) = 1.0/4.0; - prolongation[3](4,7) = 1.0/4.0; - prolongation[3](5,0) = 1.0/8.0; - prolongation[3](5,1) = 1.0/8.0; - prolongation[3](5,2) = 1.0/8.0; - prolongation[3](5,3) = 1.0/8.0; - prolongation[3](5,4) = 1.0/8.0; - prolongation[3](5,5) = 1.0/8.0; - prolongation[3](5,6) = 1.0/8.0; - prolongation[3](5,7) = 1.0/8.0; - prolongation[3](6,2) = 1.0/4.0; - prolongation[3](6,3) = 1.0/4.0; - prolongation[3](6,6) = 1.0/4.0; - prolongation[3](6,7) = 1.0/4.0; - prolongation[3](7,3) = 1.0/2.0; - prolongation[3](7,7) = 1.0/2.0; - prolongation[4](0,0) = 1.0/2.0; - prolongation[4](0,4) = 1.0/2.0; - prolongation[4](1,0) = 1.0/4.0; - prolongation[4](1,1) = 1.0/4.0; - prolongation[4](1,4) = 1.0/4.0; - prolongation[4](1,5) = 1.0/4.0; - prolongation[4](2,0) = 1.0/8.0; - prolongation[4](2,1) = 1.0/8.0; - prolongation[4](2,2) = 1.0/8.0; - prolongation[4](2,3) = 1.0/8.0; - prolongation[4](2,4) = 1.0/8.0; - prolongation[4](2,5) = 1.0/8.0; - prolongation[4](2,6) = 1.0/8.0; - prolongation[4](2,7) = 1.0/8.0; - prolongation[4](3,0) = 1.0/4.0; - prolongation[4](3,3) = 1.0/4.0; - prolongation[4](3,4) = 1.0/4.0; - prolongation[4](3,7) = 1.0/4.0; - prolongation[4](4,4) = 1.0; - prolongation[4](5,4) = 1.0/2.0; - prolongation[4](5,5) = 1.0/2.0; - prolongation[4](6,4) = 1.0/4.0; - prolongation[4](6,5) = 1.0/4.0; - prolongation[4](6,6) = 1.0/4.0; - prolongation[4](6,7) = 1.0/4.0; - prolongation[4](7,4) = 1.0/2.0; - prolongation[4](7,7) = 1.0/2.0; - prolongation[5](0,0) = 1.0/4.0; - prolongation[5](0,1) = 1.0/4.0; - prolongation[5](0,4) = 1.0/4.0; - prolongation[5](0,5) = 1.0/4.0; - prolongation[5](1,1) = 1.0/2.0; - prolongation[5](1,5) = 1.0/2.0; - prolongation[5](2,1) = 1.0/4.0; - prolongation[5](2,2) = 1.0/4.0; - prolongation[5](2,5) = 1.0/4.0; - prolongation[5](2,6) = 1.0/4.0; - prolongation[5](3,0) = 1.0/8.0; - prolongation[5](3,1) = 1.0/8.0; - prolongation[5](3,2) = 1.0/8.0; - prolongation[5](3,3) = 1.0/8.0; - prolongation[5](3,4) = 1.0/8.0; - prolongation[5](3,5) = 1.0/8.0; - prolongation[5](3,6) = 1.0/8.0; - prolongation[5](3,7) = 1.0/8.0; - prolongation[5](4,4) = 1.0/2.0; - prolongation[5](4,5) = 1.0/2.0; - prolongation[5](5,5) = 1.0; - prolongation[5](6,5) = 1.0/2.0; - prolongation[5](6,6) = 1.0/2.0; - prolongation[5](7,4) = 1.0/4.0; - prolongation[5](7,5) = 1.0/4.0; - prolongation[5](7,6) = 1.0/4.0; - prolongation[5](7,7) = 1.0/4.0; - prolongation[6](0,0) = 1.0/8.0; - prolongation[6](0,1) = 1.0/8.0; - prolongation[6](0,2) = 1.0/8.0; - prolongation[6](0,3) = 1.0/8.0; - prolongation[6](0,4) = 1.0/8.0; - prolongation[6](0,5) = 1.0/8.0; - prolongation[6](0,6) = 1.0/8.0; - prolongation[6](0,7) = 1.0/8.0; - prolongation[6](1,1) = 1.0/4.0; - prolongation[6](1,2) = 1.0/4.0; - prolongation[6](1,5) = 1.0/4.0; - prolongation[6](1,6) = 1.0/4.0; - prolongation[6](2,2) = 1.0/2.0; - prolongation[6](2,6) = 1.0/2.0; - prolongation[6](3,2) = 1.0/4.0; - prolongation[6](3,3) = 1.0/4.0; - prolongation[6](3,6) = 1.0/4.0; - prolongation[6](3,7) = 1.0/4.0; - prolongation[6](4,4) = 1.0/4.0; - prolongation[6](4,5) = 1.0/4.0; - prolongation[6](4,6) = 1.0/4.0; - prolongation[6](4,7) = 1.0/4.0; - prolongation[6](5,5) = 1.0/2.0; - prolongation[6](5,6) = 1.0/2.0; - prolongation[6](6,6) = 1.0; - prolongation[6](7,6) = 1.0/2.0; - prolongation[6](7,7) = 1.0/2.0; - prolongation[7](0,0) = 1.0/4.0; - prolongation[7](0,3) = 1.0/4.0; - prolongation[7](0,4) = 1.0/4.0; - prolongation[7](0,7) = 1.0/4.0; - prolongation[7](1,0) = 1.0/8.0; - prolongation[7](1,1) = 1.0/8.0; - prolongation[7](1,2) = 1.0/8.0; - prolongation[7](1,3) = 1.0/8.0; - prolongation[7](1,4) = 1.0/8.0; - prolongation[7](1,5) = 1.0/8.0; - prolongation[7](1,6) = 1.0/8.0; - prolongation[7](1,7) = 1.0/8.0; - prolongation[7](2,2) = 1.0/4.0; - prolongation[7](2,3) = 1.0/4.0; - prolongation[7](2,6) = 1.0/4.0; - prolongation[7](2,7) = 1.0/4.0; - prolongation[7](3,3) = 1.0/2.0; - prolongation[7](3,7) = 1.0/2.0; - prolongation[7](4,4) = 1.0/2.0; - prolongation[7](4,7) = 1.0/2.0; - prolongation[7](5,4) = 1.0/4.0; - prolongation[7](5,5) = 1.0/4.0; - prolongation[7](5,6) = 1.0/4.0; - prolongation[7](5,7) = 1.0/4.0; - prolongation[7](6,6) = 1.0/2.0; - prolongation[7](6,7) = 1.0/2.0; - prolongation[7](7,7) = 1.0; -}; - - -template <> -inline -double -FEQ1<3>::shape_value (const unsigned int i, - const Point<3>& p) const -{ - Assert((i -inline -Tensor<1,3> -FEQ1<3>::shape_grad (const unsigned int i, - const Point<3>& p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(-1.0+p(1)+(1.0-p(1))*p(2), - -1.0+p(0)+(1.0-p(0))*p(2), - -1.0+p(0)+(1.0-p(0))*p(1)); - case 1: return Point<3>(1.0-p(1)+(-1.0+p(1))*p(2), - -p(0)+p(0)*p(2), - -p(0)+p(0)*p(1)); - case 2: return Point<3>((1.0-p(1))*p(2), - -p(0)*p(2), - p(0)-p(0)*p(1)); - case 3: return Point<3>((-1.0+p(1))*p(2), - (-1.0+p(0))*p(2), - 1.0-p(0)+(-1.0+p(0))*p(1)); - case 4: return Point<3>(-p(1)+p(1)*p(2), - 1.0-p(0)+(-1.0+p(0))*p(2), - (-1.0+p(0))*p(1)); - case 5: return Point<3>(p(1)-p(1)*p(2), - p(0)-p(0)*p(2), - -p(0)*p(1)); - case 6: return Point<3>(p(1)*p(2), - p(0)*p(2), - p(0)*p(1)); - case 7: return Point<3>(-p(1)*p(2), - (1.0-p(0))*p(2), - (1.0-p(0))*p(1)); - } - return Point<3> (); -}; - - -template <> -inline -Tensor<2,3> -FEQ1<3>::shape_grad_grad (const unsigned int i, - const Point<3> &p) const -{ - Assert((i return_value; - - switch (i) - { - case 0: - return_value[0][1] = 1.0-p(2); - return_value[0][2] = 1.0-p(1); - return_value[1][0] = 1.0-p(2); - return_value[1][2] = 1.0-p(0); - return_value[2][0] = 1.0-p(1); - return_value[2][1] = 1.0-p(0); - break; - case 1: - return_value[0][1] = -1.0+p(2); - return_value[0][2] = -1.0+p(1); - return_value[1][0] = -1.0+p(2); - return_value[1][2] = p(0); - return_value[2][0] = -1.0+p(1); - return_value[2][1] = p(0); - break; - case 2: - return_value[0][1] = -p(2); - return_value[0][2] = 1.0-p(1); - return_value[1][0] = -p(2); - return_value[1][2] = -p(0); - return_value[2][0] = 1.0-p(1); - return_value[2][1] = -p(0); - break; - case 3: - return_value[0][1] = p(2); - return_value[0][2] = -1.0+p(1); - return_value[1][0] = p(2); - return_value[1][2] = -1.0+p(0); - return_value[2][0] = -1.0+p(1); - return_value[2][1] = -1.0+p(0); - break; - case 4: - return_value[0][1] = -1.0+p(2); - return_value[0][2] = p(1); - return_value[1][0] = -1.0+p(2); - return_value[1][2] = -1.0+p(0); - return_value[2][0] = p(1); - return_value[2][1] = -1.0+p(0); - break; - case 5: - return_value[0][1] = 1.0-p(2); - return_value[0][2] = -p(1); - return_value[1][0] = 1.0-p(2); - return_value[1][2] = -p(0); - return_value[2][0] = -p(1); - return_value[2][1] = -p(0); - break; - case 6: - return_value[0][1] = p(2); - return_value[0][2] = p(1); - return_value[1][0] = p(2); - return_value[1][2] = p(0); - return_value[2][0] = p(1); - return_value[2][1] = p(0); - break; - case 7: - return_value[0][1] = -p(2); - return_value[0][2] = -p(1); - return_value[1][0] = -p(2); - return_value[1][2] = 1.0-p(0); - return_value[2][0] = -p(1); - return_value[2][1] = 1.0-p(0); - }; - - return return_value; -}; - - -template <> -void FEQ1<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - - -template <> -void FEQ1<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<3> (0,0,0); - unit_points[1] = Point<3> (1,0,0); - unit_points[2] = Point<3> (1,0,1); - unit_points[3] = Point<3> (0,0,1); - unit_points[4] = Point<3> (0,1,0); - unit_points[5] = Point<3> (1,1,0); - unit_points[6] = Point<3> (1,1,1); - unit_points[7] = Point<3> (0,1,1); -}; - - -#endif - - -template -void -FEQ1::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_cell, - typename FiniteElementBase::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) - support_points[vertex] = cell->vertex(vertex); -}; - - -template -void -FEQ1::get_face_support_points (const typename DoFHandler::face_iterator &face, - typename std::vector > &support_points) const { - Assert ((support_points.size() == dofs_per_face) && - (support_points.size() == GeometryInfo::vertices_per_face), - typename FiniteElementBase:: - ExcWrongFieldDimension (support_points.size(), - GeometryInfo::vertices_per_face)); - - for (unsigned int vertex=0; vertexvertex(vertex); -}; - - -// explicit instantiations - -template class FEQ1; diff --git a/deal.II/deal.II/source/fe/fe_lib.quadratic.cc b/deal.II/deal.II/source/fe/fe_lib.quadratic.cc deleted file mode 100644 index 1a9d53bd08..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.quadratic.cc +++ /dev/null @@ -1,2982 +0,0 @@ -//---------------------------- fe_lib.quadratic.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.quadratic.cc --------------------------- - - -#include -#include -#include -#include -#include -#include - - -// declare explicit specializations before use: -template <> void FEQ2::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEQ2<1>::FEQ2 () : - FEQ1Mapping<1> (1, 1, 0, 0, 1, - std::vector (1, false)) -{ - initialize_matrices (); -}; - - - -template <> -FEQ2<1>::FEQ2 (const int) : - FEQ1Mapping<1> (0, 3, 0, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - - -template <> -void FEQ2<1>::initialize_matrices () -{ -/* - Get the prolongation matrices by the following little maple script: - - phi[0] := proc(xi) (1-xi)*(1-2*xi); end; - phi[1] := proc(xi) xi*(2*xi-1); end; - phi[2] := proc(xi) 4*xi*(1-xi); end; - - points[0] := array(0..2, [0, 1/2, 1/4]); - points[1] := array(0..2, [1/2, 1, 3/4]); - - prolongation := array(0..1,0..2, 0..2); - restriction := array(0..1,0..2, 0..2); - - for i from 0 to 1 do - for j from 0 to 2 do - for k from 0 to 2 do - prolongation[i,j,k] := phi[k](points[i][j]); - od; - od; - od; - - - # to get the restriction (interpolation) matrices, evaluate - # the basis functions on the child cells at the global - # interpolation points - - global_points := array(0..2, [0,1,1/2]): - child_phi[0] := proc(i, point) - if ((point<0) or (point>1/2)) then - 0: - else - phi[i](2*point): - fi: - end: - child_phi[1] := proc(i, point) - if ((point<1/2) or (point>1)) then - 0: - else - phi[i](2*point-1): - fi: - end: - - for child from 0 to 1 do - for j from 0 to 2 do - for k from 0 to 2 do - restriction[child,j,k] := child_phi[child](k, global_points[j]): - od: - od: - od: - - readlib(C); - C(prolongation); - C(restriction); -*/ - - prolongation[0](0,0) = 1.0; - prolongation[0](0,1) = 0.0; - prolongation[0](0,2) = 0.0; - prolongation[0](1,0) = 0.0; - prolongation[0](1,1) = 0.0; - prolongation[0](1,2) = 1.0; - prolongation[0](2,0) = 3.0/8.0; - prolongation[0](2,1) = -1.0/8.0; - prolongation[0](2,2) = 3.0/4.0; - prolongation[1](0,0) = 0.0; - prolongation[1](0,1) = 0.0; - prolongation[1](0,2) = 1.0; - prolongation[1](1,0) = 0.0; - prolongation[1](1,1) = 1.0; - prolongation[1](1,2) = 0.0; - prolongation[1](2,0) = -1.0/8.0; - prolongation[1](2,1) = 3.0/8.0; - prolongation[1](2,2) = 3.0/4.0; - - restriction[0](0,0)= 1.0; - restriction[0](2,1)= 1.0; - restriction[1](1,1)= 1.0; - restriction[1](2,0)= 1.0; -}; - - - -template <> -double -FEQ2<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -Tensor<1,1> -FEQ2<1>::shape_grad(const unsigned int i, - const Point<1> &p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(-3+4*xi); - case 1: return Point<1>(4*xi-1); - case 2: return Point<1>(4-8*xi); - } - return Point<1>(); -}; - - - -template <> -Tensor<2,1> -FEQ2<1>::shape_grad_grad (const unsigned int i, - const Point<1> &) const -{ - Assert((i return_value; - switch (i) - { - case 0: - return_value[0][0] = 4; - break; - case 1: - return_value[0][0] = 4; - break; - case 2: - return_value[0][0] = -8; - break; - } - return return_value; -}; - - - -template <> -void FEQ2<1>::get_unit_support_points (std::vector > &unit_points) const -{ - FiniteElement<1>::get_unit_support_points (unit_points); -}; - - - -template <> -void FEQ2<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const -{ - FiniteElement<1>::get_support_points (cell, support_points); -}; - - - -template <> -void FEQ2<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcInternalError()); -}; - - - -template <> -void FEQ2<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double h = cell->vertex(1)(0) - cell->vertex(0)(0); - Assert (h>0, ExcJacobiDeterminantHasWrongSign()); - - local_mass_matrix(0,0) = local_mass_matrix(1,1) = 2./15.*h; - local_mass_matrix(0,1) = local_mass_matrix(1,0) = -1./30.*h; - local_mass_matrix(0,2) = local_mass_matrix(2,0) = 1./15.*h; - local_mass_matrix(1,2) = local_mass_matrix(2,1) = 1./15.*h; - local_mass_matrix(2,2) = 8./15.*h; -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEQ2<2>::FEQ2 () : - FEQ1Mapping<2> (1, 1, 1, 0, 1, - std::vector (1, false)) -{ - interface_constraints(0,2) = 1.0; - interface_constraints(1,0) = 3./8.; - interface_constraints(1,1) = -1./8.; - interface_constraints(1,2) = 3./4.; - interface_constraints(2,0) = -1./8.; - interface_constraints(2,1) = 3./8.; - interface_constraints(2,2) = 3./4.; - - initialize_matrices (); -}; - - - -template <> -FEQ2<2>::FEQ2 (const int) : - FEQ1Mapping<2> (0, 0, 9, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - - -template <> -void FEQ2<2>::initialize_matrices () -{ -/* - Get the prolongation and restriction matrices by the following little maple script: - - phi[0] := proc(xi,eta) (1-xi)*( 2*xi-1) * (1-eta)*( 2*eta-1); end; - phi[1] := proc(xi,eta) xi *(-2*xi+1) * (1-eta)*( 2*eta-1); end; - phi[2] := proc(xi,eta) xi *(-2*xi+1) * eta *(-2*eta+1); end; - phi[3] := proc(xi,eta) (1-xi)*( 2*xi-1) * eta *(-2*eta+1); end; - phi[4] := proc(xi,eta) 4 * (1-xi)*xi * (1-eta)*(1-2*eta); end; - phi[5] := proc(xi,eta) 4 * xi *(-1+2*xi) * (1-eta)*eta; end; - phi[6] := proc(xi,eta) 4 * (1-xi)*xi * eta *(-1+2*eta);end; - phi[7] := proc(xi,eta) 4 * (1-xi)*(1-2*xi) * (1-eta)*eta; end; - phi[8] := proc(xi,eta) 16 * xi*(1-xi) * eta*(1-eta); end; - - points_x[0] := array(0..8, [0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 0, 1/4]); - points_y[0] := array(0..8, [0, 0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 1/4]); - - points_x[1] := array(0..8, [1/2, 1, 1, 1/2, 3/4, 1, 3/4, 1/2, 3/4]); - points_y[1] := array(0..8, [0, 0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 1/4]); - - points_x[2] := array(0..8, [1/2, 1, 1, 1/2, 3/4, 1, 3/4, 1/2, 3/4]); - points_y[2] := array(0..8, [1/2, 1/2, 1, 1, 1/2, 3/4, 1, 3/4, 3/4]); - - points_x[3] := array(0..8, [0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 0, 1/4]); - points_y[3] := array(0..8, [1/2, 1/2, 1, 1, 1/2, 3/4, 1, 3/4, 3/4]); - - prolongation := array(0..3,0..8, 0..8); - - for i from 0 to 3 do - for j from 0 to 8 do - for k from 0 to 8 do - prolongation[i,j,k] := phi[k](points_x[i][j], points_y[i][j]); - od; - od; - od; - - readlib(C); - C(prolongation); -*/ - - prolongation[0](0,0) = 1.0; - prolongation[0](0,1) = 0.0; - prolongation[0](0,2) = 0.0; - prolongation[0](0,3) = 0.0; - prolongation[0](0,4) = 0.0; - prolongation[0](0,5) = 0.0; - prolongation[0](0,6) = 0.0; - prolongation[0](0,7) = 0.0; - prolongation[0](0,8) = 0.0; - prolongation[0](1,0) = 0.0; - prolongation[0](1,1) = 0.0; - prolongation[0](1,2) = 0.0; - prolongation[0](1,3) = 0.0; - prolongation[0](1,4) = 1.0; - prolongation[0](1,5) = 0.0; - prolongation[0](1,6) = 0.0; - prolongation[0](1,7) = 0.0; - prolongation[0](1,8) = 0.0; - prolongation[0](2,0) = 0.0; - prolongation[0](2,1) = 0.0; - prolongation[0](2,2) = 0.0; - prolongation[0](2,3) = 0.0; - prolongation[0](2,4) = 0.0; - prolongation[0](2,5) = 0.0; - prolongation[0](2,6) = 0.0; - prolongation[0](2,7) = 0.0; - prolongation[0](2,8) = 1.0; - prolongation[0](3,0) = 0.0; - prolongation[0](3,1) = 0.0; - prolongation[0](3,2) = 0.0; - prolongation[0](3,3) = 0.0; - prolongation[0](3,4) = 0.0; - prolongation[0](3,5) = 0.0; - prolongation[0](3,6) = 0.0; - prolongation[0](3,7) = 1.0; - prolongation[0](3,8) = 0.0; - prolongation[0](4,0) = 3.0/8.0; - prolongation[0](4,1) = -1.0/8.0; - prolongation[0](4,2) = 0.0; - prolongation[0](4,3) = 0.0; - prolongation[0](4,4) = 3.0/4.0; - prolongation[0](4,5) = 0.0; - prolongation[0](4,6) = 0.0; - prolongation[0](4,7) = 0.0; - prolongation[0](4,8) = 0.0; - prolongation[0](5,0) = 0.0; - prolongation[0](5,1) = 0.0; - prolongation[0](5,2) = 0.0; - prolongation[0](5,3) = 0.0; - prolongation[0](5,4) = 3.0/8.0; - prolongation[0](5,5) = 0.0; - prolongation[0](5,6) = -1.0/8.0; - prolongation[0](5,7) = 0.0; - prolongation[0](5,8) = 3.0/4.0; - prolongation[0](6,0) = 0.0; - prolongation[0](6,1) = 0.0; - prolongation[0](6,2) = 0.0; - prolongation[0](6,3) = 0.0; - prolongation[0](6,4) = 0.0; - prolongation[0](6,5) = -1.0/8.0; - prolongation[0](6,6) = 0.0; - prolongation[0](6,7) = 3.0/8.0; - prolongation[0](6,8) = 3.0/4.0; - prolongation[0](7,0) = 3.0/8.0; - prolongation[0](7,1) = 0.0; - prolongation[0](7,2) = 0.0; - prolongation[0](7,3) = -1.0/8.0; - prolongation[0](7,4) = 0.0; - prolongation[0](7,5) = 0.0; - prolongation[0](7,6) = 0.0; - prolongation[0](7,7) = 3.0/4.0; - prolongation[0](7,8) = 0.0; - prolongation[0](8,0) = 9.0/64.0; - prolongation[0](8,1) = -3.0/64.0; - prolongation[0](8,2) = 1.0/64.0; - prolongation[0](8,3) = -3.0/64.0; - prolongation[0](8,4) = 9.0/32.0; - prolongation[0](8,5) = -3.0/32.0; - prolongation[0](8,6) = -3.0/32.0; - prolongation[0](8,7) = 9.0/32.0; - prolongation[0](8,8) = 9.0/16.0; - prolongation[1](0,0) = 0.0; - prolongation[1](0,1) = 0.0; - prolongation[1](0,2) = 0.0; - prolongation[1](0,3) = 0.0; - prolongation[1](0,4) = 1.0; - prolongation[1](0,5) = 0.0; - prolongation[1](0,6) = 0.0; - prolongation[1](0,7) = 0.0; - prolongation[1](0,8) = 0.0; - prolongation[1](1,0) = 0.0; - prolongation[1](1,1) = 1.0; - prolongation[1](1,2) = 0.0; - prolongation[1](1,3) = 0.0; - prolongation[1](1,4) = 0.0; - prolongation[1](1,5) = 0.0; - prolongation[1](1,6) = 0.0; - prolongation[1](1,7) = 0.0; - prolongation[1](1,8) = 0.0; - prolongation[1](2,0) = 0.0; - prolongation[1](2,1) = 0.0; - prolongation[1](2,2) = 0.0; - prolongation[1](2,3) = 0.0; - prolongation[1](2,4) = 0.0; - prolongation[1](2,5) = 1.0; - prolongation[1](2,6) = 0.0; - prolongation[1](2,7) = 0.0; - prolongation[1](2,8) = 0.0; - prolongation[1](3,0) = 0.0; - prolongation[1](3,1) = 0.0; - prolongation[1](3,2) = 0.0; - prolongation[1](3,3) = 0.0; - prolongation[1](3,4) = 0.0; - prolongation[1](3,5) = 0.0; - prolongation[1](3,6) = 0.0; - prolongation[1](3,7) = 0.0; - prolongation[1](3,8) = 1.0; - prolongation[1](4,0) = -1.0/8.0; - prolongation[1](4,1) = 3.0/8.0; - prolongation[1](4,2) = 0.0; - prolongation[1](4,3) = 0.0; - prolongation[1](4,4) = 3.0/4.0; - prolongation[1](4,5) = 0.0; - prolongation[1](4,6) = 0.0; - prolongation[1](4,7) = 0.0; - prolongation[1](4,8) = 0.0; - prolongation[1](5,0) = 0.0; - prolongation[1](5,1) = 3.0/8.0; - prolongation[1](5,2) = -1.0/8.0; - prolongation[1](5,3) = 0.0; - prolongation[1](5,4) = 0.0; - prolongation[1](5,5) = 3.0/4.0; - prolongation[1](5,6) = 0.0; - prolongation[1](5,7) = 0.0; - prolongation[1](5,8) = 0.0; - prolongation[1](6,0) = 0.0; - prolongation[1](6,1) = 0.0; - prolongation[1](6,2) = 0.0; - prolongation[1](6,3) = 0.0; - prolongation[1](6,4) = 0.0; - prolongation[1](6,5) = 3.0/8.0; - prolongation[1](6,6) = 0.0; - prolongation[1](6,7) = -1.0/8.0; - prolongation[1](6,8) = 3.0/4.0; - prolongation[1](7,0) = 0.0; - prolongation[1](7,1) = 0.0; - prolongation[1](7,2) = 0.0; - prolongation[1](7,3) = 0.0; - prolongation[1](7,4) = 3.0/8.0; - prolongation[1](7,5) = 0.0; - prolongation[1](7,6) = -1.0/8.0; - prolongation[1](7,7) = 0.0; - prolongation[1](7,8) = 3.0/4.0; - prolongation[1](8,0) = -3.0/64.0; - prolongation[1](8,1) = 9.0/64.0; - prolongation[1](8,2) = -3.0/64.0; - prolongation[1](8,3) = 1.0/64.0; - prolongation[1](8,4) = 9.0/32.0; - prolongation[1](8,5) = 9.0/32.0; - prolongation[1](8,6) = -3.0/32.0; - prolongation[1](8,7) = -3.0/32.0; - prolongation[1](8,8) = 9.0/16.0; - prolongation[2](0,0) = 0.0; - prolongation[2](0,1) = 0.0; - prolongation[2](0,2) = 0.0; - prolongation[2](0,3) = 0.0; - prolongation[2](0,4) = 0.0; - prolongation[2](0,5) = 0.0; - prolongation[2](0,6) = 0.0; - prolongation[2](0,7) = 0.0; - prolongation[2](0,8) = 1.0; - prolongation[2](1,0) = 0.0; - prolongation[2](1,1) = 0.0; - prolongation[2](1,2) = 0.0; - prolongation[2](1,3) = 0.0; - prolongation[2](1,4) = 0.0; - prolongation[2](1,5) = 1.0; - prolongation[2](1,6) = 0.0; - prolongation[2](1,7) = 0.0; - prolongation[2](1,8) = 0.0; - prolongation[2](2,0) = 0.0; - prolongation[2](2,1) = 0.0; - prolongation[2](2,2) = 1.0; - prolongation[2](2,3) = 0.0; - prolongation[2](2,4) = 0.0; - prolongation[2](2,5) = 0.0; - prolongation[2](2,6) = 0.0; - prolongation[2](2,7) = 0.0; - prolongation[2](2,8) = 0.0; - prolongation[2](3,0) = 0.0; - prolongation[2](3,1) = 0.0; - prolongation[2](3,2) = 0.0; - prolongation[2](3,3) = 0.0; - prolongation[2](3,4) = 0.0; - prolongation[2](3,5) = 0.0; - prolongation[2](3,6) = 1.0; - prolongation[2](3,7) = 0.0; - prolongation[2](3,8) = 0.0; - prolongation[2](4,0) = 0.0; - prolongation[2](4,1) = 0.0; - prolongation[2](4,2) = 0.0; - prolongation[2](4,3) = 0.0; - prolongation[2](4,4) = 0.0; - prolongation[2](4,5) = 3.0/8.0; - prolongation[2](4,6) = 0.0; - prolongation[2](4,7) = -1.0/8.0; - prolongation[2](4,8) = 3.0/4.0; - prolongation[2](5,0) = 0.0; - prolongation[2](5,1) = -1.0/8.0; - prolongation[2](5,2) = 3.0/8.0; - prolongation[2](5,3) = 0.0; - prolongation[2](5,4) = 0.0; - prolongation[2](5,5) = 3.0/4.0; - prolongation[2](5,6) = 0.0; - prolongation[2](5,7) = 0.0; - prolongation[2](5,8) = 0.0; - prolongation[2](6,0) = 0.0; - prolongation[2](6,1) = 0.0; - prolongation[2](6,2) = 3.0/8.0; - prolongation[2](6,3) = -1.0/8.0; - prolongation[2](6,4) = 0.0; - prolongation[2](6,5) = 0.0; - prolongation[2](6,6) = 3.0/4.0; - prolongation[2](6,7) = 0.0; - prolongation[2](6,8) = 0.0; - prolongation[2](7,0) = 0.0; - prolongation[2](7,1) = 0.0; - prolongation[2](7,2) = 0.0; - prolongation[2](7,3) = 0.0; - prolongation[2](7,4) = -1.0/8.0; - prolongation[2](7,5) = 0.0; - prolongation[2](7,6) = 3.0/8.0; - prolongation[2](7,7) = 0.0; - prolongation[2](7,8) = 3.0/4.0; - prolongation[2](8,0) = 1.0/64.0; - prolongation[2](8,1) = -3.0/64.0; - prolongation[2](8,2) = 9.0/64.0; - prolongation[2](8,3) = -3.0/64.0; - prolongation[2](8,4) = -3.0/32.0; - prolongation[2](8,5) = 9.0/32.0; - prolongation[2](8,6) = 9.0/32.0; - prolongation[2](8,7) = -3.0/32.0; - prolongation[2](8,8) = 9.0/16.0; - prolongation[3](0,0) = 0.0; - prolongation[3](0,1) = 0.0; - prolongation[3](0,2) = 0.0; - prolongation[3](0,3) = 0.0; - prolongation[3](0,4) = 0.0; - prolongation[3](0,5) = 0.0; - prolongation[3](0,6) = 0.0; - prolongation[3](0,7) = 1.0; - prolongation[3](0,8) = 0.0; - prolongation[3](1,0) = 0.0; - prolongation[3](1,1) = 0.0; - prolongation[3](1,2) = 0.0; - prolongation[3](1,3) = 0.0; - prolongation[3](1,4) = 0.0; - prolongation[3](1,5) = 0.0; - prolongation[3](1,6) = 0.0; - prolongation[3](1,7) = 0.0; - prolongation[3](1,8) = 1.0; - prolongation[3](2,0) = 0.0; - prolongation[3](2,1) = 0.0; - prolongation[3](2,2) = 0.0; - prolongation[3](2,3) = 0.0; - prolongation[3](2,4) = 0.0; - prolongation[3](2,5) = 0.0; - prolongation[3](2,6) = 1.0; - prolongation[3](2,7) = 0.0; - prolongation[3](2,8) = 0.0; - prolongation[3](3,0) = 0.0; - prolongation[3](3,1) = 0.0; - prolongation[3](3,2) = 0.0; - prolongation[3](3,3) = 1.0; - prolongation[3](3,4) = 0.0; - prolongation[3](3,5) = 0.0; - prolongation[3](3,6) = 0.0; - prolongation[3](3,7) = 0.0; - prolongation[3](3,8) = 0.0; - prolongation[3](4,0) = 0.0; - prolongation[3](4,1) = 0.0; - prolongation[3](4,2) = 0.0; - prolongation[3](4,3) = 0.0; - prolongation[3](4,4) = 0.0; - prolongation[3](4,5) = -1.0/8.0; - prolongation[3](4,6) = 0.0; - prolongation[3](4,7) = 3.0/8.0; - prolongation[3](4,8) = 3.0/4.0; - prolongation[3](5,0) = 0.0; - prolongation[3](5,1) = 0.0; - prolongation[3](5,2) = 0.0; - prolongation[3](5,3) = 0.0; - prolongation[3](5,4) = -1.0/8.0; - prolongation[3](5,5) = 0.0; - prolongation[3](5,6) = 3.0/8.0; - prolongation[3](5,7) = 0.0; - prolongation[3](5,8) = 3.0/4.0; - prolongation[3](6,0) = 0.0; - prolongation[3](6,1) = 0.0; - prolongation[3](6,2) = -1.0/8.0; - prolongation[3](6,3) = 3.0/8.0; - prolongation[3](6,4) = 0.0; - prolongation[3](6,5) = 0.0; - prolongation[3](6,6) = 3.0/4.0; - prolongation[3](6,7) = 0.0; - prolongation[3](6,8) = 0.0; - prolongation[3](7,0) = -1.0/8.0; - prolongation[3](7,1) = 0.0; - prolongation[3](7,2) = 0.0; - prolongation[3](7,3) = 3.0/8.0; - prolongation[3](7,4) = 0.0; - prolongation[3](7,5) = 0.0; - prolongation[3](7,6) = 0.0; - prolongation[3](7,7) = 3.0/4.0; - prolongation[3](7,8) = 0.0; - prolongation[3](8,0) = -3.0/64.0; - prolongation[3](8,1) = 1.0/64.0; - prolongation[3](8,2) = -3.0/64.0; - prolongation[3](8,3) = 9.0/64.0; - prolongation[3](8,4) = -3.0/32.0; - prolongation[3](8,5) = -3.0/32.0; - prolongation[3](8,6) = 9.0/32.0; - prolongation[3](8,7) = 9.0/32.0; - prolongation[3](8,8) = 9.0/16.0; - - restriction[0](0,0) = 1.0; - restriction[0](4,1) = 1.0; - restriction[0](7,3) = 1.0; - restriction[0](8,2) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](4,0) = 1.0; - restriction[1](5,2) = 1.0; - restriction[1](8,3) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](5,1) = 1.0; - restriction[2](6,3) = 1.0; - restriction[2](8,0) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](6,2) = 1.0; - restriction[3](7,0) = 1.0; - restriction[3](8,1) = 1.0; -}; - - - -template <> -double -FEQ2<2>::shape_value (const unsigned int i, - const Point<2> &p) const -{ - Assert (i -Tensor<1,2> -FEQ2<2>::shape_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2>(-(2*xi-1)*(1-eta)*(2*eta-1)+2*(1-xi)*(1-eta)*(2*eta-1), - -(1-xi)*(2*xi-1)*(2*eta-1)+2*(1-xi)*(2*xi-1)*(1-eta)); - case 1: return Point<2>((-2*xi+1)*(1-eta)*(2*eta-1)-2*xi*(1-eta)*(2*eta-1), - -xi*(-2*xi+1)*(2*eta-1)+2*xi*(-2*xi+1)*(1-eta)); - case 2: return Point<2>((-2*xi+1)*eta*(-2*eta+1)-2*xi*eta*(-2*eta+1), - xi*(-2*xi+1)*(-2*eta+1)-2*xi*(-2*xi+1)*eta); - case 3: return Point<2>(-(2*xi-1)*eta*(-2*eta+1)+2*(1-xi)*eta*(-2*eta+1), - (1-xi)*(2*xi-1)*(-2*eta+1)-2*(1-xi)*(2*xi-1)*eta); - case 4: return Point<2>(-4*xi*(1-eta)*(-2*eta+1)+4*(1-xi)*(1-eta)*(-2*eta+1), - -4*(1-xi)*xi*(-2*eta+1)-8*(1-xi)*xi*(1-eta)); - case 5: return Point<2>(4*(2*xi-1)*(1-eta)*eta+8*xi*(1-eta)*eta, - -4*xi*(2*xi-1)*eta+4*xi*(2*xi-1)*(1-eta)); - case 6: return Point<2>(-4*xi*eta*(2*eta-1)+4*(1-xi)*eta*(2*eta-1), - 4*(1-xi)*xi*(2*eta-1)+8*(1-xi)*xi*eta); - case 7: return Point<2>(-4*(-2*xi+1)*(1-eta)*eta-8*(1-xi)*(1-eta)*eta, - -4*(1-xi)*(-2*xi+1)*eta+4*(1-xi)*(-2*xi+1)*(1-eta)); - case 8: return Point<2>(16*(1-xi)*(1-eta)*eta-16*xi*eta*(1-eta), - 16*xi*(1-xi)*(1-eta)-16*(1-xi)*xi*eta); - }; - return Point<2> (); -}; - - - -template <> -Tensor<2,2> -FEQ2<2>::shape_grad_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i return_value; - - switch (i) - { - case 0: - return_value[0][0] = 4.0-12.0*eta+8.0*eta*eta; - return_value[0][1] = 9.0-12.0*xi+2.0*(-6.0+8.0*xi)*eta; - return_value[1][0] = 9.0-12.0*xi+2.0*(-6.0+8.0*xi)*eta; - return_value[1][1] = 4.0-12.0*xi+8.0*xi*xi; - break; - case 1: - return_value[0][0] = 4.0-12.0*eta+8.0*eta*eta; - return_value[0][1] = 3.0-12.0*xi+2.0*(-2.0+8.0*xi)*eta; - return_value[1][0] = 3.0-12.0*xi+2.0*(-2.0+8.0*xi)*eta; - return_value[1][1] = -4.0*xi+8.0*xi*xi; - break; - case 2: - return_value[0][0] = -4.0*eta+8.0*eta*eta; - return_value[0][1] = 1.0-4.0*xi+2.0*(-2.0+8.0*xi)*eta; - return_value[1][0] = 1.0-4.0*xi+2.0*(-2.0+8.0*xi)*eta; - return_value[1][1] = -4.0*xi+8.0*xi*xi; - break; - case 3: - return_value[0][0] = -4.0*eta+8.0*eta*eta; - return_value[0][1] = 3.0-4.0*xi+2.0*(-6.0+8.0*xi)*eta; - return_value[1][0] = 3.0-4.0*xi+2.0*(-6.0+8.0*xi)*eta; - return_value[1][1] = 4.0-12.0*xi+8.0*xi*xi; - break; - case 4: - return_value[0][0] = -8.0+24.0*eta-16.0*eta*eta; - return_value[0][1] = -12.0+24.0*xi+2.0*(8.0-16.0*xi)*eta; - return_value[1][0] = -12.0+24.0*xi+2.0*(8.0-16.0*xi)*eta; - return_value[1][1] = 16.0*xi-16.0*xi*xi; - break; - case 5: - return_value[0][0] = 16.0*eta-16.0*eta*eta; - return_value[0][1] = -4.0+16.0*xi+2.0*(4.0-16.0*xi)*eta; - return_value[1][0] = -4.0+16.0*xi+2.0*(4.0-16.0*xi)*eta; - return_value[1][1] = 8.0*xi-16.0*xi*xi; - break; - case 6: - return_value[0][0] = 8.0*eta-16.0*eta*eta; - return_value[0][1] = -4.0+8.0*xi+2.0*(8.0-16.0*xi)*eta; - return_value[1][0] = -4.0+8.0*xi+2.0*(8.0-16.0*xi)*eta; - return_value[1][1] = 16.0*xi-16.0*xi*xi; - break; - case 7: - return_value[0][0] = 16.0*eta-16.0*eta*eta; - return_value[0][1] = -12.0+16.0*xi+2.0*(12.0-16.0*xi)*eta; - return_value[1][0] = -12.0+16.0*xi+2.0*(12.0-16.0*xi)*eta; - return_value[1][1] = -8.0+24.0*xi-16.0*xi*xi; - break; - case 8: - return_value[0][0] = -32.0*eta+32.0*eta*eta; - return_value[0][1] = 16.0-32.0*xi+2.0*(-16.0+32.0*xi)*eta; - return_value[1][0] = 16.0-32.0*xi+2.0*(-16.0+32.0*xi)*eta; - return_value[1][1] = -32.0*xi+32.0*xi*xi; - break; - }; - return return_value; -}; - - - -template <> -void FEQ2<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - -/* Get the computation of the local mass matrix by these lines in maple. Note - that tphi[i] are the basis function of the linear finite element, which - are used by the transformation (therefore >tvertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - -/* check that the Jacobi determinant - - t0 = (-x[0]*(1.0-eta)+x[1]*(1.0-eta)+x[2]*eta-x[3]*eta) * - (-y[0]*(1.0-xi)-y[1]*xi+y[2]*xi+y[3]*(1.0-xi)) - - (-x[0]*(1.0-xi)-x[1]*xi+x[2]*xi+x[3]*(1.0-xi)) * - (-y[0]*(1.0-eta)+y[1]*(1.0-eta)+y[2]*eta-y[3]*eta) - - has the right sign. - - We do not attempt to check its (hopefully) positive sign at all points - on the unit cell, but we check that it is positive in the four corners, - which is sufficient since $det J$ is a bilinear function. -*/ - Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]), // xi=eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]), // xi=0, eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]), // xi=eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]), // xi=1, eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - - const double t1 = (x[1]*y[0]); - const double t2 = (x[1]*y[2]); - const double t3 = (x[0]*y[3]); - const double t4 = (x[3]*y[2]); - const double t5 = (x[2]*y[3]); - const double t6 = (x[0]*y[1]); - const double t7 = (x[3]*y[1]); - const double t8 = (x[3]*y[0]); - const double t9 = (x[2]*y[1]); - const double t10 = (x[1]*y[3]); - const double t12 = (x[0]*y[2]); - const double t13 = (x[2]*y[0]); - const double t14 = (7.0/1800.0*t1-t2/450+t3/450+t4/1800-t5/1800- - 7.0/1800.0*t6+t12/600+ - t7/600-t8/450-t13/600+t9/450-t10/600); - const double t15 = (-t1/1800+t2/1800-t3/1800-t4/1800+t5/1800+ - t6/1800+t8/1800-t9/1800); - const double t16 = (t1/450-t2/1800+7.0/1800.0*t3+t4/450- - t5/450-t6/450-t12/600+t7/600 - -7.0/1800.0*t8+t13/600+t9/1800-t10/600); - const double t17 = (-7.0/900.0*t1-2.0/225.0*t3-t4/900+t5/900 - +7.0/900.0*t6+t12/900-7.0/ - 900.0*t7+2.0/225.0*t8-t13/900+7.0/900.0*t10); - const double t18 = (t1/450-t2/900+t3/900-t6/450+t12/900+ - t7/900-t8/900-t13/900+t9/900- - t10/900); - const double t19 = (t1/900+t3/450+t4/900-t5/900-t6/900 - -t12/900+t7/900-t8/450+t13/900- - t10/900); - const double t20 = (-2.0/225.0*t1+t2/900-7.0/900.0*t3+ - 2.0/225.0*t6-t12/900-7.0/900.0*t7 - +7.0/900.0*t8+t13/900-t9/900+7.0/900.0*t10); - const double t21 = (-t1/225-t3/225+t6/225-t7/225+t8/225+t10/225); - const double t23 = (t1/450-7.0/1800.0*t2+t3/1800+t4/450 - -t5/450-t6/450+t12/600-t7/600-t8 - /1800-t13/600+7.0/1800.0*t9+t10/600); - const double t24 = (-7.0/900.0*t1+2.0/225.0*t2-t4/900+t5/900 - +7.0/900.0*t6-7.0/900.0*t12 - +t7/900+7.0/900.0*t13-2.0/225.0*t9-t10/900); - const double t25 = (-2.0/225.0*t1+7.0/900.0*t2-t3/900+2.0/225.0*t6 - -7.0/900.0*t12-t7/900 - +t8/900+7.0/900.0*t13-7.0/900.0*t9+t10/900); - const double t26 = (t1/900-t2/450+t4/900-t5/900-t6/900+t12/900 - -t7/900-t13/900+t9/450+ - t10/900); - const double t27 = (-t1/225+t2/225+t6/225-t12/225+t13/225-t9/225); - const double t29 = (t1/1800-t2/450+t3/450+7.0/1800.0*t4-7.0/1800.0*t5 - -t6/1800-t12/600- - t7/600-t8/450+t13/600+t9/450+t10/600); - const double t30 = (7.0/900.0*t2-t3/900-2.0/225.0*t4+2.0/225.0*t5 - +t12/900+7.0/900.0*t7+ - t8/900-t13/900-7.0/900.0*t9-7.0/900.0*t10); - const double t31 = (-t1/900+2.0/225.0*t2-7.0/900.0*t4+7.0/900.0*t5 - +t6/900-t12/900+7.0/ - 900.0*t7+t13/900-2.0/225.0*t9-7.0/900.0*t10); - const double t32 = (-t2/900+t3/900+t4/450-t5/450-t12/900-t7/900 - -t8/900+t13/900+t9/900+ - t10/900); - const double t33 = (t2/225-t4/225+t5/225+t7/225-t9/225-t10/225); - const double t35 = (-t1/900-2.0/225.0*t3-7.0/900.0*t4+7.0/900.0*t5 - +t6/900+7.0/900.0*t12 - -t7/900+2.0/225.0*t8-7.0/900.0*t13+t10/900); - const double t36 = (t2/900-7.0/900.0*t3-2.0/225.0*t4+2.0/225.0*t5 - +7.0/900.0*t12+t7/900+ - 7.0/900.0*t8-7.0/900.0*t13-t9/900-t10/900); - const double t37 = (-t3/225-t4/225+t5/225+t12/225+t8/225-t13/225); - const double t38 = (-14.0/225.0*t1+8.0/225.0*t2-8.0/225.0*t3 - -2.0/225.0*t4+2.0/225.0*t5+ - 14.0/225.0*t6-2.0/75.0*t12-2.0/75.0*t7 - +8.0/225.0*t8+2.0/75.0*t13-8.0/225.0*t9+ - 2.0/75.0*t10); - const double t39 = (2.0/225.0*t1-2.0/225.0*t2+2.0/225.0*t3 - +2.0/225.0*t4-2.0/225.0*t5 - -2.0/225.0*t6-2.0/225.0*t8+2.0/225.0*t9); - const double t40 = (-8.0/225.0*t1+4.0/225.0*t2-4.0/225.0*t3 - +8.0/225.0*t6-4.0/225.0*t12 - -4.0/225.0*t7+4.0/225.0*t8+4.0/225.0*t13 - -4.0/225.0*t9+4.0/225.0*t10); - const double t41 = (-8.0/225.0*t1+14.0/225.0*t2-2.0/225.0*t3 - -8.0/225.0*t4+8.0/225.0*t5+ - 8.0/225.0*t6-2.0/75.0*t12+2.0/75.0*t7 - +2.0/225.0*t8+2.0/75.0*t13-14.0/225.0*t9 - -2.0/75.0*t10); - const double t42 = (-4.0/225.0*t1+8.0/225.0*t2-4.0/225.0*t4 - +4.0/225.0*t5+4.0/225.0*t6 - -4.0/225.0*t12+4.0/225.0*t7+4.0/225.0*t13 - -8.0/225.0*t9-4.0/225.0*t10); - const double t43 = (-2.0/225.0*t1+8.0/225.0*t2-8.0/225.0*t3 - -14.0/225.0*t4+14.0/225.0*t5 - +2.0/225.0*t6+2.0/75.0*t12+2.0/75.0*t7 - +8.0/225.0*t8-2.0/75.0*t13-8.0/225.0*t9 - -2.0/75.0*t10); - const double t44 = (4.0/225.0*t2-4.0/225.0*t3-8.0/225.0*t4 - +8.0/225.0*t5+4.0/225.0*t12+ - 4.0/225.0*t7+4.0/225.0*t8-4.0/225.0*t13 - -4.0/225.0*t9-4.0/225.0*t10); - const double t45 = (-8.0/225.0*t1+2.0/225.0*t2-14.0/225.0*t3 - -8.0/225.0*t4+8.0/225.0*t5+ - 8.0/225.0*t6+2.0/75.0*t12-2.0/75.0*t7 - +14.0/225.0*t8-2.0/75.0*t13-2.0/225.0*t9+ - 2.0/75.0*t10); - const double t46 = (-4.0/225.0*t1-8.0/225.0*t3-4.0/225.0*t4 - +4.0/225.0*t5+4.0/225.0*t6+ - 4.0/225.0*t12-4.0/225.0*t7+8.0/225.0*t8 - -4.0/225.0*t13+4.0/225.0*t10); - - local_mass_matrix(0,0) = (-7.0/450.0*t1+t2/450-7.0/450.0*t3 - -t4/450+t5/450+7.0/450.0*t6-t7/75 - +7.0/450.0*t8-t9/450+t10/75); - local_mass_matrix(0,1) = (t14); - local_mass_matrix(0,2) = (t15); - local_mass_matrix(0,3) = (t16); - local_mass_matrix(0,4) = (t17); - local_mass_matrix(0,5) = (t18); - local_mass_matrix(0,6) = (t19); - local_mass_matrix(0,7) = (t20); - local_mass_matrix(0,8) = (t21); - local_mass_matrix(1,0) = (t14); - local_mass_matrix(1,1) = (-7.0/450.0*t1+7.0/450.0*t2-t3/450 - -t4/450+t5/450+7.0/450.0*t6- - t12/75+t8/450+t13/75-7.0/450.0*t9); - local_mass_matrix(1,2) = (t23); - local_mass_matrix(1,3) = (t15); - local_mass_matrix(1,4) = (t24); - local_mass_matrix(1,5) = (t25); - local_mass_matrix(1,6) = (t26); - local_mass_matrix(1,7) = (t18); - local_mass_matrix(1,8) = (t27); - local_mass_matrix(2,0) = (t15); - local_mass_matrix(2,1) = (t23); - local_mass_matrix(2,2) = (-t1/450+7.0/450.0*t2-t3/450-7.0/450.0*t4 - +7.0/450.0*t5+t6/450+t7/75 - +t8/450-7.0/450.0*t9-t10/75); - local_mass_matrix(2,3) = (t29); - local_mass_matrix(2,4) = (t26); - local_mass_matrix(2,5) = (t30); - local_mass_matrix(2,6) = (t31); - local_mass_matrix(2,7) = (t32); - local_mass_matrix(2,8) = (t33); - local_mass_matrix(3,0) = (t16); - local_mass_matrix(3,1) = (t15); - local_mass_matrix(3,2) = (t29); - local_mass_matrix(3,3) = (-t1/450+t2/450-7.0/450.0*t3-7.0/450.0*t4 - +7.0/450.0*t5+t6/450+ - t12/75+7.0/450.0*t8-t13/75-t9/450); - local_mass_matrix(3,4) = (t19); - local_mass_matrix(3,5) = (t32); - local_mass_matrix(3,6) = (t35); - local_mass_matrix(3,7) = (t36); - local_mass_matrix(3,8) = (t37); - local_mass_matrix(4,0) = (t17); - local_mass_matrix(4,1) = (t24); - local_mass_matrix(4,2) = (t26); - local_mass_matrix(4,3) = (t19); - local_mass_matrix(4,4) = (t38); - local_mass_matrix(4,5) = (t27); - local_mass_matrix(4,6) = (t39); - local_mass_matrix(4,7) = (t21); - local_mass_matrix(4,8) = (t40); - local_mass_matrix(5,0) = (t18); - local_mass_matrix(5,1) = (t25); - local_mass_matrix(5,2) = (t30); - local_mass_matrix(5,3) = (t32); - local_mass_matrix(5,4) = (t27); - local_mass_matrix(5,5) = (t41); - local_mass_matrix(5,6) = (t33); - local_mass_matrix(5,7) = (t39); - local_mass_matrix(5,8) = (t42); - local_mass_matrix(6,0) = (t19); - local_mass_matrix(6,1) = (t26); - local_mass_matrix(6,2) = (t31); - local_mass_matrix(6,3) = (t35); - local_mass_matrix(6,4) = (t39); - local_mass_matrix(6,5) = (t33); - local_mass_matrix(6,6) = (t43); - local_mass_matrix(6,7) = (t37); - local_mass_matrix(6,8) = (t44); - local_mass_matrix(7,0) = (t20); - local_mass_matrix(7,1) = (t18); - local_mass_matrix(7,2) = (t32); - local_mass_matrix(7,3) = (t36); - local_mass_matrix(7,4) = (t21); - local_mass_matrix(7,5) = (t39); - local_mass_matrix(7,6) = (t37); - local_mass_matrix(7,7) = (t45); - local_mass_matrix(7,8) = (t46); - local_mass_matrix(8,0) = (t21); - local_mass_matrix(8,1) = (t27); - local_mass_matrix(8,2) = (t33); - local_mass_matrix(8,3) = (t37); - local_mass_matrix(8,4) = (t40); - local_mass_matrix(8,5) = (t42); - local_mass_matrix(8,6) = (t44); - local_mass_matrix(8,7) = (t46); - local_mass_matrix(8,8) = (-32.0/225.0*t1+32.0/225.0*t2-32.0/225.0*t3 - -32.0/225.0*t4+32.0/225.0*t5+32.0/225.0*t6 - +32.0/225.0*t8-32.0/225.0*t9); -}; - - - -template <> -void FEQ2<2>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2> (0,0); - unit_points[1] = Point<2> (1,0); - unit_points[2] = Point<2> (1,1); - unit_points[3] = Point<2> (0,1); - unit_points[4] = Point<2> (0.5,0); - unit_points[5] = Point<2> (1,0.5); - unit_points[6] = Point<2> (0.5,1); - unit_points[7] = Point<2> (0,0.5); - unit_points[8] = Point<2> (0.5,0.5); -}; - - - -template <> -void FEQ2<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - for (unsigned int vertex=0; vertex<4; ++vertex) - support_points[vertex] = cell->vertex(vertex); - - // for the bilinear mapping, the centers - // of the face on the unit cell are mapped - // to the mean coordinates of the vertices - for (unsigned int line=0; line<4; ++line) - support_points[4+line] = (cell->line(line)->vertex(0) + - cell->line(line)->vertex(1)) / 2; - // same for the center of the square: - // since all four linear basis functions - // take on the value 1/4 at the center, - // the center is mapped to the mean - // coordinates of the four vertices - support_points[8] = (support_points[0] + - support_points[1] + - support_points[2] + - support_points[3]) / 4; -}; - - - -template <> -void FEQ2<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_face, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), - dofs_per_face)); - - for (unsigned int vertex=0; vertex<2; ++vertex) - support_points[vertex] = face->vertex(vertex); - support_points[2] = (support_points[0] + support_points[1]) / 2; -}; - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEQ2<3>::FEQ2 () : - FEQ1Mapping<3> (1, 1, 1, 1, 1, - std::vector (1, false)) -{ - interface_constraints(0,8) = 1.0; - interface_constraints(1,4) = 1.0; - interface_constraints(2,5) = 1.0; - interface_constraints(3,6) = 1.0; - interface_constraints(4,7) = 1.0; - interface_constraints(5,4) = 3.0/8.0; - interface_constraints(5,6) = -1.0/8.0; - interface_constraints(5,8) = 3.0/4.0; - interface_constraints(6,5) = 3.0/8.0; - interface_constraints(6,7) = -1.0/8.0; - interface_constraints(6,8) = 3.0/4.0; - interface_constraints(7,4) = -1.0/8.0; - interface_constraints(7,6) = 3.0/8.0; - interface_constraints(7,8) = 3.0/4.0; - interface_constraints(8,5) = -1.0/8.0; - interface_constraints(8,7) = 3.0/8.0; - interface_constraints(8,8) = 3.0/4.0; - interface_constraints(9,0) = 3.0/8.0; - interface_constraints(9,1) = -1.0/8.0; - interface_constraints(9,4) = 3.0/4.0; - interface_constraints(10,0) = -1.0/8.0; - interface_constraints(10,1) = 3.0/8.0; - interface_constraints(10,4) = 3.0/4.0; - interface_constraints(11,1) = 3.0/8.0; - interface_constraints(11,2) = -1.0/8.0; - interface_constraints(11,5) = 3.0/4.0; - interface_constraints(12,1) = -1.0/8.0; - interface_constraints(12,2) = 3.0/8.0; - interface_constraints(12,5) = 3.0/4.0; - interface_constraints(13,2) = -1.0/8.0; - interface_constraints(13,3) = 3.0/8.0; - interface_constraints(13,6) = 3.0/4.0; - interface_constraints(14,2) = 3.0/8.0; - interface_constraints(14,3) = -1.0/8.0; - interface_constraints(14,6) = 3.0/4.0; - interface_constraints(15,0) = 3.0/8.0; - interface_constraints(15,3) = -1.0/8.0; - interface_constraints(15,7) = 3.0/4.0; - interface_constraints(16,0) = -1.0/8.0; - interface_constraints(16,3) = 3.0/8.0; - interface_constraints(16,7) = 3.0/4.0; - interface_constraints(17,0) = 9.0/64.0; - interface_constraints(17,1) = -3.0/64.0; - interface_constraints(17,2) = 1.0/64.0; - interface_constraints(17,3) = -3.0/64.0; - interface_constraints(17,4) = 9.0/32.0; - interface_constraints(17,5) = -3.0/32.0; - interface_constraints(17,6) = -3.0/32.0; - interface_constraints(17,7) = 9.0/32.0; - interface_constraints(17,8) = 9.0/16.0; - interface_constraints(18,0) = -3.0/64.0; - interface_constraints(18,1) = 9.0/64.0; - interface_constraints(18,2) = -3.0/64.0; - interface_constraints(18,3) = 1.0/64.0; - interface_constraints(18,4) = 9.0/32.0; - interface_constraints(18,5) = 9.0/32.0; - interface_constraints(18,6) = -3.0/32.0; - interface_constraints(18,7) = -3.0/32.0; - interface_constraints(18,8) = 9.0/16.0; - interface_constraints(19,0) = 1.0/64.0; - interface_constraints(19,1) = -3.0/64.0; - interface_constraints(19,2) = 9.0/64.0; - interface_constraints(19,3) = -3.0/64.0; - interface_constraints(19,4) = -3.0/32.0; - interface_constraints(19,5) = 9.0/32.0; - interface_constraints(19,6) = 9.0/32.0; - interface_constraints(19,7) = -3.0/32.0; - interface_constraints(19,8) = 9.0/16.0; - interface_constraints(20,0) = -3.0/64.0; - interface_constraints(20,1) = 1.0/64.0; - interface_constraints(20,2) = -3.0/64.0; - interface_constraints(20,3) = 9.0/64.0; - interface_constraints(20,4) = -3.0/32.0; - interface_constraints(20,5) = -3.0/32.0; - interface_constraints(20,6) = 9.0/32.0; - interface_constraints(20,7) = 9.0/32.0; - interface_constraints(20,8) = 9.0/16.0; - - initialize_matrices (); -}; - - - -template <> -FEQ2<3>::FEQ2 (const int) : - FEQ1Mapping<3> (0, 0, 0, 27, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - - -template <> -void FEQ2<3>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](1,8) = 1.0; - prolongation[0](2,20) = 1.0; - prolongation[0](3,11) = 1.0; - prolongation[0](4,16) = 1.0; - prolongation[0](5,22) = 1.0; - prolongation[0](6,26) = 1.0; - prolongation[0](7,25) = 1.0; - prolongation[0](8,0) = 3.0/8.0; - prolongation[0](8,1) = -1.0/8.0; - prolongation[0](8,8) = 3.0/4.0; - prolongation[0](9,8) = 3.0/8.0; - prolongation[0](9,10) = -1.0/8.0; - prolongation[0](9,20) = 3.0/4.0; - prolongation[0](10,9) = -1.0/8.0; - prolongation[0](10,11) = 3.0/8.0; - prolongation[0](10,20) = 3.0/4.0; - prolongation[0](11,0) = 3.0/8.0; - prolongation[0](11,3) = -1.0/8.0; - prolongation[0](11,11) = 3.0/4.0; - prolongation[0](12,16) = 3.0/8.0; - prolongation[0](12,17) = -1.0/8.0; - prolongation[0](12,22) = 3.0/4.0; - prolongation[0](13,22) = 3.0/8.0; - prolongation[0](13,24) = -1.0/8.0; - prolongation[0](13,26) = 3.0/4.0; - prolongation[0](14,23) = -1.0/8.0; - prolongation[0](14,25) = 3.0/8.0; - prolongation[0](14,26) = 3.0/4.0; - prolongation[0](15,16) = 3.0/8.0; - prolongation[0](15,19) = -1.0/8.0; - prolongation[0](15,25) = 3.0/4.0; - prolongation[0](16,0) = 3.0/8.0; - prolongation[0](16,4) = -1.0/8.0; - prolongation[0](16,16) = 3.0/4.0; - prolongation[0](17,8) = 3.0/8.0; - prolongation[0](17,12) = -1.0/8.0; - prolongation[0](17,22) = 3.0/4.0; - prolongation[0](18,20) = 3.0/8.0; - prolongation[0](18,21) = -1.0/8.0; - prolongation[0](18,26) = 3.0/4.0; - prolongation[0](19,11) = 3.0/8.0; - prolongation[0](19,15) = -1.0/8.0; - prolongation[0](19,25) = 3.0/4.0; - prolongation[0](20,0) = 9.0/64.0; - prolongation[0](20,1) = -3.0/64.0; - prolongation[0](20,2) = 1.0/64.0; - prolongation[0](20,3) = -3.0/64.0; - prolongation[0](20,8) = 9.0/32.0; - prolongation[0](20,9) = -3.0/32.0; - prolongation[0](20,10) = -3.0/32.0; - prolongation[0](20,11) = 9.0/32.0; - prolongation[0](20,20) = 9.0/16.0; - prolongation[0](21,16) = 9.0/64.0; - prolongation[0](21,17) = -3.0/64.0; - prolongation[0](21,18) = 1.0/64.0; - prolongation[0](21,19) = -3.0/64.0; - prolongation[0](21,22) = 9.0/32.0; - prolongation[0](21,23) = -3.0/32.0; - prolongation[0](21,24) = -3.0/32.0; - prolongation[0](21,25) = 9.0/32.0; - prolongation[0](21,26) = 9.0/16.0; - prolongation[0](22,0) = 9.0/64.0; - prolongation[0](22,1) = -3.0/64.0; - prolongation[0](22,4) = -3.0/64.0; - prolongation[0](22,5) = 1.0/64.0; - prolongation[0](22,8) = 9.0/32.0; - prolongation[0](22,12) = -3.0/32.0; - prolongation[0](22,16) = 9.0/32.0; - prolongation[0](22,17) = -3.0/32.0; - prolongation[0](22,22) = 9.0/16.0; - prolongation[0](23,8) = 9.0/64.0; - prolongation[0](23,10) = -3.0/64.0; - prolongation[0](23,12) = -3.0/64.0; - prolongation[0](23,14) = 1.0/64.0; - prolongation[0](23,20) = 9.0/32.0; - prolongation[0](23,21) = -3.0/32.0; - prolongation[0](23,22) = 9.0/32.0; - prolongation[0](23,24) = -3.0/32.0; - prolongation[0](23,26) = 9.0/16.0; - prolongation[0](24,9) = -3.0/64.0; - prolongation[0](24,11) = 9.0/64.0; - prolongation[0](24,13) = 1.0/64.0; - prolongation[0](24,15) = -3.0/64.0; - prolongation[0](24,20) = 9.0/32.0; - prolongation[0](24,21) = -3.0/32.0; - prolongation[0](24,23) = -3.0/32.0; - prolongation[0](24,25) = 9.0/32.0; - prolongation[0](24,26) = 9.0/16.0; - prolongation[0](25,0) = 9.0/64.0; - prolongation[0](25,3) = -3.0/64.0; - prolongation[0](25,4) = -3.0/64.0; - prolongation[0](25,7) = 1.0/64.0; - prolongation[0](25,11) = 9.0/32.0; - prolongation[0](25,15) = -3.0/32.0; - prolongation[0](25,16) = 9.0/32.0; - prolongation[0](25,19) = -3.0/32.0; - prolongation[0](25,25) = 9.0/16.0; - prolongation[0](26,0) = 27.0/512.0; - prolongation[0](26,1) = -9.0/512.0; - prolongation[0](26,2) = 3.0/512.0; - prolongation[0](26,3) = -9.0/512.0; - prolongation[0](26,4) = -9.0/512.0; - prolongation[0](26,5) = 3.0/512.0; - prolongation[0](26,6) = -1.0/512.0; - prolongation[0](26,7) = 3.0/512.0; - prolongation[0](26,8) = 27.0/256.0; - prolongation[0](26,9) = -9.0/256.0; - prolongation[0](26,10) = -9.0/256.0; - prolongation[0](26,11) = 27.0/256.0; - prolongation[0](26,12) = -9.0/256.0; - prolongation[0](26,13) = 3.0/256.0; - prolongation[0](26,14) = 3.0/256.0; - prolongation[0](26,15) = -9.0/256.0; - prolongation[0](26,16) = 27.0/256.0; - prolongation[0](26,17) = -9.0/256.0; - prolongation[0](26,18) = 3.0/256.0; - prolongation[0](26,19) = -9.0/256.0; - prolongation[0](26,20) = 27.0/128.0; - prolongation[0](26,21) = -9.0/128.0; - prolongation[0](26,22) = 27.0/128.0; - prolongation[0](26,23) = -9.0/128.0; - prolongation[0](26,24) = -9.0/128.0; - prolongation[0](26,25) = 27.0/128.0; - prolongation[0](26,26) = 27.0/64.0; - prolongation[1](0,8) = 1.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,9) = 1.0; - prolongation[1](3,20) = 1.0; - prolongation[1](4,22) = 1.0; - prolongation[1](5,17) = 1.0; - prolongation[1](6,23) = 1.0; - prolongation[1](7,26) = 1.0; - prolongation[1](8,0) = -1.0/8.0; - prolongation[1](8,1) = 3.0/8.0; - prolongation[1](8,8) = 3.0/4.0; - prolongation[1](9,1) = 3.0/8.0; - prolongation[1](9,2) = -1.0/8.0; - prolongation[1](9,9) = 3.0/4.0; - prolongation[1](10,9) = 3.0/8.0; - prolongation[1](10,11) = -1.0/8.0; - prolongation[1](10,20) = 3.0/4.0; - prolongation[1](11,8) = 3.0/8.0; - prolongation[1](11,10) = -1.0/8.0; - prolongation[1](11,20) = 3.0/4.0; - prolongation[1](12,16) = -1.0/8.0; - prolongation[1](12,17) = 3.0/8.0; - prolongation[1](12,22) = 3.0/4.0; - prolongation[1](13,17) = 3.0/8.0; - prolongation[1](13,18) = -1.0/8.0; - prolongation[1](13,23) = 3.0/4.0; - prolongation[1](14,23) = 3.0/8.0; - prolongation[1](14,25) = -1.0/8.0; - prolongation[1](14,26) = 3.0/4.0; - prolongation[1](15,22) = 3.0/8.0; - prolongation[1](15,24) = -1.0/8.0; - prolongation[1](15,26) = 3.0/4.0; - prolongation[1](16,8) = 3.0/8.0; - prolongation[1](16,12) = -1.0/8.0; - prolongation[1](16,22) = 3.0/4.0; - prolongation[1](17,1) = 3.0/8.0; - prolongation[1](17,5) = -1.0/8.0; - prolongation[1](17,17) = 3.0/4.0; - prolongation[1](18,9) = 3.0/8.0; - prolongation[1](18,13) = -1.0/8.0; - prolongation[1](18,23) = 3.0/4.0; - prolongation[1](19,20) = 3.0/8.0; - prolongation[1](19,21) = -1.0/8.0; - prolongation[1](19,26) = 3.0/4.0; - prolongation[1](20,0) = -3.0/64.0; - prolongation[1](20,1) = 9.0/64.0; - prolongation[1](20,2) = -3.0/64.0; - prolongation[1](20,3) = 1.0/64.0; - prolongation[1](20,8) = 9.0/32.0; - prolongation[1](20,9) = 9.0/32.0; - prolongation[1](20,10) = -3.0/32.0; - prolongation[1](20,11) = -3.0/32.0; - prolongation[1](20,20) = 9.0/16.0; - prolongation[1](21,16) = -3.0/64.0; - prolongation[1](21,17) = 9.0/64.0; - prolongation[1](21,18) = -3.0/64.0; - prolongation[1](21,19) = 1.0/64.0; - prolongation[1](21,22) = 9.0/32.0; - prolongation[1](21,23) = 9.0/32.0; - prolongation[1](21,24) = -3.0/32.0; - prolongation[1](21,25) = -3.0/32.0; - prolongation[1](21,26) = 9.0/16.0; - prolongation[1](22,0) = -3.0/64.0; - prolongation[1](22,1) = 9.0/64.0; - prolongation[1](22,4) = 1.0/64.0; - prolongation[1](22,5) = -3.0/64.0; - prolongation[1](22,8) = 9.0/32.0; - prolongation[1](22,12) = -3.0/32.0; - prolongation[1](22,16) = -3.0/32.0; - prolongation[1](22,17) = 9.0/32.0; - prolongation[1](22,22) = 9.0/16.0; - prolongation[1](23,1) = 9.0/64.0; - prolongation[1](23,2) = -3.0/64.0; - prolongation[1](23,5) = -3.0/64.0; - prolongation[1](23,6) = 1.0/64.0; - prolongation[1](23,9) = 9.0/32.0; - prolongation[1](23,13) = -3.0/32.0; - prolongation[1](23,17) = 9.0/32.0; - prolongation[1](23,18) = -3.0/32.0; - prolongation[1](23,23) = 9.0/16.0; - prolongation[1](24,9) = 9.0/64.0; - prolongation[1](24,11) = -3.0/64.0; - prolongation[1](24,13) = -3.0/64.0; - prolongation[1](24,15) = 1.0/64.0; - prolongation[1](24,20) = 9.0/32.0; - prolongation[1](24,21) = -3.0/32.0; - prolongation[1](24,23) = 9.0/32.0; - prolongation[1](24,25) = -3.0/32.0; - prolongation[1](24,26) = 9.0/16.0; - prolongation[1](25,8) = 9.0/64.0; - prolongation[1](25,10) = -3.0/64.0; - prolongation[1](25,12) = -3.0/64.0; - prolongation[1](25,14) = 1.0/64.0; - prolongation[1](25,20) = 9.0/32.0; - prolongation[1](25,21) = -3.0/32.0; - prolongation[1](25,22) = 9.0/32.0; - prolongation[1](25,24) = -3.0/32.0; - prolongation[1](25,26) = 9.0/16.0; - prolongation[1](26,0) = -9.0/512.0; - prolongation[1](26,1) = 27.0/512.0; - prolongation[1](26,2) = -9.0/512.0; - prolongation[1](26,3) = 3.0/512.0; - prolongation[1](26,4) = 3.0/512.0; - prolongation[1](26,5) = -9.0/512.0; - prolongation[1](26,6) = 3.0/512.0; - prolongation[1](26,7) = -1.0/512.0; - prolongation[1](26,8) = 27.0/256.0; - prolongation[1](26,9) = 27.0/256.0; - prolongation[1](26,10) = -9.0/256.0; - prolongation[1](26,11) = -9.0/256.0; - prolongation[1](26,12) = -9.0/256.0; - prolongation[1](26,13) = -9.0/256.0; - prolongation[1](26,14) = 3.0/256.0; - prolongation[1](26,15) = 3.0/256.0; - prolongation[1](26,16) = -9.0/256.0; - prolongation[1](26,17) = 27.0/256.0; - prolongation[1](26,18) = -9.0/256.0; - prolongation[1](26,19) = 3.0/256.0; - prolongation[1](26,20) = 27.0/128.0; - prolongation[1](26,21) = -9.0/128.0; - prolongation[1](26,22) = 27.0/128.0; - prolongation[1](26,23) = 27.0/128.0; - prolongation[1](26,24) = -9.0/128.0; - prolongation[1](26,25) = -9.0/128.0; - prolongation[1](26,26) = 27.0/64.0; - prolongation[2](0,20) = 1.0; - prolongation[2](1,9) = 1.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,10) = 1.0; - prolongation[2](4,26) = 1.0; - prolongation[2](5,23) = 1.0; - prolongation[2](6,18) = 1.0; - prolongation[2](7,24) = 1.0; - prolongation[2](8,9) = 3.0/8.0; - prolongation[2](8,11) = -1.0/8.0; - prolongation[2](8,20) = 3.0/4.0; - prolongation[2](9,1) = -1.0/8.0; - prolongation[2](9,2) = 3.0/8.0; - prolongation[2](9,9) = 3.0/4.0; - prolongation[2](10,2) = 3.0/8.0; - prolongation[2](10,3) = -1.0/8.0; - prolongation[2](10,10) = 3.0/4.0; - prolongation[2](11,8) = -1.0/8.0; - prolongation[2](11,10) = 3.0/8.0; - prolongation[2](11,20) = 3.0/4.0; - prolongation[2](12,23) = 3.0/8.0; - prolongation[2](12,25) = -1.0/8.0; - prolongation[2](12,26) = 3.0/4.0; - prolongation[2](13,17) = -1.0/8.0; - prolongation[2](13,18) = 3.0/8.0; - prolongation[2](13,23) = 3.0/4.0; - prolongation[2](14,18) = 3.0/8.0; - prolongation[2](14,19) = -1.0/8.0; - prolongation[2](14,24) = 3.0/4.0; - prolongation[2](15,22) = -1.0/8.0; - prolongation[2](15,24) = 3.0/8.0; - prolongation[2](15,26) = 3.0/4.0; - prolongation[2](16,20) = 3.0/8.0; - prolongation[2](16,21) = -1.0/8.0; - prolongation[2](16,26) = 3.0/4.0; - prolongation[2](17,9) = 3.0/8.0; - prolongation[2](17,13) = -1.0/8.0; - prolongation[2](17,23) = 3.0/4.0; - prolongation[2](18,2) = 3.0/8.0; - prolongation[2](18,6) = -1.0/8.0; - prolongation[2](18,18) = 3.0/4.0; - prolongation[2](19,10) = 3.0/8.0; - prolongation[2](19,14) = -1.0/8.0; - prolongation[2](19,24) = 3.0/4.0; - prolongation[2](20,0) = 1.0/64.0; - prolongation[2](20,1) = -3.0/64.0; - prolongation[2](20,2) = 9.0/64.0; - prolongation[2](20,3) = -3.0/64.0; - prolongation[2](20,8) = -3.0/32.0; - prolongation[2](20,9) = 9.0/32.0; - prolongation[2](20,10) = 9.0/32.0; - prolongation[2](20,11) = -3.0/32.0; - prolongation[2](20,20) = 9.0/16.0; - prolongation[2](21,16) = 1.0/64.0; - prolongation[2](21,17) = -3.0/64.0; - prolongation[2](21,18) = 9.0/64.0; - prolongation[2](21,19) = -3.0/64.0; - prolongation[2](21,22) = -3.0/32.0; - prolongation[2](21,23) = 9.0/32.0; - prolongation[2](21,24) = 9.0/32.0; - prolongation[2](21,25) = -3.0/32.0; - prolongation[2](21,26) = 9.0/16.0; - prolongation[2](22,9) = 9.0/64.0; - prolongation[2](22,11) = -3.0/64.0; - prolongation[2](22,13) = -3.0/64.0; - prolongation[2](22,15) = 1.0/64.0; - prolongation[2](22,20) = 9.0/32.0; - prolongation[2](22,21) = -3.0/32.0; - prolongation[2](22,23) = 9.0/32.0; - prolongation[2](22,25) = -3.0/32.0; - prolongation[2](22,26) = 9.0/16.0; - prolongation[2](23,1) = -3.0/64.0; - prolongation[2](23,2) = 9.0/64.0; - prolongation[2](23,5) = 1.0/64.0; - prolongation[2](23,6) = -3.0/64.0; - prolongation[2](23,9) = 9.0/32.0; - prolongation[2](23,13) = -3.0/32.0; - prolongation[2](23,17) = -3.0/32.0; - prolongation[2](23,18) = 9.0/32.0; - prolongation[2](23,23) = 9.0/16.0; - prolongation[2](24,2) = 9.0/64.0; - prolongation[2](24,3) = -3.0/64.0; - prolongation[2](24,6) = -3.0/64.0; - prolongation[2](24,7) = 1.0/64.0; - prolongation[2](24,10) = 9.0/32.0; - prolongation[2](24,14) = -3.0/32.0; - prolongation[2](24,18) = 9.0/32.0; - prolongation[2](24,19) = -3.0/32.0; - prolongation[2](24,24) = 9.0/16.0; - prolongation[2](25,8) = -3.0/64.0; - prolongation[2](25,10) = 9.0/64.0; - prolongation[2](25,12) = 1.0/64.0; - prolongation[2](25,14) = -3.0/64.0; - prolongation[2](25,20) = 9.0/32.0; - prolongation[2](25,21) = -3.0/32.0; - prolongation[2](25,22) = -3.0/32.0; - prolongation[2](25,24) = 9.0/32.0; - prolongation[2](25,26) = 9.0/16.0; - prolongation[2](26,0) = 3.0/512.0; - prolongation[2](26,1) = -9.0/512.0; - prolongation[2](26,2) = 27.0/512.0; - prolongation[2](26,3) = -9.0/512.0; - prolongation[2](26,4) = -1.0/512.0; - prolongation[2](26,5) = 3.0/512.0; - prolongation[2](26,6) = -9.0/512.0; - prolongation[2](26,7) = 3.0/512.0; - prolongation[2](26,8) = -9.0/256.0; - prolongation[2](26,9) = 27.0/256.0; - prolongation[2](26,10) = 27.0/256.0; - prolongation[2](26,11) = -9.0/256.0; - prolongation[2](26,12) = 3.0/256.0; - prolongation[2](26,13) = -9.0/256.0; - prolongation[2](26,14) = -9.0/256.0; - prolongation[2](26,15) = 3.0/256.0; - prolongation[2](26,16) = 3.0/256.0; - prolongation[2](26,17) = -9.0/256.0; - prolongation[2](26,18) = 27.0/256.0; - prolongation[2](26,19) = -9.0/256.0; - prolongation[2](26,20) = 27.0/128.0; - prolongation[2](26,21) = -9.0/128.0; - prolongation[2](26,22) = -9.0/128.0; - prolongation[2](26,23) = 27.0/128.0; - prolongation[2](26,24) = 27.0/128.0; - prolongation[2](26,25) = -9.0/128.0; - prolongation[2](26,26) = 27.0/64.0; - prolongation[3](0,11) = 1.0; - prolongation[3](1,20) = 1.0; - prolongation[3](2,10) = 1.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,25) = 1.0; - prolongation[3](5,26) = 1.0; - prolongation[3](6,24) = 1.0; - prolongation[3](7,19) = 1.0; - prolongation[3](8,9) = -1.0/8.0; - prolongation[3](8,11) = 3.0/8.0; - prolongation[3](8,20) = 3.0/4.0; - prolongation[3](9,8) = -1.0/8.0; - prolongation[3](9,10) = 3.0/8.0; - prolongation[3](9,20) = 3.0/4.0; - prolongation[3](10,2) = -1.0/8.0; - prolongation[3](10,3) = 3.0/8.0; - prolongation[3](10,10) = 3.0/4.0; - prolongation[3](11,0) = -1.0/8.0; - prolongation[3](11,3) = 3.0/8.0; - prolongation[3](11,11) = 3.0/4.0; - prolongation[3](12,23) = -1.0/8.0; - prolongation[3](12,25) = 3.0/8.0; - prolongation[3](12,26) = 3.0/4.0; - prolongation[3](13,22) = -1.0/8.0; - prolongation[3](13,24) = 3.0/8.0; - prolongation[3](13,26) = 3.0/4.0; - prolongation[3](14,18) = -1.0/8.0; - prolongation[3](14,19) = 3.0/8.0; - prolongation[3](14,24) = 3.0/4.0; - prolongation[3](15,16) = -1.0/8.0; - prolongation[3](15,19) = 3.0/8.0; - prolongation[3](15,25) = 3.0/4.0; - prolongation[3](16,11) = 3.0/8.0; - prolongation[3](16,15) = -1.0/8.0; - prolongation[3](16,25) = 3.0/4.0; - prolongation[3](17,20) = 3.0/8.0; - prolongation[3](17,21) = -1.0/8.0; - prolongation[3](17,26) = 3.0/4.0; - prolongation[3](18,10) = 3.0/8.0; - prolongation[3](18,14) = -1.0/8.0; - prolongation[3](18,24) = 3.0/4.0; - prolongation[3](19,3) = 3.0/8.0; - prolongation[3](19,7) = -1.0/8.0; - prolongation[3](19,19) = 3.0/4.0; - prolongation[3](20,0) = -3.0/64.0; - prolongation[3](20,1) = 1.0/64.0; - prolongation[3](20,2) = -3.0/64.0; - prolongation[3](20,3) = 9.0/64.0; - prolongation[3](20,8) = -3.0/32.0; - prolongation[3](20,9) = -3.0/32.0; - prolongation[3](20,10) = 9.0/32.0; - prolongation[3](20,11) = 9.0/32.0; - prolongation[3](20,20) = 9.0/16.0; - prolongation[3](21,16) = -3.0/64.0; - prolongation[3](21,17) = 1.0/64.0; - prolongation[3](21,18) = -3.0/64.0; - prolongation[3](21,19) = 9.0/64.0; - prolongation[3](21,22) = -3.0/32.0; - prolongation[3](21,23) = -3.0/32.0; - prolongation[3](21,24) = 9.0/32.0; - prolongation[3](21,25) = 9.0/32.0; - prolongation[3](21,26) = 9.0/16.0; - prolongation[3](22,9) = -3.0/64.0; - prolongation[3](22,11) = 9.0/64.0; - prolongation[3](22,13) = 1.0/64.0; - prolongation[3](22,15) = -3.0/64.0; - prolongation[3](22,20) = 9.0/32.0; - prolongation[3](22,21) = -3.0/32.0; - prolongation[3](22,23) = -3.0/32.0; - prolongation[3](22,25) = 9.0/32.0; - prolongation[3](22,26) = 9.0/16.0; - prolongation[3](23,8) = -3.0/64.0; - prolongation[3](23,10) = 9.0/64.0; - prolongation[3](23,12) = 1.0/64.0; - prolongation[3](23,14) = -3.0/64.0; - prolongation[3](23,20) = 9.0/32.0; - prolongation[3](23,21) = -3.0/32.0; - prolongation[3](23,22) = -3.0/32.0; - prolongation[3](23,24) = 9.0/32.0; - prolongation[3](23,26) = 9.0/16.0; - prolongation[3](24,2) = -3.0/64.0; - prolongation[3](24,3) = 9.0/64.0; - prolongation[3](24,6) = 1.0/64.0; - prolongation[3](24,7) = -3.0/64.0; - prolongation[3](24,10) = 9.0/32.0; - prolongation[3](24,14) = -3.0/32.0; - prolongation[3](24,18) = -3.0/32.0; - prolongation[3](24,19) = 9.0/32.0; - prolongation[3](24,24) = 9.0/16.0; - prolongation[3](25,0) = -3.0/64.0; - prolongation[3](25,3) = 9.0/64.0; - prolongation[3](25,4) = 1.0/64.0; - prolongation[3](25,7) = -3.0/64.0; - prolongation[3](25,11) = 9.0/32.0; - prolongation[3](25,15) = -3.0/32.0; - prolongation[3](25,16) = -3.0/32.0; - prolongation[3](25,19) = 9.0/32.0; - prolongation[3](25,25) = 9.0/16.0; - prolongation[3](26,0) = -9.0/512.0; - prolongation[3](26,1) = 3.0/512.0; - prolongation[3](26,2) = -9.0/512.0; - prolongation[3](26,3) = 27.0/512.0; - prolongation[3](26,4) = 3.0/512.0; - prolongation[3](26,5) = -1.0/512.0; - prolongation[3](26,6) = 3.0/512.0; - prolongation[3](26,7) = -9.0/512.0; - prolongation[3](26,8) = -9.0/256.0; - prolongation[3](26,9) = -9.0/256.0; - prolongation[3](26,10) = 27.0/256.0; - prolongation[3](26,11) = 27.0/256.0; - prolongation[3](26,12) = 3.0/256.0; - prolongation[3](26,13) = 3.0/256.0; - prolongation[3](26,14) = -9.0/256.0; - prolongation[3](26,15) = -9.0/256.0; - prolongation[3](26,16) = -9.0/256.0; - prolongation[3](26,17) = 3.0/256.0; - prolongation[3](26,18) = -9.0/256.0; - prolongation[3](26,19) = 27.0/256.0; - prolongation[3](26,20) = 27.0/128.0; - prolongation[3](26,21) = -9.0/128.0; - prolongation[3](26,22) = -9.0/128.0; - prolongation[3](26,23) = -9.0/128.0; - prolongation[3](26,24) = 27.0/128.0; - prolongation[3](26,25) = 27.0/128.0; - prolongation[3](26,26) = 27.0/64.0; - prolongation[4](0,16) = 1.0; - prolongation[4](1,22) = 1.0; - prolongation[4](2,26) = 1.0; - prolongation[4](3,25) = 1.0; - prolongation[4](4,4) = 1.0; - prolongation[4](5,12) = 1.0; - prolongation[4](6,21) = 1.0; - prolongation[4](7,15) = 1.0; - prolongation[4](8,16) = 3.0/8.0; - prolongation[4](8,17) = -1.0/8.0; - prolongation[4](8,22) = 3.0/4.0; - prolongation[4](9,22) = 3.0/8.0; - prolongation[4](9,24) = -1.0/8.0; - prolongation[4](9,26) = 3.0/4.0; - prolongation[4](10,23) = -1.0/8.0; - prolongation[4](10,25) = 3.0/8.0; - prolongation[4](10,26) = 3.0/4.0; - prolongation[4](11,16) = 3.0/8.0; - prolongation[4](11,19) = -1.0/8.0; - prolongation[4](11,25) = 3.0/4.0; - prolongation[4](12,4) = 3.0/8.0; - prolongation[4](12,5) = -1.0/8.0; - prolongation[4](12,12) = 3.0/4.0; - prolongation[4](13,12) = 3.0/8.0; - prolongation[4](13,14) = -1.0/8.0; - prolongation[4](13,21) = 3.0/4.0; - prolongation[4](14,13) = -1.0/8.0; - prolongation[4](14,15) = 3.0/8.0; - prolongation[4](14,21) = 3.0/4.0; - prolongation[4](15,4) = 3.0/8.0; - prolongation[4](15,7) = -1.0/8.0; - prolongation[4](15,15) = 3.0/4.0; - prolongation[4](16,0) = -1.0/8.0; - prolongation[4](16,4) = 3.0/8.0; - prolongation[4](16,16) = 3.0/4.0; - prolongation[4](17,8) = -1.0/8.0; - prolongation[4](17,12) = 3.0/8.0; - prolongation[4](17,22) = 3.0/4.0; - prolongation[4](18,20) = -1.0/8.0; - prolongation[4](18,21) = 3.0/8.0; - prolongation[4](18,26) = 3.0/4.0; - prolongation[4](19,11) = -1.0/8.0; - prolongation[4](19,15) = 3.0/8.0; - prolongation[4](19,25) = 3.0/4.0; - prolongation[4](20,16) = 9.0/64.0; - prolongation[4](20,17) = -3.0/64.0; - prolongation[4](20,18) = 1.0/64.0; - prolongation[4](20,19) = -3.0/64.0; - prolongation[4](20,22) = 9.0/32.0; - prolongation[4](20,23) = -3.0/32.0; - prolongation[4](20,24) = -3.0/32.0; - prolongation[4](20,25) = 9.0/32.0; - prolongation[4](20,26) = 9.0/16.0; - prolongation[4](21,4) = 9.0/64.0; - prolongation[4](21,5) = -3.0/64.0; - prolongation[4](21,6) = 1.0/64.0; - prolongation[4](21,7) = -3.0/64.0; - prolongation[4](21,12) = 9.0/32.0; - prolongation[4](21,13) = -3.0/32.0; - prolongation[4](21,14) = -3.0/32.0; - prolongation[4](21,15) = 9.0/32.0; - prolongation[4](21,21) = 9.0/16.0; - prolongation[4](22,0) = -3.0/64.0; - prolongation[4](22,1) = 1.0/64.0; - prolongation[4](22,4) = 9.0/64.0; - prolongation[4](22,5) = -3.0/64.0; - prolongation[4](22,8) = -3.0/32.0; - prolongation[4](22,12) = 9.0/32.0; - prolongation[4](22,16) = 9.0/32.0; - prolongation[4](22,17) = -3.0/32.0; - prolongation[4](22,22) = 9.0/16.0; - prolongation[4](23,8) = -3.0/64.0; - prolongation[4](23,10) = 1.0/64.0; - prolongation[4](23,12) = 9.0/64.0; - prolongation[4](23,14) = -3.0/64.0; - prolongation[4](23,20) = -3.0/32.0; - prolongation[4](23,21) = 9.0/32.0; - prolongation[4](23,22) = 9.0/32.0; - prolongation[4](23,24) = -3.0/32.0; - prolongation[4](23,26) = 9.0/16.0; - prolongation[4](24,9) = 1.0/64.0; - prolongation[4](24,11) = -3.0/64.0; - prolongation[4](24,13) = -3.0/64.0; - prolongation[4](24,15) = 9.0/64.0; - prolongation[4](24,20) = -3.0/32.0; - prolongation[4](24,21) = 9.0/32.0; - prolongation[4](24,23) = -3.0/32.0; - prolongation[4](24,25) = 9.0/32.0; - prolongation[4](24,26) = 9.0/16.0; - prolongation[4](25,0) = -3.0/64.0; - prolongation[4](25,3) = 1.0/64.0; - prolongation[4](25,4) = 9.0/64.0; - prolongation[4](25,7) = -3.0/64.0; - prolongation[4](25,11) = -3.0/32.0; - prolongation[4](25,15) = 9.0/32.0; - prolongation[4](25,16) = 9.0/32.0; - prolongation[4](25,19) = -3.0/32.0; - prolongation[4](25,25) = 9.0/16.0; - prolongation[4](26,0) = -9.0/512.0; - prolongation[4](26,1) = 3.0/512.0; - prolongation[4](26,2) = -1.0/512.0; - prolongation[4](26,3) = 3.0/512.0; - prolongation[4](26,4) = 27.0/512.0; - prolongation[4](26,5) = -9.0/512.0; - prolongation[4](26,6) = 3.0/512.0; - prolongation[4](26,7) = -9.0/512.0; - prolongation[4](26,8) = -9.0/256.0; - prolongation[4](26,9) = 3.0/256.0; - prolongation[4](26,10) = 3.0/256.0; - prolongation[4](26,11) = -9.0/256.0; - prolongation[4](26,12) = 27.0/256.0; - prolongation[4](26,13) = -9.0/256.0; - prolongation[4](26,14) = -9.0/256.0; - prolongation[4](26,15) = 27.0/256.0; - prolongation[4](26,16) = 27.0/256.0; - prolongation[4](26,17) = -9.0/256.0; - prolongation[4](26,18) = 3.0/256.0; - prolongation[4](26,19) = -9.0/256.0; - prolongation[4](26,20) = -9.0/128.0; - prolongation[4](26,21) = 27.0/128.0; - prolongation[4](26,22) = 27.0/128.0; - prolongation[4](26,23) = -9.0/128.0; - prolongation[4](26,24) = -9.0/128.0; - prolongation[4](26,25) = 27.0/128.0; - prolongation[4](26,26) = 27.0/64.0; - prolongation[5](0,22) = 1.0; - prolongation[5](1,17) = 1.0; - prolongation[5](2,23) = 1.0; - prolongation[5](3,26) = 1.0; - prolongation[5](4,12) = 1.0; - prolongation[5](5,5) = 1.0; - prolongation[5](6,13) = 1.0; - prolongation[5](7,21) = 1.0; - prolongation[5](8,16) = -1.0/8.0; - prolongation[5](8,17) = 3.0/8.0; - prolongation[5](8,22) = 3.0/4.0; - prolongation[5](9,17) = 3.0/8.0; - prolongation[5](9,18) = -1.0/8.0; - prolongation[5](9,23) = 3.0/4.0; - prolongation[5](10,23) = 3.0/8.0; - prolongation[5](10,25) = -1.0/8.0; - prolongation[5](10,26) = 3.0/4.0; - prolongation[5](11,22) = 3.0/8.0; - prolongation[5](11,24) = -1.0/8.0; - prolongation[5](11,26) = 3.0/4.0; - prolongation[5](12,4) = -1.0/8.0; - prolongation[5](12,5) = 3.0/8.0; - prolongation[5](12,12) = 3.0/4.0; - prolongation[5](13,5) = 3.0/8.0; - prolongation[5](13,6) = -1.0/8.0; - prolongation[5](13,13) = 3.0/4.0; - prolongation[5](14,13) = 3.0/8.0; - prolongation[5](14,15) = -1.0/8.0; - prolongation[5](14,21) = 3.0/4.0; - prolongation[5](15,12) = 3.0/8.0; - prolongation[5](15,14) = -1.0/8.0; - prolongation[5](15,21) = 3.0/4.0; - prolongation[5](16,8) = -1.0/8.0; - prolongation[5](16,12) = 3.0/8.0; - prolongation[5](16,22) = 3.0/4.0; - prolongation[5](17,1) = -1.0/8.0; - prolongation[5](17,5) = 3.0/8.0; - prolongation[5](17,17) = 3.0/4.0; - prolongation[5](18,9) = -1.0/8.0; - prolongation[5](18,13) = 3.0/8.0; - prolongation[5](18,23) = 3.0/4.0; - prolongation[5](19,20) = -1.0/8.0; - prolongation[5](19,21) = 3.0/8.0; - prolongation[5](19,26) = 3.0/4.0; - prolongation[5](20,16) = -3.0/64.0; - prolongation[5](20,17) = 9.0/64.0; - prolongation[5](20,18) = -3.0/64.0; - prolongation[5](20,19) = 1.0/64.0; - prolongation[5](20,22) = 9.0/32.0; - prolongation[5](20,23) = 9.0/32.0; - prolongation[5](20,24) = -3.0/32.0; - prolongation[5](20,25) = -3.0/32.0; - prolongation[5](20,26) = 9.0/16.0; - prolongation[5](21,4) = -3.0/64.0; - prolongation[5](21,5) = 9.0/64.0; - prolongation[5](21,6) = -3.0/64.0; - prolongation[5](21,7) = 1.0/64.0; - prolongation[5](21,12) = 9.0/32.0; - prolongation[5](21,13) = 9.0/32.0; - prolongation[5](21,14) = -3.0/32.0; - prolongation[5](21,15) = -3.0/32.0; - prolongation[5](21,21) = 9.0/16.0; - prolongation[5](22,0) = 1.0/64.0; - prolongation[5](22,1) = -3.0/64.0; - prolongation[5](22,4) = -3.0/64.0; - prolongation[5](22,5) = 9.0/64.0; - prolongation[5](22,8) = -3.0/32.0; - prolongation[5](22,12) = 9.0/32.0; - prolongation[5](22,16) = -3.0/32.0; - prolongation[5](22,17) = 9.0/32.0; - prolongation[5](22,22) = 9.0/16.0; - prolongation[5](23,1) = -3.0/64.0; - prolongation[5](23,2) = 1.0/64.0; - prolongation[5](23,5) = 9.0/64.0; - prolongation[5](23,6) = -3.0/64.0; - prolongation[5](23,9) = -3.0/32.0; - prolongation[5](23,13) = 9.0/32.0; - prolongation[5](23,17) = 9.0/32.0; - prolongation[5](23,18) = -3.0/32.0; - prolongation[5](23,23) = 9.0/16.0; - prolongation[5](24,9) = -3.0/64.0; - prolongation[5](24,11) = 1.0/64.0; - prolongation[5](24,13) = 9.0/64.0; - prolongation[5](24,15) = -3.0/64.0; - prolongation[5](24,20) = -3.0/32.0; - prolongation[5](24,21) = 9.0/32.0; - prolongation[5](24,23) = 9.0/32.0; - prolongation[5](24,25) = -3.0/32.0; - prolongation[5](24,26) = 9.0/16.0; - prolongation[5](25,8) = -3.0/64.0; - prolongation[5](25,10) = 1.0/64.0; - prolongation[5](25,12) = 9.0/64.0; - prolongation[5](25,14) = -3.0/64.0; - prolongation[5](25,20) = -3.0/32.0; - prolongation[5](25,21) = 9.0/32.0; - prolongation[5](25,22) = 9.0/32.0; - prolongation[5](25,24) = -3.0/32.0; - prolongation[5](25,26) = 9.0/16.0; - prolongation[5](26,0) = 3.0/512.0; - prolongation[5](26,1) = -9.0/512.0; - prolongation[5](26,2) = 3.0/512.0; - prolongation[5](26,3) = -1.0/512.0; - prolongation[5](26,4) = -9.0/512.0; - prolongation[5](26,5) = 27.0/512.0; - prolongation[5](26,6) = -9.0/512.0; - prolongation[5](26,7) = 3.0/512.0; - prolongation[5](26,8) = -9.0/256.0; - prolongation[5](26,9) = -9.0/256.0; - prolongation[5](26,10) = 3.0/256.0; - prolongation[5](26,11) = 3.0/256.0; - prolongation[5](26,12) = 27.0/256.0; - prolongation[5](26,13) = 27.0/256.0; - prolongation[5](26,14) = -9.0/256.0; - prolongation[5](26,15) = -9.0/256.0; - prolongation[5](26,16) = -9.0/256.0; - prolongation[5](26,17) = 27.0/256.0; - prolongation[5](26,18) = -9.0/256.0; - prolongation[5](26,19) = 3.0/256.0; - prolongation[5](26,20) = -9.0/128.0; - prolongation[5](26,21) = 27.0/128.0; - prolongation[5](26,22) = 27.0/128.0; - prolongation[5](26,23) = 27.0/128.0; - prolongation[5](26,24) = -9.0/128.0; - prolongation[5](26,25) = -9.0/128.0; - prolongation[5](26,26) = 27.0/64.0; - prolongation[6](0,26) = 1.0; - prolongation[6](1,23) = 1.0; - prolongation[6](2,18) = 1.0; - prolongation[6](3,24) = 1.0; - prolongation[6](4,21) = 1.0; - prolongation[6](5,13) = 1.0; - prolongation[6](6,6) = 1.0; - prolongation[6](7,14) = 1.0; - prolongation[6](8,23) = 3.0/8.0; - prolongation[6](8,25) = -1.0/8.0; - prolongation[6](8,26) = 3.0/4.0; - prolongation[6](9,17) = -1.0/8.0; - prolongation[6](9,18) = 3.0/8.0; - prolongation[6](9,23) = 3.0/4.0; - prolongation[6](10,18) = 3.0/8.0; - prolongation[6](10,19) = -1.0/8.0; - prolongation[6](10,24) = 3.0/4.0; - prolongation[6](11,22) = -1.0/8.0; - prolongation[6](11,24) = 3.0/8.0; - prolongation[6](11,26) = 3.0/4.0; - prolongation[6](12,13) = 3.0/8.0; - prolongation[6](12,15) = -1.0/8.0; - prolongation[6](12,21) = 3.0/4.0; - prolongation[6](13,5) = -1.0/8.0; - prolongation[6](13,6) = 3.0/8.0; - prolongation[6](13,13) = 3.0/4.0; - prolongation[6](14,6) = 3.0/8.0; - prolongation[6](14,7) = -1.0/8.0; - prolongation[6](14,14) = 3.0/4.0; - prolongation[6](15,12) = -1.0/8.0; - prolongation[6](15,14) = 3.0/8.0; - prolongation[6](15,21) = 3.0/4.0; - prolongation[6](16,20) = -1.0/8.0; - prolongation[6](16,21) = 3.0/8.0; - prolongation[6](16,26) = 3.0/4.0; - prolongation[6](17,9) = -1.0/8.0; - prolongation[6](17,13) = 3.0/8.0; - prolongation[6](17,23) = 3.0/4.0; - prolongation[6](18,2) = -1.0/8.0; - prolongation[6](18,6) = 3.0/8.0; - prolongation[6](18,18) = 3.0/4.0; - prolongation[6](19,10) = -1.0/8.0; - prolongation[6](19,14) = 3.0/8.0; - prolongation[6](19,24) = 3.0/4.0; - prolongation[6](20,16) = 1.0/64.0; - prolongation[6](20,17) = -3.0/64.0; - prolongation[6](20,18) = 9.0/64.0; - prolongation[6](20,19) = -3.0/64.0; - prolongation[6](20,22) = -3.0/32.0; - prolongation[6](20,23) = 9.0/32.0; - prolongation[6](20,24) = 9.0/32.0; - prolongation[6](20,25) = -3.0/32.0; - prolongation[6](20,26) = 9.0/16.0; - prolongation[6](21,4) = 1.0/64.0; - prolongation[6](21,5) = -3.0/64.0; - prolongation[6](21,6) = 9.0/64.0; - prolongation[6](21,7) = -3.0/64.0; - prolongation[6](21,12) = -3.0/32.0; - prolongation[6](21,13) = 9.0/32.0; - prolongation[6](21,14) = 9.0/32.0; - prolongation[6](21,15) = -3.0/32.0; - prolongation[6](21,21) = 9.0/16.0; - prolongation[6](22,9) = -3.0/64.0; - prolongation[6](22,11) = 1.0/64.0; - prolongation[6](22,13) = 9.0/64.0; - prolongation[6](22,15) = -3.0/64.0; - prolongation[6](22,20) = -3.0/32.0; - prolongation[6](22,21) = 9.0/32.0; - prolongation[6](22,23) = 9.0/32.0; - prolongation[6](22,25) = -3.0/32.0; - prolongation[6](22,26) = 9.0/16.0; - prolongation[6](23,1) = 1.0/64.0; - prolongation[6](23,2) = -3.0/64.0; - prolongation[6](23,5) = -3.0/64.0; - prolongation[6](23,6) = 9.0/64.0; - prolongation[6](23,9) = -3.0/32.0; - prolongation[6](23,13) = 9.0/32.0; - prolongation[6](23,17) = -3.0/32.0; - prolongation[6](23,18) = 9.0/32.0; - prolongation[6](23,23) = 9.0/16.0; - prolongation[6](24,2) = -3.0/64.0; - prolongation[6](24,3) = 1.0/64.0; - prolongation[6](24,6) = 9.0/64.0; - prolongation[6](24,7) = -3.0/64.0; - prolongation[6](24,10) = -3.0/32.0; - prolongation[6](24,14) = 9.0/32.0; - prolongation[6](24,18) = 9.0/32.0; - prolongation[6](24,19) = -3.0/32.0; - prolongation[6](24,24) = 9.0/16.0; - prolongation[6](25,8) = 1.0/64.0; - prolongation[6](25,10) = -3.0/64.0; - prolongation[6](25,12) = -3.0/64.0; - prolongation[6](25,14) = 9.0/64.0; - prolongation[6](25,20) = -3.0/32.0; - prolongation[6](25,21) = 9.0/32.0; - prolongation[6](25,22) = -3.0/32.0; - prolongation[6](25,24) = 9.0/32.0; - prolongation[6](25,26) = 9.0/16.0; - prolongation[6](26,0) = -1.0/512.0; - prolongation[6](26,1) = 3.0/512.0; - prolongation[6](26,2) = -9.0/512.0; - prolongation[6](26,3) = 3.0/512.0; - prolongation[6](26,4) = 3.0/512.0; - prolongation[6](26,5) = -9.0/512.0; - prolongation[6](26,6) = 27.0/512.0; - prolongation[6](26,7) = -9.0/512.0; - prolongation[6](26,8) = 3.0/256.0; - prolongation[6](26,9) = -9.0/256.0; - prolongation[6](26,10) = -9.0/256.0; - prolongation[6](26,11) = 3.0/256.0; - prolongation[6](26,12) = -9.0/256.0; - prolongation[6](26,13) = 27.0/256.0; - prolongation[6](26,14) = 27.0/256.0; - prolongation[6](26,15) = -9.0/256.0; - prolongation[6](26,16) = 3.0/256.0; - prolongation[6](26,17) = -9.0/256.0; - prolongation[6](26,18) = 27.0/256.0; - prolongation[6](26,19) = -9.0/256.0; - prolongation[6](26,20) = -9.0/128.0; - prolongation[6](26,21) = 27.0/128.0; - prolongation[6](26,22) = -9.0/128.0; - prolongation[6](26,23) = 27.0/128.0; - prolongation[6](26,24) = 27.0/128.0; - prolongation[6](26,25) = -9.0/128.0; - prolongation[6](26,26) = 27.0/64.0; - prolongation[7](0,25) = 1.0; - prolongation[7](1,26) = 1.0; - prolongation[7](2,24) = 1.0; - prolongation[7](3,19) = 1.0; - prolongation[7](4,15) = 1.0; - prolongation[7](5,21) = 1.0; - prolongation[7](6,14) = 1.0; - prolongation[7](7,7) = 1.0; - prolongation[7](8,23) = -1.0/8.0; - prolongation[7](8,25) = 3.0/8.0; - prolongation[7](8,26) = 3.0/4.0; - prolongation[7](9,22) = -1.0/8.0; - prolongation[7](9,24) = 3.0/8.0; - prolongation[7](9,26) = 3.0/4.0; - prolongation[7](10,18) = -1.0/8.0; - prolongation[7](10,19) = 3.0/8.0; - prolongation[7](10,24) = 3.0/4.0; - prolongation[7](11,16) = -1.0/8.0; - prolongation[7](11,19) = 3.0/8.0; - prolongation[7](11,25) = 3.0/4.0; - prolongation[7](12,13) = -1.0/8.0; - prolongation[7](12,15) = 3.0/8.0; - prolongation[7](12,21) = 3.0/4.0; - prolongation[7](13,12) = -1.0/8.0; - prolongation[7](13,14) = 3.0/8.0; - prolongation[7](13,21) = 3.0/4.0; - prolongation[7](14,6) = -1.0/8.0; - prolongation[7](14,7) = 3.0/8.0; - prolongation[7](14,14) = 3.0/4.0; - prolongation[7](15,4) = -1.0/8.0; - prolongation[7](15,7) = 3.0/8.0; - prolongation[7](15,15) = 3.0/4.0; - prolongation[7](16,11) = -1.0/8.0; - prolongation[7](16,15) = 3.0/8.0; - prolongation[7](16,25) = 3.0/4.0; - prolongation[7](17,20) = -1.0/8.0; - prolongation[7](17,21) = 3.0/8.0; - prolongation[7](17,26) = 3.0/4.0; - prolongation[7](18,10) = -1.0/8.0; - prolongation[7](18,14) = 3.0/8.0; - prolongation[7](18,24) = 3.0/4.0; - prolongation[7](19,3) = -1.0/8.0; - prolongation[7](19,7) = 3.0/8.0; - prolongation[7](19,19) = 3.0/4.0; - prolongation[7](20,16) = -3.0/64.0; - prolongation[7](20,17) = 1.0/64.0; - prolongation[7](20,18) = -3.0/64.0; - prolongation[7](20,19) = 9.0/64.0; - prolongation[7](20,22) = -3.0/32.0; - prolongation[7](20,23) = -3.0/32.0; - prolongation[7](20,24) = 9.0/32.0; - prolongation[7](20,25) = 9.0/32.0; - prolongation[7](20,26) = 9.0/16.0; - prolongation[7](21,4) = -3.0/64.0; - prolongation[7](21,5) = 1.0/64.0; - prolongation[7](21,6) = -3.0/64.0; - prolongation[7](21,7) = 9.0/64.0; - prolongation[7](21,12) = -3.0/32.0; - prolongation[7](21,13) = -3.0/32.0; - prolongation[7](21,14) = 9.0/32.0; - prolongation[7](21,15) = 9.0/32.0; - prolongation[7](21,21) = 9.0/16.0; - prolongation[7](22,9) = 1.0/64.0; - prolongation[7](22,11) = -3.0/64.0; - prolongation[7](22,13) = -3.0/64.0; - prolongation[7](22,15) = 9.0/64.0; - prolongation[7](22,20) = -3.0/32.0; - prolongation[7](22,21) = 9.0/32.0; - prolongation[7](22,23) = -3.0/32.0; - prolongation[7](22,25) = 9.0/32.0; - prolongation[7](22,26) = 9.0/16.0; - prolongation[7](23,8) = 1.0/64.0; - prolongation[7](23,10) = -3.0/64.0; - prolongation[7](23,12) = -3.0/64.0; - prolongation[7](23,14) = 9.0/64.0; - prolongation[7](23,20) = -3.0/32.0; - prolongation[7](23,21) = 9.0/32.0; - prolongation[7](23,22) = -3.0/32.0; - prolongation[7](23,24) = 9.0/32.0; - prolongation[7](23,26) = 9.0/16.0; - prolongation[7](24,2) = 1.0/64.0; - prolongation[7](24,3) = -3.0/64.0; - prolongation[7](24,6) = -3.0/64.0; - prolongation[7](24,7) = 9.0/64.0; - prolongation[7](24,10) = -3.0/32.0; - prolongation[7](24,14) = 9.0/32.0; - prolongation[7](24,18) = -3.0/32.0; - prolongation[7](24,19) = 9.0/32.0; - prolongation[7](24,24) = 9.0/16.0; - prolongation[7](25,0) = 1.0/64.0; - prolongation[7](25,3) = -3.0/64.0; - prolongation[7](25,4) = -3.0/64.0; - prolongation[7](25,7) = 9.0/64.0; - prolongation[7](25,11) = -3.0/32.0; - prolongation[7](25,15) = 9.0/32.0; - prolongation[7](25,16) = -3.0/32.0; - prolongation[7](25,19) = 9.0/32.0; - prolongation[7](25,25) = 9.0/16.0; - prolongation[7](26,0) = 3.0/512.0; - prolongation[7](26,1) = -1.0/512.0; - prolongation[7](26,2) = 3.0/512.0; - prolongation[7](26,3) = -9.0/512.0; - prolongation[7](26,4) = -9.0/512.0; - prolongation[7](26,5) = 3.0/512.0; - prolongation[7](26,6) = -9.0/512.0; - prolongation[7](26,7) = 27.0/512.0; - prolongation[7](26,8) = 3.0/256.0; - prolongation[7](26,9) = 3.0/256.0; - prolongation[7](26,10) = -9.0/256.0; - prolongation[7](26,11) = -9.0/256.0; - prolongation[7](26,12) = -9.0/256.0; - prolongation[7](26,13) = -9.0/256.0; - prolongation[7](26,14) = 27.0/256.0; - prolongation[7](26,15) = 27.0/256.0; - prolongation[7](26,16) = -9.0/256.0; - prolongation[7](26,17) = 3.0/256.0; - prolongation[7](26,18) = -9.0/256.0; - prolongation[7](26,19) = 27.0/256.0; - prolongation[7](26,20) = -9.0/128.0; - prolongation[7](26,21) = 27.0/128.0; - prolongation[7](26,22) = -9.0/128.0; - prolongation[7](26,23) = -9.0/128.0; - prolongation[7](26,24) = 27.0/128.0; - prolongation[7](26,25) = 27.0/128.0; - prolongation[7](26,26) = 27.0/64.0; - - restriction[0](0,0) = 1.0; - restriction[0](8,1) = 1.0; - restriction[0](11,3) = 1.0; - restriction[0](16,4) = 1.0; - restriction[0](20,2) = 1.0; - restriction[0](22,5) = 1.0; - restriction[0](25,7) = 1.0; - restriction[0](26,6) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](8,0) = 1.0; - restriction[1](9,2) = 1.0; - restriction[1](17,5) = 1.0; - restriction[1](20,3) = 1.0; - restriction[1](22,4) = 1.0; - restriction[1](23,6) = 1.0; - restriction[1](26,7) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](9,1) = 1.0; - restriction[2](10,3) = 1.0; - restriction[2](18,6) = 1.0; - restriction[2](20,0) = 1.0; - restriction[2](23,5) = 1.0; - restriction[2](24,7) = 1.0; - restriction[2](26,4) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](10,2) = 1.0; - restriction[3](11,0) = 1.0; - restriction[3](19,7) = 1.0; - restriction[3](20,1) = 1.0; - restriction[3](24,6) = 1.0; - restriction[3](25,4) = 1.0; - restriction[3](26,5) = 1.0; - restriction[4](4,4) = 1.0; - restriction[4](12,5) = 1.0; - restriction[4](15,7) = 1.0; - restriction[4](16,0) = 1.0; - restriction[4](21,6) = 1.0; - restriction[4](22,1) = 1.0; - restriction[4](25,3) = 1.0; - restriction[4](26,2) = 1.0; - restriction[5](5,5) = 1.0; - restriction[5](12,4) = 1.0; - restriction[5](13,6) = 1.0; - restriction[5](17,1) = 1.0; - restriction[5](21,7) = 1.0; - restriction[5](22,0) = 1.0; - restriction[5](23,2) = 1.0; - restriction[5](26,3) = 1.0; - restriction[6](6,6) = 1.0; - restriction[6](13,5) = 1.0; - restriction[6](14,7) = 1.0; - restriction[6](18,2) = 1.0; - restriction[6](21,4) = 1.0; - restriction[6](23,1) = 1.0; - restriction[6](24,3) = 1.0; - restriction[6](26,0) = 1.0; - restriction[7](7,7) = 1.0; - restriction[7](14,6) = 1.0; - restriction[7](15,4) = 1.0; - restriction[7](19,3) = 1.0; - restriction[7](21,5) = 1.0; - restriction[7](24,2) = 1.0; - restriction[7](25,0) = 1.0; - restriction[7](26,1) = 1.0; -}; - - - -template <> -double -FEQ2<3>::shape_value (const unsigned int i, - const Point<3> &p) const -{ - Assert (i -Tensor<1,3> -FEQ2<3>::shape_grad (const unsigned int i, - const Point<3> &p) const -{ - Assert (i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<3>(-3.0+4.0*xi+(9.0-12.0*xi)*eta+(-6.0+8.0*xi)*eta*eta+(9.0-12.0*xi+(-27.0+36.0*xi)*eta+(18.0-24.0*xi)*eta*eta)*zeta+(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta*zeta, - -3.0+9.0*xi-6.0*xi*xi+2.0*(2.0-6.0*xi+4.0*xi*xi)*eta+(9.0-27.0*xi+18.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta)*zeta+(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - -3.0+9.0*xi-6.0*xi*xi+(9.0-27.0*xi+18.0*xi*xi)*eta+(-6.0+18.0*xi-12.0*xi*xi)*eta*eta+2.0*(2.0-6.0*xi+4.0*xi*xi+(-6.0+18.0*xi-12.0*xi*xi)*eta+(4.0-12.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 1: return Point<3>(-1.0+4.0*xi+(3.0-12.0*xi)*eta+(-2.0+8.0*xi)*eta*eta+(3.0-12.0*xi+(-9.0+36.0*xi)*eta+(6.0-24.0*xi)*eta*eta)*zeta+(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta*zeta, - 3.0*xi-6.0*xi*xi+2.0*(-2.0*xi+4.0*xi*xi)*eta+(-9.0*xi+18.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta)*zeta+(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - 3.0*xi-6.0*xi*xi+(-9.0*xi+18.0*xi*xi)*eta+(6.0*xi-12.0*xi*xi)*eta*eta+2.0*(-2.0*xi+4.0*xi*xi+(6.0*xi-12.0*xi*xi)*eta+(-4.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 2: return Point<3>((1.0-4.0*xi+(-3.0+12.0*xi)*eta+(2.0-8.0*xi)*eta*eta)*zeta+(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta*zeta, - (-3.0*xi+6.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta)*zeta+(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - xi-2.0*xi*xi+(-3.0*xi+6.0*xi*xi)*eta+(2.0*xi-4.0*xi*xi)*eta*eta+2.0*(-2.0*xi+4.0*xi*xi+(6.0*xi-12.0*xi*xi)*eta+(-4.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 3: return Point<3>((3.0-4.0*xi+(-9.0+12.0*xi)*eta+(6.0-8.0*xi)*eta*eta)*zeta+(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta*zeta, - (3.0-9.0*xi+6.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta)*zeta+(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - -1.0+3.0*xi-2.0*xi*xi+(3.0-9.0*xi+6.0*xi*xi)*eta+(-2.0+6.0*xi-4.0*xi*xi)*eta*eta+2.0*(2.0-6.0*xi+4.0*xi*xi+(-6.0+18.0*xi-12.0*xi*xi)*eta+(4.0-12.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 4: return Point<3>((3.0-4.0*xi)*eta+(-6.0+8.0*xi)*eta*eta+((-9.0+12.0*xi)*eta+(18.0-24.0*xi)*eta*eta)*zeta+((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta*zeta, - -1.0+3.0*xi-2.0*xi*xi+2.0*(2.0-6.0*xi+4.0*xi*xi)*eta+(3.0-9.0*xi+6.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta)*zeta+(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - (3.0-9.0*xi+6.0*xi*xi)*eta+(-6.0+18.0*xi-12.0*xi*xi)*eta*eta+2.0*((-2.0+6.0*xi-4.0*xi*xi)*eta+(4.0-12.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 5: return Point<3>((1.0-4.0*xi)*eta+(-2.0+8.0*xi)*eta*eta+((-3.0+12.0*xi)*eta+(6.0-24.0*xi)*eta*eta)*zeta+((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta*zeta, - xi-2.0*xi*xi+2.0*(-2.0*xi+4.0*xi*xi)*eta+(-3.0*xi+6.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta)*zeta+(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - (-3.0*xi+6.0*xi*xi)*eta+(6.0*xi-12.0*xi*xi)*eta*eta+2.0*((2.0*xi-4.0*xi*xi)*eta+(-4.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 6: return Point<3>(((-1.0+4.0*xi)*eta+(2.0-8.0*xi)*eta*eta)*zeta+((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta*zeta, - (-xi+2.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta)*zeta+(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - (-xi+2.0*xi*xi)*eta+(2.0*xi-4.0*xi*xi)*eta*eta+2.0*((2.0*xi-4.0*xi*xi)*eta+(-4.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 7: return Point<3>(((-3.0+4.0*xi)*eta+(6.0-8.0*xi)*eta*eta)*zeta+((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta*zeta, - (1.0-3.0*xi+2.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta)*zeta+(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta*zeta, - (1.0-3.0*xi+2.0*xi*xi)*eta+(-2.0+6.0*xi-4.0*xi*xi)*eta*eta+2.0*((-2.0+6.0*xi-4.0*xi*xi)*eta+(4.0-12.0*xi+8.0*xi*xi)*eta*eta)*zeta); - case 8: return Point<3>(4.0-8.0*xi+(-12.0+24.0*xi)*eta+(8.0-16.0*xi)*eta*eta+(-12.0+24.0*xi+(36.0-72.0*xi)*eta+(-24.0+48.0*xi)*eta*eta)*zeta+(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta*zeta, - -12.0*xi+12.0*xi*xi+2.0*(8.0*xi-8.0*xi*xi)*eta+(36.0*xi-36.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta)*zeta+(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - -12.0*xi+12.0*xi*xi+(36.0*xi-36.0*xi*xi)*eta+(-24.0*xi+24.0*xi*xi)*eta*eta+2.0*(8.0*xi-8.0*xi*xi+(-24.0*xi+24.0*xi*xi)*eta+(16.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 9: return Point<3>((-4.0+16.0*xi+(12.0-48.0*xi)*eta+(-8.0+32.0*xi)*eta*eta)*zeta+(4.0-16.0*xi+(-12.0+48.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta*zeta, - (12.0*xi-24.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta)*zeta+(-12.0*xi+24.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - -4.0*xi+8.0*xi*xi+(12.0*xi-24.0*xi*xi)*eta+(-8.0*xi+16.0*xi*xi)*eta*eta+2.0*(4.0*xi-8.0*xi*xi+(-12.0*xi+24.0*xi*xi)*eta+(8.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 10: return Point<3>((-4.0+8.0*xi+(12.0-24.0*xi)*eta+(-8.0+16.0*xi)*eta*eta)*zeta+(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta*zeta, - (12.0*xi-12.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta)*zeta+(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - -4.0*xi+4.0*xi*xi+(12.0*xi-12.0*xi*xi)*eta+(-8.0*xi+8.0*xi*xi)*eta*eta+2.0*(8.0*xi-8.0*xi*xi+(-24.0*xi+24.0*xi*xi)*eta+(16.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 11: return Point<3>((-12.0+16.0*xi+(36.0-48.0*xi)*eta+(-24.0+32.0*xi)*eta*eta)*zeta+(12.0-16.0*xi+(-36.0+48.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta*zeta, - (-12.0+36.0*xi-24.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta)*zeta+(12.0-36.0*xi+24.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - 4.0-12.0*xi+8.0*xi*xi+(-12.0+36.0*xi-24.0*xi*xi)*eta+(8.0-24.0*xi+16.0*xi*xi)*eta*eta+2.0*(-4.0+12.0*xi-8.0*xi*xi+(12.0-36.0*xi+24.0*xi*xi)*eta+(-8.0+24.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 12: return Point<3>((-4.0+8.0*xi)*eta+(8.0-16.0*xi)*eta*eta+((12.0-24.0*xi)*eta+(-24.0+48.0*xi)*eta*eta)*zeta+((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta*zeta, - -4.0*xi+4.0*xi*xi+2.0*(8.0*xi-8.0*xi*xi)*eta+(12.0*xi-12.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta)*zeta+(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (12.0*xi-12.0*xi*xi)*eta+(-24.0*xi+24.0*xi*xi)*eta*eta+2.0*((-8.0*xi+8.0*xi*xi)*eta+(16.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 13: return Point<3>(((4.0-16.0*xi)*eta+(-8.0+32.0*xi)*eta*eta)*zeta+((-4.0+16.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta*zeta, - (4.0*xi-8.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta)*zeta+(-4.0*xi+8.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (4.0*xi-8.0*xi*xi)*eta+(-8.0*xi+16.0*xi*xi)*eta*eta+2.0*((-4.0*xi+8.0*xi*xi)*eta+(8.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 14: return Point<3>(((4.0-8.0*xi)*eta+(-8.0+16.0*xi)*eta*eta)*zeta+((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta*zeta, - (4.0*xi-4.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta)*zeta+(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (4.0*xi-4.0*xi*xi)*eta+(-8.0*xi+8.0*xi*xi)*eta*eta+2.0*((-8.0*xi+8.0*xi*xi)*eta+(16.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 15: return Point<3>(((12.0-16.0*xi)*eta+(-24.0+32.0*xi)*eta*eta)*zeta+((-12.0+16.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta*zeta, - (-4.0+12.0*xi-8.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta)*zeta+(4.0-12.0*xi+8.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (-4.0+12.0*xi-8.0*xi*xi)*eta+(8.0-24.0*xi+16.0*xi*xi)*eta*eta+2.0*((4.0-12.0*xi+8.0*xi*xi)*eta+(-8.0+24.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 16: return Point<3>((-12.0+16.0*xi)*eta+(12.0-16.0*xi)*eta*eta+((36.0-48.0*xi)*eta+(-36.0+48.0*xi)*eta*eta)*zeta+((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta*zeta, - 4.0-12.0*xi+8.0*xi*xi+2.0*(-4.0+12.0*xi-8.0*xi*xi)*eta+(-12.0+36.0*xi-24.0*xi*xi+2.0*(12.0-36.0*xi+24.0*xi*xi)*eta)*zeta+(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (-12.0+36.0*xi-24.0*xi*xi)*eta+(12.0-36.0*xi+24.0*xi*xi)*eta*eta+2.0*((8.0-24.0*xi+16.0*xi*xi)*eta+(-8.0+24.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 17: return Point<3>((-4.0+16.0*xi)*eta+(4.0-16.0*xi)*eta*eta+((12.0-48.0*xi)*eta+(-12.0+48.0*xi)*eta*eta)*zeta+((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta*zeta, - -4.0*xi+8.0*xi*xi+2.0*(4.0*xi-8.0*xi*xi)*eta+(12.0*xi-24.0*xi*xi+2.0*(-12.0*xi+24.0*xi*xi)*eta)*zeta+(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (12.0*xi-24.0*xi*xi)*eta+(-12.0*xi+24.0*xi*xi)*eta*eta+2.0*((-8.0*xi+16.0*xi*xi)*eta+(8.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 18: return Point<3>(((4.0-16.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta+((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta*zeta, - (4.0*xi-8.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta+(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (4.0*xi-8.0*xi*xi)*eta+(-4.0*xi+8.0*xi*xi)*eta*eta+2.0*((-8.0*xi+16.0*xi*xi)*eta+(8.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 19: return Point<3>(((12.0-16.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta+((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta*zeta, - (-4.0+12.0*xi-8.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta+(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta*zeta, - (-4.0+12.0*xi-8.0*xi*xi)*eta+(4.0-12.0*xi+8.0*xi*xi)*eta*eta+2.0*((8.0-24.0*xi+16.0*xi*xi)*eta+(-8.0+24.0*xi-16.0*xi*xi)*eta*eta)*zeta); - case 20: return Point<3>((16.0-32.0*xi+(-48.0+96.0*xi)*eta+(32.0-64.0*xi)*eta*eta)*zeta+(-16.0+32.0*xi+(48.0-96.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta*zeta, - (-48.0*xi+48.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta)*zeta+(48.0*xi-48.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - 16.0*xi-16.0*xi*xi+(-48.0*xi+48.0*xi*xi)*eta+(32.0*xi-32.0*xi*xi)*eta*eta+2.0*(-16.0*xi+16.0*xi*xi+(48.0*xi-48.0*xi*xi)*eta+(-32.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 21: return Point<3>(((-16.0+32.0*xi)*eta+(32.0-64.0*xi)*eta*eta)*zeta+((16.0-32.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta*zeta, - (-16.0*xi+16.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta)*zeta+(16.0*xi-16.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - (-16.0*xi+16.0*xi*xi)*eta+(32.0*xi-32.0*xi*xi)*eta*eta+2.0*((16.0*xi-16.0*xi*xi)*eta+(-32.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 22: return Point<3>((16.0-32.0*xi)*eta+(-16.0+32.0*xi)*eta*eta+((-48.0+96.0*xi)*eta+(48.0-96.0*xi)*eta*eta)*zeta+((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta*zeta, - 16.0*xi-16.0*xi*xi+2.0*(-16.0*xi+16.0*xi*xi)*eta+(-48.0*xi+48.0*xi*xi+2.0*(48.0*xi-48.0*xi*xi)*eta)*zeta+(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - (-48.0*xi+48.0*xi*xi)*eta+(48.0*xi-48.0*xi*xi)*eta*eta+2.0*((32.0*xi-32.0*xi*xi)*eta+(-32.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 23: return Point<3>(((-16.0+64.0*xi)*eta+(16.0-64.0*xi)*eta*eta)*zeta+((16.0-64.0*xi)*eta+(-16.0+64.0*xi)*eta*eta)*zeta*zeta, - (-16.0*xi+32.0*xi*xi+2.0*(16.0*xi-32.0*xi*xi)*eta)*zeta+(16.0*xi-32.0*xi*xi+2.0*(-16.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - (-16.0*xi+32.0*xi*xi)*eta+(16.0*xi-32.0*xi*xi)*eta*eta+2.0*((16.0*xi-32.0*xi*xi)*eta+(-16.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 24: return Point<3>(((-16.0+32.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta+((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta*zeta, - (-16.0*xi+16.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta+(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - (-16.0*xi+16.0*xi*xi)*eta+(16.0*xi-16.0*xi*xi)*eta*eta+2.0*((32.0*xi-32.0*xi*xi)*eta+(-32.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 25: return Point<3>(((-48.0+64.0*xi)*eta+(48.0-64.0*xi)*eta*eta)*zeta+((48.0-64.0*xi)*eta+(-48.0+64.0*xi)*eta*eta)*zeta*zeta, - (16.0-48.0*xi+32.0*xi*xi+2.0*(-16.0+48.0*xi-32.0*xi*xi)*eta)*zeta+(-16.0+48.0*xi-32.0*xi*xi+2.0*(16.0-48.0*xi+32.0*xi*xi)*eta)*zeta*zeta, - (16.0-48.0*xi+32.0*xi*xi)*eta+(-16.0+48.0*xi-32.0*xi*xi)*eta*eta+2.0*((-16.0+48.0*xi-32.0*xi*xi)*eta+(16.0-48.0*xi+32.0*xi*xi)*eta*eta)*zeta); - case 26: return Point<3>(((64.0-128.0*xi)*eta+(-64.0+128.0*xi)*eta*eta)*zeta+((-64.0+128.0*xi)*eta+(64.0-128.0*xi)*eta*eta)*zeta*zeta, - (64.0*xi-64.0*xi*xi+2.0*(-64.0*xi+64.0*xi*xi)*eta)*zeta+(-64.0*xi+64.0*xi*xi+2.0*(64.0*xi-64.0*xi*xi)*eta)*zeta*zeta, - (64.0*xi-64.0*xi*xi)*eta+(-64.0*xi+64.0*xi*xi)*eta*eta+2.0*((-64.0*xi+64.0*xi*xi)*eta+(64.0*xi-64.0*xi*xi)*eta*eta)*zeta); - }; - return Point<3> (); -}; - - - -template <> -Tensor<2,3> -FEQ2<3>::shape_grad_grad (const unsigned int i, - const Point<3> &p) const -{ - Assert (i return_value; - - switch (i) - { - case 0: - return_value[0][0] = 4.0-12.0*eta+8.0*eta*eta+(-12.0+36.0*eta-24.0*eta*eta)*zeta+(8.0-24.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = 9.0-12.0*xi+2.0*(-6.0+8.0*xi)*eta+(-27.0+36.0*xi+2.0*(18.0-24.0*xi)*eta)*zeta+(18.0-24.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = 9.0-12.0*xi+(-27.0+36.0*xi)*eta+(18.0-24.0*xi)*eta*eta+2.0*(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = 9.0-12.0*xi+2.0*(-6.0+8.0*xi)*eta+(-27.0+36.0*xi+2.0*(18.0-24.0*xi)*eta)*zeta+(18.0-24.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = 4.0-12.0*xi+8.0*xi*xi+(-12.0+36.0*xi-24.0*xi*xi)*zeta+(8.0-24.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = 9.0-27.0*xi+18.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = 9.0-12.0*xi+(-27.0+36.0*xi)*eta+(18.0-24.0*xi)*eta*eta+2.0*(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = 9.0-27.0*xi+18.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 4.0-12.0*xi+8.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta*eta; - break; - case 1: - return_value[0][0] = 4.0-12.0*eta+8.0*eta*eta+(-12.0+36.0*eta-24.0*eta*eta)*zeta+(8.0-24.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = 3.0-12.0*xi+2.0*(-2.0+8.0*xi)*eta+(-9.0+36.0*xi+2.0*(6.0-24.0*xi)*eta)*zeta+(6.0-24.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = 3.0-12.0*xi+(-9.0+36.0*xi)*eta+(6.0-24.0*xi)*eta*eta+2.0*(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = 3.0-12.0*xi+2.0*(-2.0+8.0*xi)*eta+(-9.0+36.0*xi+2.0*(6.0-24.0*xi)*eta)*zeta+(6.0-24.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = -4.0*xi+8.0*xi*xi+(12.0*xi-24.0*xi*xi)*zeta+(-8.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = -9.0*xi+18.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = 3.0-12.0*xi+(-9.0+36.0*xi)*eta+(6.0-24.0*xi)*eta*eta+2.0*(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = -9.0*xi+18.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = -4.0*xi+8.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi)*eta*eta; - break; - case 2: - return_value[0][0] = (-4.0+12.0*eta-8.0*eta*eta)*zeta+(8.0-24.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-3.0+12.0*xi+2.0*(2.0-8.0*xi)*eta)*zeta+(6.0-24.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = 1.0-4.0*xi+(-3.0+12.0*xi)*eta+(2.0-8.0*xi)*eta*eta+2.0*(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-3.0+12.0*xi+2.0*(2.0-8.0*xi)*eta)*zeta+(6.0-24.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (4.0*xi-8.0*xi*xi)*zeta+(-8.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = -3.0*xi+6.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = 1.0-4.0*xi+(-3.0+12.0*xi)*eta+(2.0-8.0*xi)*eta*eta+2.0*(-2.0+8.0*xi+(6.0-24.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = -3.0*xi+6.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(6.0*xi-12.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = -4.0*xi+8.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi)*eta*eta; - break; - case 3: - return_value[0][0] = (-4.0+12.0*eta-8.0*eta*eta)*zeta+(8.0-24.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-9.0+12.0*xi+2.0*(6.0-8.0*xi)*eta)*zeta+(18.0-24.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = 3.0-4.0*xi+(-9.0+12.0*xi)*eta+(6.0-8.0*xi)*eta*eta+2.0*(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-9.0+12.0*xi+2.0*(6.0-8.0*xi)*eta)*zeta+(18.0-24.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-4.0+12.0*xi-8.0*xi*xi)*zeta+(8.0-24.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = 3.0-9.0*xi+6.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = 3.0-4.0*xi+(-9.0+12.0*xi)*eta+(6.0-8.0*xi)*eta*eta+2.0*(-6.0+8.0*xi+(18.0-24.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = 3.0-9.0*xi+6.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(-6.0+18.0*xi-12.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 4.0-12.0*xi+8.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta*eta; - break; - case 4: - return_value[0][0] = -4.0*eta+8.0*eta*eta+(12.0*eta-24.0*eta*eta)*zeta+(-8.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = 3.0-4.0*xi+2.0*(-6.0+8.0*xi)*eta+(-9.0+12.0*xi+2.0*(18.0-24.0*xi)*eta)*zeta+(6.0-8.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-9.0+12.0*xi)*eta+(18.0-24.0*xi)*eta*eta+2.0*((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = 3.0-4.0*xi+2.0*(-6.0+8.0*xi)*eta+(-9.0+12.0*xi+2.0*(18.0-24.0*xi)*eta)*zeta+(6.0-8.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = 4.0-12.0*xi+8.0*xi*xi+(-12.0+36.0*xi-24.0*xi*xi)*zeta+(8.0-24.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = 3.0-9.0*xi+6.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-9.0+12.0*xi)*eta+(18.0-24.0*xi)*eta*eta+2.0*((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = 3.0-9.0*xi+6.0*xi*xi+2.0*(-6.0+18.0*xi-12.0*xi*xi)*eta+2.0*(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta*eta; - break; - case 5: - return_value[0][0] = -4.0*eta+8.0*eta*eta+(12.0*eta-24.0*eta*eta)*zeta+(-8.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = 1.0-4.0*xi+2.0*(-2.0+8.0*xi)*eta+(-3.0+12.0*xi+2.0*(6.0-24.0*xi)*eta)*zeta+(2.0-8.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-3.0+12.0*xi)*eta+(6.0-24.0*xi)*eta*eta+2.0*((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = 1.0-4.0*xi+2.0*(-2.0+8.0*xi)*eta+(-3.0+12.0*xi+2.0*(6.0-24.0*xi)*eta)*zeta+(2.0-8.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = -4.0*xi+8.0*xi*xi+(12.0*xi-24.0*xi*xi)*zeta+(-8.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = -3.0*xi+6.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-3.0+12.0*xi)*eta+(6.0-24.0*xi)*eta*eta+2.0*((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = -3.0*xi+6.0*xi*xi+2.0*(6.0*xi-12.0*xi*xi)*eta+2.0*(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi)*eta*eta; - break; - case 6: - return_value[0][0] = (4.0*eta-8.0*eta*eta)*zeta+(-8.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-1.0+4.0*xi+2.0*(2.0-8.0*xi)*eta)*zeta+(2.0-8.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-1.0+4.0*xi)*eta+(2.0-8.0*xi)*eta*eta+2.0*((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-1.0+4.0*xi+2.0*(2.0-8.0*xi)*eta)*zeta+(2.0-8.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (4.0*xi-8.0*xi*xi)*zeta+(-8.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = -xi+2.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-1.0+4.0*xi)*eta+(2.0-8.0*xi)*eta*eta+2.0*((2.0-8.0*xi)*eta+(-4.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = -xi+2.0*xi*xi+2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(2.0*xi-4.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(2.0*xi-4.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi)*eta*eta; - break; - case 7: - return_value[0][0] = (4.0*eta-8.0*eta*eta)*zeta+(-8.0*eta+16.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-3.0+4.0*xi+2.0*(6.0-8.0*xi)*eta)*zeta+(6.0-8.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-3.0+4.0*xi)*eta+(6.0-8.0*xi)*eta*eta+2.0*((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-3.0+4.0*xi+2.0*(6.0-8.0*xi)*eta)*zeta+(6.0-8.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-4.0+12.0*xi-8.0*xi*xi)*zeta+(8.0-24.0*xi+16.0*xi*xi)*zeta*zeta; - return_value[1][2] = 1.0-3.0*xi+2.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-3.0+4.0*xi)*eta+(6.0-8.0*xi)*eta*eta+2.0*((6.0-8.0*xi)*eta+(-12.0+16.0*xi)*eta*eta)*zeta; - return_value[2][1] = 1.0-3.0*xi+2.0*xi*xi+2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(-2.0+6.0*xi-4.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-2.0+6.0*xi-4.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta*eta; - break; - case 8: - return_value[0][0] = -8.0+24.0*eta-16.0*eta*eta+(24.0-72.0*eta+48.0*eta*eta)*zeta+(-16.0+48.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = -12.0+24.0*xi+2.0*(8.0-16.0*xi)*eta+(36.0-72.0*xi+2.0*(-24.0+48.0*xi)*eta)*zeta+(-24.0+48.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = -12.0+24.0*xi+(36.0-72.0*xi)*eta+(-24.0+48.0*xi)*eta*eta+2.0*(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = -12.0+24.0*xi+2.0*(8.0-16.0*xi)*eta+(36.0-72.0*xi+2.0*(-24.0+48.0*xi)*eta)*zeta+(-24.0+48.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = 16.0*xi-16.0*xi*xi+(-48.0*xi+48.0*xi*xi)*zeta+(32.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 36.0*xi-36.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = -12.0+24.0*xi+(36.0-72.0*xi)*eta+(-24.0+48.0*xi)*eta*eta+2.0*(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 36.0*xi-36.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 16.0*xi-16.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi)*eta*eta; - break; - case 9: - return_value[0][0] = (16.0-48.0*eta+32.0*eta*eta)*zeta+(-16.0+48.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (12.0-48.0*xi+2.0*(-8.0+32.0*xi)*eta)*zeta+(-12.0+48.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = -4.0+16.0*xi+(12.0-48.0*xi)*eta+(-8.0+32.0*xi)*eta*eta+2.0*(4.0-16.0*xi+(-12.0+48.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (12.0-48.0*xi+2.0*(-8.0+32.0*xi)*eta)*zeta+(-12.0+48.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-16.0*xi+32.0*xi*xi)*zeta+(16.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 12.0*xi-24.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(-12.0*xi+24.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = -4.0+16.0*xi+(12.0-48.0*xi)*eta+(-8.0+32.0*xi)*eta*eta+2.0*(4.0-16.0*xi+(-12.0+48.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 12.0*xi-24.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(-12.0*xi+24.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 8.0*xi-16.0*xi*xi+2.0*(-12.0*xi+24.0*xi*xi)*eta+2.0*(8.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (8.0-24.0*eta+16.0*eta*eta)*zeta+(-16.0+48.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (12.0-24.0*xi+2.0*(-8.0+16.0*xi)*eta)*zeta+(-24.0+48.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = -4.0+8.0*xi+(12.0-24.0*xi)*eta+(-8.0+16.0*xi)*eta*eta+2.0*(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (12.0-24.0*xi+2.0*(-8.0+16.0*xi)*eta)*zeta+(-24.0+48.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-16.0*xi+16.0*xi*xi)*zeta+(32.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 12.0*xi-12.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = -4.0+8.0*xi+(12.0-24.0*xi)*eta+(-8.0+16.0*xi)*eta*eta+2.0*(8.0-16.0*xi+(-24.0+48.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 12.0*xi-12.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(-24.0*xi+24.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 16.0*xi-16.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (16.0-48.0*eta+32.0*eta*eta)*zeta+(-16.0+48.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (36.0-48.0*xi+2.0*(-24.0+32.0*xi)*eta)*zeta+(-36.0+48.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = -12.0+16.0*xi+(36.0-48.0*xi)*eta+(-24.0+32.0*xi)*eta*eta+2.0*(12.0-16.0*xi+(-36.0+48.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (36.0-48.0*xi+2.0*(-24.0+32.0*xi)*eta)*zeta+(-36.0+48.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (16.0-48.0*xi+32.0*xi*xi)*zeta+(-16.0+48.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = -12.0+36.0*xi-24.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(12.0-36.0*xi+24.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = -12.0+16.0*xi+(36.0-48.0*xi)*eta+(-24.0+32.0*xi)*eta*eta+2.0*(12.0-16.0*xi+(-36.0+48.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = -12.0+36.0*xi-24.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(12.0-36.0*xi+24.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = -8.0+24.0*xi-16.0*xi*xi+2.0*(12.0-36.0*xi+24.0*xi*xi)*eta+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = 8.0*eta-16.0*eta*eta+(-24.0*eta+48.0*eta*eta)*zeta+(16.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = -4.0+8.0*xi+2.0*(8.0-16.0*xi)*eta+(12.0-24.0*xi+2.0*(-24.0+48.0*xi)*eta)*zeta+(-8.0+16.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (12.0-24.0*xi)*eta+(-24.0+48.0*xi)*eta*eta+2.0*((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = -4.0+8.0*xi+2.0*(8.0-16.0*xi)*eta+(12.0-24.0*xi+2.0*(-24.0+48.0*xi)*eta)*zeta+(-8.0+16.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = 16.0*xi-16.0*xi*xi+(-48.0*xi+48.0*xi*xi)*zeta+(32.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 12.0*xi-12.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (12.0-24.0*xi)*eta+(-24.0+48.0*xi)*eta*eta+2.0*((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 12.0*xi-12.0*xi*xi+2.0*(-24.0*xi+24.0*xi*xi)*eta+2.0*(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-16.0*eta+32.0*eta*eta)*zeta+(16.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (4.0-16.0*xi+2.0*(-8.0+32.0*xi)*eta)*zeta+(-4.0+16.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (4.0-16.0*xi)*eta+(-8.0+32.0*xi)*eta*eta+2.0*((-4.0+16.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (4.0-16.0*xi+2.0*(-8.0+32.0*xi)*eta)*zeta+(-4.0+16.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-16.0*xi+32.0*xi*xi)*zeta+(16.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 4.0*xi-8.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (4.0-16.0*xi)*eta+(-8.0+32.0*xi)*eta*eta+2.0*((-4.0+16.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 4.0*xi-8.0*xi*xi+2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(-4.0*xi+8.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-4.0*xi+8.0*xi*xi)*eta+2.0*(8.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-8.0*eta+16.0*eta*eta)*zeta+(16.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (4.0-8.0*xi+2.0*(-8.0+16.0*xi)*eta)*zeta+(-8.0+16.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (4.0-8.0*xi)*eta+(-8.0+16.0*xi)*eta*eta+2.0*((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (4.0-8.0*xi+2.0*(-8.0+16.0*xi)*eta)*zeta+(-8.0+16.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-16.0*xi+16.0*xi*xi)*zeta+(32.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 4.0*xi-4.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (4.0-8.0*xi)*eta+(-8.0+16.0*xi)*eta*eta+2.0*((-8.0+16.0*xi)*eta+(16.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 4.0*xi-4.0*xi*xi+2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(-8.0*xi+8.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-8.0*xi+8.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-16.0*eta+32.0*eta*eta)*zeta+(16.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (12.0-16.0*xi+2.0*(-24.0+32.0*xi)*eta)*zeta+(-12.0+16.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (12.0-16.0*xi)*eta+(-24.0+32.0*xi)*eta*eta+2.0*((-12.0+16.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (12.0-16.0*xi+2.0*(-24.0+32.0*xi)*eta)*zeta+(-12.0+16.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (16.0-48.0*xi+32.0*xi*xi)*zeta+(-16.0+48.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = -4.0+12.0*xi-8.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (12.0-16.0*xi)*eta+(-24.0+32.0*xi)*eta*eta+2.0*((-12.0+16.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = -4.0+12.0*xi-8.0*xi*xi+2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(4.0-12.0*xi+8.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(4.0-12.0*xi+8.0*xi*xi)*eta+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = 16.0*eta-16.0*eta*eta+(-48.0*eta+48.0*eta*eta)*zeta+(32.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = -12.0+16.0*xi+2.0*(12.0-16.0*xi)*eta+(36.0-48.0*xi+2.0*(-36.0+48.0*xi)*eta)*zeta+(-24.0+32.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (36.0-48.0*xi)*eta+(-36.0+48.0*xi)*eta*eta+2.0*((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = -12.0+16.0*xi+2.0*(12.0-16.0*xi)*eta+(36.0-48.0*xi+2.0*(-36.0+48.0*xi)*eta)*zeta+(-24.0+32.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = -8.0+24.0*xi-16.0*xi*xi+(24.0-72.0*xi+48.0*xi*xi)*zeta+(-16.0+48.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = -12.0+36.0*xi-24.0*xi*xi+2.0*(12.0-36.0*xi+24.0*xi*xi)*eta+2.0*(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (36.0-48.0*xi)*eta+(-36.0+48.0*xi)*eta*eta+2.0*((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = -12.0+36.0*xi-24.0*xi*xi+2.0*(12.0-36.0*xi+24.0*xi*xi)*eta+2.0*(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = 16.0*eta-16.0*eta*eta+(-48.0*eta+48.0*eta*eta)*zeta+(32.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = -4.0+16.0*xi+2.0*(4.0-16.0*xi)*eta+(12.0-48.0*xi+2.0*(-12.0+48.0*xi)*eta)*zeta+(-8.0+32.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (12.0-48.0*xi)*eta+(-12.0+48.0*xi)*eta*eta+2.0*((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = -4.0+16.0*xi+2.0*(4.0-16.0*xi)*eta+(12.0-48.0*xi+2.0*(-12.0+48.0*xi)*eta)*zeta+(-8.0+32.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = 8.0*xi-16.0*xi*xi+(-24.0*xi+48.0*xi*xi)*zeta+(16.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 12.0*xi-24.0*xi*xi+2.0*(-12.0*xi+24.0*xi*xi)*eta+2.0*(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (12.0-48.0*xi)*eta+(-12.0+48.0*xi)*eta*eta+2.0*((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 12.0*xi-24.0*xi*xi+2.0*(-12.0*xi+24.0*xi*xi)*eta+2.0*(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(8.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-16.0*eta+16.0*eta*eta)*zeta+(32.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (4.0-16.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta+(-8.0+32.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (4.0-16.0*xi)*eta+(-4.0+16.0*xi)*eta*eta+2.0*((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (4.0-16.0*xi+2.0*(-4.0+16.0*xi)*eta)*zeta+(-8.0+32.0*xi+2.0*(8.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-8.0*xi+16.0*xi*xi)*zeta+(16.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = 4.0*xi-8.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta+2.0*(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (4.0-16.0*xi)*eta+(-4.0+16.0*xi)*eta*eta+2.0*((-8.0+32.0*xi)*eta+(8.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = 4.0*xi-8.0*xi*xi+2.0*(-4.0*xi+8.0*xi*xi)*eta+2.0*(-8.0*xi+16.0*xi*xi+2.0*(8.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-8.0*xi+16.0*xi*xi)*eta+2.0*(8.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-16.0*eta+16.0*eta*eta)*zeta+(32.0*eta-32.0*eta*eta)*zeta*zeta; - return_value[0][1] = (12.0-16.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta+(-24.0+32.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (12.0-16.0*xi)*eta+(-12.0+16.0*xi)*eta*eta+2.0*((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[1][0] = (12.0-16.0*xi+2.0*(-12.0+16.0*xi)*eta)*zeta+(-24.0+32.0*xi+2.0*(24.0-32.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (8.0-24.0*xi+16.0*xi*xi)*zeta+(-16.0+48.0*xi-32.0*xi*xi)*zeta*zeta; - return_value[1][2] = -4.0+12.0*xi-8.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta+2.0*(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][0] = (12.0-16.0*xi)*eta+(-12.0+16.0*xi)*eta*eta+2.0*((-24.0+32.0*xi)*eta+(24.0-32.0*xi)*eta*eta)*zeta; - return_value[2][1] = -4.0+12.0*xi-8.0*xi*xi+2.0*(4.0-12.0*xi+8.0*xi*xi)*eta+2.0*(8.0-24.0*xi+16.0*xi*xi+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(8.0-24.0*xi+16.0*xi*xi)*eta+2.0*(-8.0+24.0*xi-16.0*xi*xi)*eta*eta; - return_value[0][0] = (-32.0+96.0*eta-64.0*eta*eta)*zeta+(32.0-96.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-48.0+96.0*xi+2.0*(32.0-64.0*xi)*eta)*zeta+(48.0-96.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = 16.0-32.0*xi+(-48.0+96.0*xi)*eta+(32.0-64.0*xi)*eta*eta+2.0*(-16.0+32.0*xi+(48.0-96.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-48.0+96.0*xi+2.0*(32.0-64.0*xi)*eta)*zeta+(48.0-96.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (64.0*xi-64.0*xi*xi)*zeta+(-64.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = -48.0*xi+48.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(48.0*xi-48.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = 16.0-32.0*xi+(-48.0+96.0*xi)*eta+(32.0-64.0*xi)*eta*eta+2.0*(-16.0+32.0*xi+(48.0-96.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = -48.0*xi+48.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(48.0*xi-48.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = -32.0*xi+32.0*xi*xi+2.0*(48.0*xi-48.0*xi*xi)*eta+2.0*(-32.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = (32.0*eta-64.0*eta*eta)*zeta+(-32.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-16.0+32.0*xi+2.0*(32.0-64.0*xi)*eta)*zeta+(16.0-32.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-16.0+32.0*xi)*eta+(32.0-64.0*xi)*eta*eta+2.0*((16.0-32.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-16.0+32.0*xi+2.0*(32.0-64.0*xi)*eta)*zeta+(16.0-32.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (64.0*xi-64.0*xi*xi)*zeta+(-64.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = -16.0*xi+16.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-16.0+32.0*xi)*eta+(32.0-64.0*xi)*eta*eta+2.0*((16.0-32.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = -16.0*xi+16.0*xi*xi+2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(16.0*xi-16.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(16.0*xi-16.0*xi*xi)*eta+2.0*(-32.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = -32.0*eta+32.0*eta*eta+(96.0*eta-96.0*eta*eta)*zeta+(-64.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = 16.0-32.0*xi+2.0*(-16.0+32.0*xi)*eta+(-48.0+96.0*xi+2.0*(48.0-96.0*xi)*eta)*zeta+(32.0-64.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-48.0+96.0*xi)*eta+(48.0-96.0*xi)*eta*eta+2.0*((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = 16.0-32.0*xi+2.0*(-16.0+32.0*xi)*eta+(-48.0+96.0*xi+2.0*(48.0-96.0*xi)*eta)*zeta+(32.0-64.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = -32.0*xi+32.0*xi*xi+(96.0*xi-96.0*xi*xi)*zeta+(-64.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = -48.0*xi+48.0*xi*xi+2.0*(48.0*xi-48.0*xi*xi)*eta+2.0*(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-48.0+96.0*xi)*eta+(48.0-96.0*xi)*eta*eta+2.0*((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = -48.0*xi+48.0*xi*xi+2.0*(48.0*xi-48.0*xi*xi)*eta+2.0*(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(-32.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = (64.0*eta-64.0*eta*eta)*zeta+(-64.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-16.0+64.0*xi+2.0*(16.0-64.0*xi)*eta)*zeta+(16.0-64.0*xi+2.0*(-16.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-16.0+64.0*xi)*eta+(16.0-64.0*xi)*eta*eta+2.0*((16.0-64.0*xi)*eta+(-16.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-16.0+64.0*xi+2.0*(16.0-64.0*xi)*eta)*zeta+(16.0-64.0*xi+2.0*(-16.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (32.0*xi-64.0*xi*xi)*zeta+(-32.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = -16.0*xi+32.0*xi*xi+2.0*(16.0*xi-32.0*xi*xi)*eta+2.0*(16.0*xi-32.0*xi*xi+2.0*(-16.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-16.0+64.0*xi)*eta+(16.0-64.0*xi)*eta*eta+2.0*((16.0-64.0*xi)*eta+(-16.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = -16.0*xi+32.0*xi*xi+2.0*(16.0*xi-32.0*xi*xi)*eta+2.0*(16.0*xi-32.0*xi*xi+2.0*(-16.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(16.0*xi-32.0*xi*xi)*eta+2.0*(-16.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = (32.0*eta-32.0*eta*eta)*zeta+(-64.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-16.0+32.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta+(32.0-64.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-16.0+32.0*xi)*eta+(16.0-32.0*xi)*eta*eta+2.0*((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-16.0+32.0*xi+2.0*(16.0-32.0*xi)*eta)*zeta+(32.0-64.0*xi+2.0*(-32.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (32.0*xi-32.0*xi*xi)*zeta+(-64.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = -16.0*xi+16.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta+2.0*(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-16.0+32.0*xi)*eta+(16.0-32.0*xi)*eta*eta+2.0*((32.0-64.0*xi)*eta+(-32.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = -16.0*xi+16.0*xi*xi+2.0*(16.0*xi-16.0*xi*xi)*eta+2.0*(32.0*xi-32.0*xi*xi+2.0*(-32.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(32.0*xi-32.0*xi*xi)*eta+2.0*(-32.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = (64.0*eta-64.0*eta*eta)*zeta+(-64.0*eta+64.0*eta*eta)*zeta*zeta; - return_value[0][1] = (-48.0+64.0*xi+2.0*(48.0-64.0*xi)*eta)*zeta+(48.0-64.0*xi+2.0*(-48.0+64.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (-48.0+64.0*xi)*eta+(48.0-64.0*xi)*eta*eta+2.0*((48.0-64.0*xi)*eta+(-48.0+64.0*xi)*eta*eta)*zeta; - return_value[1][0] = (-48.0+64.0*xi+2.0*(48.0-64.0*xi)*eta)*zeta+(48.0-64.0*xi+2.0*(-48.0+64.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-32.0+96.0*xi-64.0*xi*xi)*zeta+(32.0-96.0*xi+64.0*xi*xi)*zeta*zeta; - return_value[1][2] = 16.0-48.0*xi+32.0*xi*xi+2.0*(-16.0+48.0*xi-32.0*xi*xi)*eta+2.0*(-16.0+48.0*xi-32.0*xi*xi+2.0*(16.0-48.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][0] = (-48.0+64.0*xi)*eta+(48.0-64.0*xi)*eta*eta+2.0*((48.0-64.0*xi)*eta+(-48.0+64.0*xi)*eta*eta)*zeta; - return_value[2][1] = 16.0-48.0*xi+32.0*xi*xi+2.0*(-16.0+48.0*xi-32.0*xi*xi)*eta+2.0*(-16.0+48.0*xi-32.0*xi*xi+2.0*(16.0-48.0*xi+32.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-16.0+48.0*xi-32.0*xi*xi)*eta+2.0*(16.0-48.0*xi+32.0*xi*xi)*eta*eta; - return_value[0][0] = (-128.0*eta+128.0*eta*eta)*zeta+(128.0*eta-128.0*eta*eta)*zeta*zeta; - return_value[0][1] = (64.0-128.0*xi+2.0*(-64.0+128.0*xi)*eta)*zeta+(-64.0+128.0*xi+2.0*(64.0-128.0*xi)*eta)*zeta*zeta; - return_value[0][2] = (64.0-128.0*xi)*eta+(-64.0+128.0*xi)*eta*eta+2.0*((-64.0+128.0*xi)*eta+(64.0-128.0*xi)*eta*eta)*zeta; - return_value[1][0] = (64.0-128.0*xi+2.0*(-64.0+128.0*xi)*eta)*zeta+(-64.0+128.0*xi+2.0*(64.0-128.0*xi)*eta)*zeta*zeta; - return_value[1][1] = (-128.0*xi+128.0*xi*xi)*zeta+(128.0*xi-128.0*xi*xi)*zeta*zeta; - return_value[1][2] = 64.0*xi-64.0*xi*xi+2.0*(-64.0*xi+64.0*xi*xi)*eta+2.0*(-64.0*xi+64.0*xi*xi+2.0*(64.0*xi-64.0*xi*xi)*eta)*zeta; - return_value[2][0] = (64.0-128.0*xi)*eta+(-64.0+128.0*xi)*eta*eta+2.0*((-64.0+128.0*xi)*eta+(64.0-128.0*xi)*eta*eta)*zeta; - return_value[2][1] = 64.0*xi-64.0*xi*xi+2.0*(-64.0*xi+64.0*xi*xi)*eta+2.0*(-64.0*xi+64.0*xi*xi+2.0*(64.0*xi-64.0*xi*xi)*eta)*zeta; - return_value[2][2] = 2.0*(-64.0*xi+64.0*xi*xi)*eta+2.0*(64.0*xi-64.0*xi*xi)*eta*eta; - break; - - }; - return return_value; -}; - - - -template <> -void FEQ2<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - throw ExcComputationNotUseful(3); -}; - - - -template <> -void FEQ2<3>::get_unit_support_points (std::vector > &unit_points) const -{ - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<3>(0, 0, 0); - unit_points[1] = Point<3>(1, 0, 0); - unit_points[2] = Point<3>(1, 0, 1); - unit_points[3] = Point<3>(0, 0, 1); - unit_points[4] = Point<3>(0, 1, 0); - unit_points[5] = Point<3>(1, 1, 0); - unit_points[6] = Point<3>(1, 1, 1); - unit_points[7] = Point<3>(0, 1, 1); - unit_points[8] = Point<3>(1/2, 0, 0); - unit_points[9] = Point<3>(1, 0, 1/2); - unit_points[10] = Point<3>(1/2, 0, 1); - unit_points[11] = Point<3>(0, 0, 1/2); - unit_points[12] = Point<3>(1/2, 1, 0); - unit_points[13] = Point<3>(1, 1, 1/2); - unit_points[14] = Point<3>(1/2, 1, 1); - unit_points[15] = Point<3>(0, 1, 1/2); - unit_points[16] = Point<3>(0, 1/2, 0); - unit_points[17] = Point<3>(1, 1/2, 0); - unit_points[18] = Point<3>(1, 1/2, 1); - unit_points[19] = Point<3>(0, 1/2, 1); - unit_points[20] = Point<3>(1/2, 0, 1/2); - unit_points[21] = Point<3>(1/2, 1, 1/2); - unit_points[22] = Point<3>(1/2, 1/2, 0); - unit_points[23] = Point<3>(1, 1/2, 1/2); - unit_points[24] = Point<3>(1/2, 1/2, 1); - unit_points[25] = Point<3>(0, 1/2, 1/2); - unit_points[26] = Point<3>(1/2, 1/2, 1/2); -}; - - - -template <> -void FEQ2<3>::get_support_points (const DoFHandler<3>::cell_iterator &cell, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - const Point<3> vertices[8] = { cell->vertex(0), - cell->vertex(1), - cell->vertex(2), - cell->vertex(3), - cell->vertex(4), - cell->vertex(5), - cell->vertex(6), - cell->vertex(7) }; - - support_points[0](0) = vertices[0](0); - support_points[0](1) = vertices[0](1); - support_points[0](2) = vertices[0](2); - support_points[1](0) = vertices[1](0); - support_points[1](1) = vertices[1](1); - support_points[1](2) = vertices[1](2); - support_points[2](0) = vertices[2](0); - support_points[2](1) = vertices[2](1); - support_points[2](2) = vertices[2](2); - support_points[3](0) = vertices[3](0); - support_points[3](1) = vertices[3](1); - support_points[3](2) = vertices[3](2); - support_points[4](0) = vertices[4](0); - support_points[4](1) = vertices[4](1); - support_points[4](2) = vertices[4](2); - support_points[5](0) = vertices[5](0); - support_points[5](1) = vertices[5](1); - support_points[5](2) = vertices[5](2); - support_points[6](0) = vertices[6](0); - support_points[6](1) = vertices[6](1); - support_points[6](2) = vertices[6](2); - support_points[7](0) = vertices[7](0); - support_points[7](1) = vertices[7](1); - support_points[7](2) = vertices[7](2); - support_points[8](0) = vertices[0](0)/2.0+vertices[1](0)/2.0; - support_points[8](1) = vertices[0](1)/2.0+vertices[1](1)/2.0; - support_points[8](2) = vertices[0](2)/2.0+vertices[1](2)/2.0; - support_points[9](0) = vertices[1](0)/2.0+vertices[2](0)/2.0; - support_points[9](1) = vertices[1](1)/2.0+vertices[2](1)/2.0; - support_points[9](2) = vertices[1](2)/2.0+vertices[2](2)/2.0; - support_points[10](0) = vertices[2](0)/2.0+vertices[3](0)/2.0; - support_points[10](1) = vertices[2](1)/2.0+vertices[3](1)/2.0; - support_points[10](2) = vertices[2](2)/2.0+vertices[3](2)/2.0; - support_points[11](0) = vertices[0](0)/2.0+vertices[3](0)/2.0; - support_points[11](1) = vertices[0](1)/2.0+vertices[3](1)/2.0; - support_points[11](2) = vertices[0](2)/2.0+vertices[3](2)/2.0; - support_points[12](0) = vertices[4](0)/2.0+vertices[5](0)/2.0; - support_points[12](1) = vertices[4](1)/2.0+vertices[5](1)/2.0; - support_points[12](2) = vertices[4](2)/2.0+vertices[5](2)/2.0; - support_points[13](0) = vertices[5](0)/2.0+vertices[6](0)/2.0; - support_points[13](1) = vertices[5](1)/2.0+vertices[6](1)/2.0; - support_points[13](2) = vertices[5](2)/2.0+vertices[6](2)/2.0; - support_points[14](0) = vertices[6](0)/2.0+vertices[7](0)/2.0; - support_points[14](1) = vertices[6](1)/2.0+vertices[7](1)/2.0; - support_points[14](2) = vertices[6](2)/2.0+vertices[7](2)/2.0; - support_points[15](0) = vertices[4](0)/2.0+vertices[7](0)/2.0; - support_points[15](1) = vertices[4](1)/2.0+vertices[7](1)/2.0; - support_points[15](2) = vertices[4](2)/2.0+vertices[7](2)/2.0; - support_points[16](0) = vertices[0](0)/2.0+vertices[4](0)/2.0; - support_points[16](1) = vertices[0](1)/2.0+vertices[4](1)/2.0; - support_points[16](2) = vertices[0](2)/2.0+vertices[4](2)/2.0; - support_points[17](0) = vertices[1](0)/2.0+vertices[5](0)/2.0; - support_points[17](1) = vertices[1](1)/2.0+vertices[5](1)/2.0; - support_points[17](2) = vertices[1](2)/2.0+vertices[5](2)/2.0; - support_points[18](0) = vertices[2](0)/2.0+vertices[6](0)/2.0; - support_points[18](1) = vertices[2](1)/2.0+vertices[6](1)/2.0; - support_points[18](2) = vertices[2](2)/2.0+vertices[6](2)/2.0; - support_points[19](0) = vertices[3](0)/2.0+vertices[7](0)/2.0; - support_points[19](1) = vertices[3](1)/2.0+vertices[7](1)/2.0; - support_points[19](2) = vertices[3](2)/2.0+vertices[7](2)/2.0; - support_points[20](0) = vertices[0](0)/4.0+vertices[1](0)/4.0+vertices[2](0)/4.0+vertices[3](0)/4.0; - support_points[20](1) = vertices[0](1)/4.0+vertices[1](1)/4.0+vertices[2](1)/4.0+vertices[3](1)/4.0; - support_points[20](2) = vertices[0](2)/4.0+vertices[1](2)/4.0+vertices[2](2)/4.0+vertices[3](2)/4.0; - support_points[21](0) = vertices[4](0)/4.0+vertices[5](0)/4.0+vertices[6](0)/4.0+vertices[7](0)/4.0; - support_points[21](1) = vertices[4](1)/4.0+vertices[5](1)/4.0+vertices[6](1)/4.0+vertices[7](1)/4.0; - support_points[21](2) = vertices[4](2)/4.0+vertices[5](2)/4.0+vertices[6](2)/4.0+vertices[7](2)/4.0; - support_points[22](0) = vertices[0](0)/4.0+vertices[1](0)/4.0+vertices[4](0)/4.0+vertices[5](0)/4.0; - support_points[22](1) = vertices[0](1)/4.0+vertices[1](1)/4.0+vertices[4](1)/4.0+vertices[5](1)/4.0; - support_points[22](2) = vertices[0](2)/4.0+vertices[1](2)/4.0+vertices[4](2)/4.0+vertices[5](2)/4.0; - support_points[23](0) = vertices[1](0)/4.0+vertices[2](0)/4.0+vertices[5](0)/4.0+vertices[6](0)/4.0; - support_points[23](1) = vertices[1](1)/4.0+vertices[2](1)/4.0+vertices[5](1)/4.0+vertices[6](1)/4.0; - support_points[23](2) = vertices[1](2)/4.0+vertices[2](2)/4.0+vertices[5](2)/4.0+vertices[6](2)/4.0; - support_points[24](0) = vertices[2](0)/4.0+vertices[3](0)/4.0+vertices[6](0)/4.0+vertices[7](0)/4.0; - support_points[24](1) = vertices[2](1)/4.0+vertices[3](1)/4.0+vertices[6](1)/4.0+vertices[7](1)/4.0; - support_points[24](2) = vertices[2](2)/4.0+vertices[3](2)/4.0+vertices[6](2)/4.0+vertices[7](2)/4.0; - support_points[25](0) = vertices[0](0)/4.0+vertices[3](0)/4.0+vertices[4](0)/4.0+vertices[7](0)/4.0; - support_points[25](1) = vertices[0](1)/4.0+vertices[3](1)/4.0+vertices[4](1)/4.0+vertices[7](1)/4.0; - support_points[25](2) = vertices[0](2)/4.0+vertices[3](2)/4.0+vertices[4](2)/4.0+vertices[7](2)/4.0; - support_points[26](0) = vertices[0](0)/8.0+vertices[1](0)/8.0+vertices[2](0)/8.0+vertices[3](0)/8.0+vertices[4](0)/8.0+vertices[5](0)/8.0+vertices[6](0)/8.0+vertices[7](0)/8.0; - support_points[26](1) = vertices[0](1)/8.0+vertices[1](1)/8.0+vertices[2](1)/8.0+vertices[3](1)/8.0+vertices[4](1)/8.0+vertices[5](1)/8.0+vertices[6](1)/8.0+vertices[7](1)/8.0; - support_points[26](2) = vertices[0](2)/8.0+vertices[1](2)/8.0+vertices[2](2)/8.0+vertices[3](2)/8.0+vertices[4](2)/8.0+vertices[5](2)/8.0+vertices[6](2)/8.0+vertices[7](2)/8.0; -}; - - - -template <> -void FEQ2<3>::get_face_support_points (const DoFHandler<3>::face_iterator &face, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_face, - FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), - dofs_per_face)); - - for (unsigned int vertex=0; vertex<4; ++vertex) - support_points[vertex] = face->vertex(vertex); - for (unsigned int line=0; line<4; ++line) - support_points[4+line] = (support_points[line] + support_points[(line+4)%4]) / 2; - support_points[8] = (support_points[0] + - support_points[1] + - support_points[2] + - support_points[3]) / 4; -}; - -#endif - - -// explicit instantiations - -template class FEQ2; - diff --git a/deal.II/deal.II/source/fe/fe_lib.quartic.cc b/deal.II/deal.II/source/fe/fe_lib.quartic.cc deleted file mode 100644 index 07f3799abc..0000000000 --- a/deal.II/deal.II/source/fe/fe_lib.quartic.cc +++ /dev/null @@ -1,2867 +0,0 @@ -//---------------------------- fe_lib.quartic.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- fe_lib.quartic.cc --------------------------- - - -#include -#include -#include -#include -#include -#include - - -// declare explicit specializations before use: -template <> void FEQ4::initialize_matrices (); - - -#if deal_II_dimension == 1 - -template <> -FEQ4<1>::FEQ4 () : - FEQ1Mapping<1> (1, 3, 0, 0, 1, - std::vector (1, false)) -{ - initialize_matrices (); -}; - - -template <> -FEQ4<1>::FEQ4 (const int) : - FEQ1Mapping<1> (0, 5, 0, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ4<1>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](1,3) = 1.0; - prolongation[0](2,0) = 35.0/128.0; - prolongation[0](2,1) = -5.0/128.0; - prolongation[0](2,2) = 35.0/32.0; - prolongation[0](2,3) = -35.0/64.0; - prolongation[0](2,4) = 7.0/32.0; - prolongation[0](3,2) = 1.0; - prolongation[0](4,0) = -5.0/128.0; - prolongation[0](4,1) = 3.0/128.0; - prolongation[0](4,2) = 15.0/32.0; - prolongation[0](4,3) = 45.0/64.0; - prolongation[0](4,4) = -5.0/32.0; - prolongation[1](0,3) = 1.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,0) = 3.0/128.0; - prolongation[1](2,1) = -5.0/128.0; - prolongation[1](2,2) = -5.0/32.0; - prolongation[1](2,3) = 45.0/64.0; - prolongation[1](2,4) = 15.0/32.0; - prolongation[1](3,4) = 1.0; - prolongation[1](4,0) = -5.0/128.0; - prolongation[1](4,1) = 35.0/128.0; - prolongation[1](4,2) = 7.0/32.0; - prolongation[1](4,3) = -35.0/64.0; - prolongation[1](4,4) = 35.0/32.0; - - restriction[0](0,0) = 1.0; - restriction[0](2,3) = 1.0; - restriction[0](3,1) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](3,0) = 1.0; - restriction[1](4,3) = 1.0; -}; - - -template <> -double -FEQ4<1>::shape_value(const unsigned int i, - const Point<1> &p) const -{ - Assert((i -Tensor<1,1> -FEQ4<1>::shape_grad(const unsigned int i, - const Point<1> &p) const -{ - Assert((i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<1>(128.0/3.0*xi*xi*xi-80.0*xi*xi+140.0/3.0*xi-25.0/3.0); - case 1: return Point<1>(128.0/3.0*xi*xi*xi-48.0*xi*xi+44.0/3.0*xi-1.0); - case 2: return Point<1>(-512.0/3.0*xi*xi*xi+288.0*xi*xi-416.0/3.0*xi+16.0); - case 3: return Point<1>(256.0*xi*xi*xi-384.0*xi*xi+152.0*xi-12.0); - case 4: return Point<1>(-512.0/3.0*xi*xi*xi+224.0*xi*xi-224.0/3.0*xi+16.0/3.0); - }; - return Point<1>(); -}; - - -template <> -Tensor<2,1> -FEQ4<1>::shape_grad_grad (const unsigned int i, - const Point<1> &p) const -{ - Assert (i return_value; - switch (i) - { - case 0: return_value[0][0] = 128.0*xi*xi-160.0*xi+140.0/3.0; - case 1: return_value[0][0] = 128.0*xi*xi-96.0*xi+44.0/3.0; - case 2: return_value[0][0] = -512.0*xi*xi+576.0*xi-416.0/3.0; - case 3: return_value[0][0] = 768.0*xi*xi-768.0*xi+152.0; - case 4: return_value[0][0] = -512.0*xi*xi+448.0*xi-224.0/3.0; - }; - - return return_value; -}; - - -template <> -void FEQ4<1>::get_unit_support_points (std::vector > &unit_points) const { - FiniteElement<1>::get_unit_support_points (unit_points); -}; - - -template <> -void FEQ4<1>::get_support_points (const DoFHandler<1>::cell_iterator &cell, - std::vector > &support_points) const { - FiniteElement<1>::get_support_points (cell, support_points); -}; - - -template <> -void FEQ4<1>::get_face_support_points (const DoFHandler<1>::face_iterator &, - std::vector > &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ4<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell)); - - const double h = cell->vertex(1)(0) - cell->vertex(0)(0); - Assert (h>0, ExcJacobiDeterminantHasWrongSign()); - - const double t1 = 146.0/2835.0*h; - const double t2 = 29.0/5670.0*h; - const double t3 = 148.0/2835.0*h; - const double t4 = 29.0/945.0*h; - const double t5 = 4.0/405.0*h; - const double t6 = 128.0/405.0*h; - const double t7 = 64.0/945.0*h; - const double t8 = 128.0/2835.0*h; - local_mass_matrix(0,0) = t1; - local_mass_matrix(0,1) = -t2; - local_mass_matrix(0,2) = t3; - local_mass_matrix(0,3) = -t4; - local_mass_matrix(0,4) = t5; - local_mass_matrix(1,0) = -t2; - local_mass_matrix(1,1) = t1; - local_mass_matrix(1,2) = t5; - local_mass_matrix(1,3) = -t4; - local_mass_matrix(1,4) = t3; - local_mass_matrix(2,0) = t3; - local_mass_matrix(2,1) = t5; - local_mass_matrix(2,2) = t6; - local_mass_matrix(2,3) = -t7; - local_mass_matrix(2,4) = t8; - local_mass_matrix(3,0) = -t4; - local_mass_matrix(3,1) = -t4; - local_mass_matrix(3,2) = -t7; - local_mass_matrix(3,3) = 104.0/315.0*h; - local_mass_matrix(3,4) = -t7; - local_mass_matrix(4,0) = t5; - local_mass_matrix(4,1) = t3; - local_mass_matrix(4,2) = t8; - local_mass_matrix(4,3) = -t7; - local_mass_matrix(4,4) = t6; -}; - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEQ4<2>::FEQ4 () : - FEQ1Mapping<2> (1, 3, 9, 0, 1, - std::vector (1, false)) -{ - interface_constraints(0,3) = 1.0; - interface_constraints(1,0) = 35.0/128.0; - interface_constraints(1,1) = -5.0/128.0; - interface_constraints(1,2) = 35.0/32.0; - interface_constraints(1,3) = -35.0/64.0; - interface_constraints(1,4) = 7.0/32.0; - interface_constraints(2,2) = 1.0; - interface_constraints(3,0) = -5.0/128.0; - interface_constraints(3,1) = 3.0/128.0; - interface_constraints(3,2) = 15.0/32.0; - interface_constraints(3,3) = 45.0/64.0; - interface_constraints(3,4) = -5.0/32.0; - interface_constraints(4,0) = 3.0/128.0; - interface_constraints(4,1) = -5.0/128.0; - interface_constraints(4,2) = -5.0/32.0; - interface_constraints(4,3) = 45.0/64.0; - interface_constraints(4,4) = 15.0/32.0; - interface_constraints(5,4) = 1.0; - interface_constraints(6,0) = -5.0/128.0; - interface_constraints(6,1) = 35.0/128.0; - interface_constraints(6,2) = 7.0/32.0; - interface_constraints(6,3) = -35.0/64.0; - interface_constraints(6,4) = 35.0/32.0; - - initialize_matrices (); -}; - - -template <> -FEQ4<2>::FEQ4 (const int) : - FEQ1Mapping<2> (0, 0, 25, 0, 1, - std::vector (1, true)) -{ - initialize_matrices (); -}; - - -template <> -void FEQ4<2>::initialize_matrices () -{ - prolongation[0](0,0) = 1.0; - prolongation[0](1,5) = 1.0; - prolongation[0](2,24) = 1.0; - prolongation[0](3,14) = 1.0; - prolongation[0](4,0) = 35.0/128.0; - prolongation[0](4,1) = -5.0/128.0; - prolongation[0](4,4) = 35.0/32.0; - prolongation[0](4,5) = -35.0/64.0; - prolongation[0](4,6) = 7.0/32.0; - prolongation[0](5,4) = 1.0; - prolongation[0](6,0) = -5.0/128.0; - prolongation[0](6,1) = 3.0/128.0; - prolongation[0](6,4) = 15.0/32.0; - prolongation[0](6,5) = 45.0/64.0; - prolongation[0](6,6) = -5.0/32.0; - prolongation[0](7,5) = 35.0/128.0; - prolongation[0](7,11) = -5.0/128.0; - prolongation[0](7,20) = 35.0/32.0; - prolongation[0](7,22) = 7.0/32.0; - prolongation[0](7,24) = -35.0/64.0; - prolongation[0](8,20) = 1.0; - prolongation[0](9,5) = -5.0/128.0; - prolongation[0](9,11) = 3.0/128.0; - prolongation[0](9,20) = 15.0/32.0; - prolongation[0](9,22) = -5.0/32.0; - prolongation[0](9,24) = 45.0/64.0; - prolongation[0](10,8) = -5.0/128.0; - prolongation[0](10,14) = 35.0/128.0; - prolongation[0](10,21) = 7.0/32.0; - prolongation[0](10,23) = 35.0/32.0; - prolongation[0](10,24) = -35.0/64.0; - prolongation[0](11,23) = 1.0; - prolongation[0](12,8) = 3.0/128.0; - prolongation[0](12,14) = -5.0/128.0; - prolongation[0](12,21) = -5.0/32.0; - prolongation[0](12,23) = 15.0/32.0; - prolongation[0](12,24) = 45.0/64.0; - prolongation[0](13,0) = 35.0/128.0; - prolongation[0](13,3) = -5.0/128.0; - prolongation[0](13,13) = 35.0/32.0; - prolongation[0](13,14) = -35.0/64.0; - prolongation[0](13,15) = 7.0/32.0; - prolongation[0](14,13) = 1.0; - prolongation[0](15,0) = -5.0/128.0; - prolongation[0](15,3) = 3.0/128.0; - prolongation[0](15,13) = 15.0/32.0; - prolongation[0](15,14) = 45.0/64.0; - prolongation[0](15,15) = -5.0/32.0; - prolongation[0](16,0) = 1225.0/16384.0; - prolongation[0](16,1) = -175.0/16384.0; - prolongation[0](16,2) = 25.0/16384.0; - prolongation[0](16,3) = -175.0/16384.0; - prolongation[0](16,4) = 1225.0/4096.0; - prolongation[0](16,5) = -1225.0/8192.0; - prolongation[0](16,6) = 245.0/4096.0; - prolongation[0](16,7) = -175.0/4096.0; - prolongation[0](16,8) = 175.0/8192.0; - prolongation[0](16,9) = -35.0/4096.0; - prolongation[0](16,10) = -175.0/4096.0; - prolongation[0](16,11) = 175.0/8192.0; - prolongation[0](16,12) = -35.0/4096.0; - prolongation[0](16,13) = 1225.0/4096.0; - prolongation[0](16,14) = -1225.0/8192.0; - prolongation[0](16,15) = 245.0/4096.0; - prolongation[0](16,16) = 1225.0/1024.0; - prolongation[0](16,17) = 245.0/1024.0; - prolongation[0](16,18) = 49.0/1024.0; - prolongation[0](16,19) = 245.0/1024.0; - prolongation[0](16,20) = -1225.0/2048.0; - prolongation[0](16,21) = -245.0/2048.0; - prolongation[0](16,22) = -245.0/2048.0; - prolongation[0](16,23) = -1225.0/2048.0; - prolongation[0](16,24) = 1225.0/4096.0; - prolongation[0](17,0) = -175.0/16384.0; - prolongation[0](17,1) = 105.0/16384.0; - prolongation[0](17,2) = -15.0/16384.0; - prolongation[0](17,3) = 25.0/16384.0; - prolongation[0](17,4) = 525.0/4096.0; - prolongation[0](17,5) = 1575.0/8192.0; - prolongation[0](17,6) = -175.0/4096.0; - prolongation[0](17,7) = 105.0/4096.0; - prolongation[0](17,8) = -105.0/8192.0; - prolongation[0](17,9) = 21.0/4096.0; - prolongation[0](17,10) = -75.0/4096.0; - prolongation[0](17,11) = -225.0/8192.0; - prolongation[0](17,12) = 25.0/4096.0; - prolongation[0](17,13) = -175.0/4096.0; - prolongation[0](17,14) = 175.0/8192.0; - prolongation[0](17,15) = -35.0/4096.0; - prolongation[0](17,16) = 525.0/1024.0; - prolongation[0](17,17) = -175.0/1024.0; - prolongation[0](17,18) = -35.0/1024.0; - prolongation[0](17,19) = 105.0/1024.0; - prolongation[0](17,20) = 1575.0/2048.0; - prolongation[0](17,21) = 175.0/2048.0; - prolongation[0](17,22) = 315.0/2048.0; - prolongation[0](17,23) = -525.0/2048.0; - prolongation[0](17,24) = -1575.0/4096.0; - prolongation[0](18,0) = 25.0/16384.0; - prolongation[0](18,1) = -15.0/16384.0; - prolongation[0](18,2) = 9.0/16384.0; - prolongation[0](18,3) = -15.0/16384.0; - prolongation[0](18,4) = -75.0/4096.0; - prolongation[0](18,5) = -225.0/8192.0; - prolongation[0](18,6) = 25.0/4096.0; - prolongation[0](18,7) = 45.0/4096.0; - prolongation[0](18,8) = 135.0/8192.0; - prolongation[0](18,9) = -15.0/4096.0; - prolongation[0](18,10) = 45.0/4096.0; - prolongation[0](18,11) = 135.0/8192.0; - prolongation[0](18,12) = -15.0/4096.0; - prolongation[0](18,13) = -75.0/4096.0; - prolongation[0](18,14) = -225.0/8192.0; - prolongation[0](18,15) = 25.0/4096.0; - prolongation[0](18,16) = 225.0/1024.0; - prolongation[0](18,17) = -75.0/1024.0; - prolongation[0](18,18) = 25.0/1024.0; - prolongation[0](18,19) = -75.0/1024.0; - prolongation[0](18,20) = 675.0/2048.0; - prolongation[0](18,21) = -225.0/2048.0; - prolongation[0](18,22) = -225.0/2048.0; - prolongation[0](18,23) = 675.0/2048.0; - prolongation[0](18,24) = 2025.0/4096.0; - prolongation[0](19,0) = -175.0/16384.0; - prolongation[0](19,1) = 25.0/16384.0; - prolongation[0](19,2) = -15.0/16384.0; - prolongation[0](19,3) = 105.0/16384.0; - prolongation[0](19,4) = -175.0/4096.0; - prolongation[0](19,5) = 175.0/8192.0; - prolongation[0](19,6) = -35.0/4096.0; - prolongation[0](19,7) = -75.0/4096.0; - prolongation[0](19,8) = -225.0/8192.0; - prolongation[0](19,9) = 25.0/4096.0; - prolongation[0](19,10) = 105.0/4096.0; - prolongation[0](19,11) = -105.0/8192.0; - prolongation[0](19,12) = 21.0/4096.0; - prolongation[0](19,13) = 525.0/4096.0; - prolongation[0](19,14) = 1575.0/8192.0; - prolongation[0](19,15) = -175.0/4096.0; - prolongation[0](19,16) = 525.0/1024.0; - prolongation[0](19,17) = 105.0/1024.0; - prolongation[0](19,18) = -35.0/1024.0; - prolongation[0](19,19) = -175.0/1024.0; - prolongation[0](19,20) = -525.0/2048.0; - prolongation[0](19,21) = 315.0/2048.0; - prolongation[0](19,22) = 175.0/2048.0; - prolongation[0](19,23) = 1575.0/2048.0; - prolongation[0](19,24) = -1575.0/4096.0; - prolongation[0](20,4) = 35.0/128.0; - prolongation[0](20,10) = -5.0/128.0; - prolongation[0](20,16) = 35.0/32.0; - prolongation[0](20,19) = 7.0/32.0; - prolongation[0](20,23) = -35.0/64.0; - prolongation[0](21,7) = 3.0/128.0; - prolongation[0](21,13) = -5.0/128.0; - prolongation[0](21,16) = 15.0/32.0; - prolongation[0](21,17) = -5.0/32.0; - prolongation[0](21,20) = 45.0/64.0; - prolongation[0](22,4) = -5.0/128.0; - prolongation[0](22,10) = 3.0/128.0; - prolongation[0](22,16) = 15.0/32.0; - prolongation[0](22,19) = -5.0/32.0; - prolongation[0](22,23) = 45.0/64.0; - prolongation[0](23,7) = -5.0/128.0; - prolongation[0](23,13) = 35.0/128.0; - prolongation[0](23,16) = 35.0/32.0; - prolongation[0](23,17) = 7.0/32.0; - prolongation[0](23,20) = -35.0/64.0; - prolongation[0](24,16) = 1.0; - prolongation[1](0,5) = 1.0; - prolongation[1](1,1) = 1.0; - prolongation[1](2,8) = 1.0; - prolongation[1](3,24) = 1.0; - prolongation[1](4,0) = 3.0/128.0; - prolongation[1](4,1) = -5.0/128.0; - prolongation[1](4,4) = -5.0/32.0; - prolongation[1](4,5) = 45.0/64.0; - prolongation[1](4,6) = 15.0/32.0; - prolongation[1](5,6) = 1.0; - prolongation[1](6,0) = -5.0/128.0; - prolongation[1](6,1) = 35.0/128.0; - prolongation[1](6,4) = 7.0/32.0; - prolongation[1](6,5) = -35.0/64.0; - prolongation[1](6,6) = 35.0/32.0; - prolongation[1](7,1) = 35.0/128.0; - prolongation[1](7,2) = -5.0/128.0; - prolongation[1](7,7) = 35.0/32.0; - prolongation[1](7,8) = -35.0/64.0; - prolongation[1](7,9) = 7.0/32.0; - prolongation[1](8,7) = 1.0; - prolongation[1](9,1) = -5.0/128.0; - prolongation[1](9,2) = 3.0/128.0; - prolongation[1](9,7) = 15.0/32.0; - prolongation[1](9,8) = 45.0/64.0; - prolongation[1](9,9) = -5.0/32.0; - prolongation[1](10,8) = -5.0/128.0; - prolongation[1](10,14) = 3.0/128.0; - prolongation[1](10,21) = 15.0/32.0; - prolongation[1](10,23) = -5.0/32.0; - prolongation[1](10,24) = 45.0/64.0; - prolongation[1](11,21) = 1.0; - prolongation[1](12,8) = 35.0/128.0; - prolongation[1](12,14) = -5.0/128.0; - prolongation[1](12,21) = 35.0/32.0; - prolongation[1](12,23) = 7.0/32.0; - prolongation[1](12,24) = -35.0/64.0; - prolongation[1](13,5) = 35.0/128.0; - prolongation[1](13,11) = -5.0/128.0; - prolongation[1](13,20) = 35.0/32.0; - prolongation[1](13,22) = 7.0/32.0; - prolongation[1](13,24) = -35.0/64.0; - prolongation[1](14,20) = 1.0; - prolongation[1](15,5) = -5.0/128.0; - prolongation[1](15,11) = 3.0/128.0; - prolongation[1](15,20) = 15.0/32.0; - prolongation[1](15,22) = -5.0/32.0; - prolongation[1](15,24) = 45.0/64.0; - prolongation[1](16,0) = 105.0/16384.0; - prolongation[1](16,1) = -175.0/16384.0; - prolongation[1](16,2) = 25.0/16384.0; - prolongation[1](16,3) = -15.0/16384.0; - prolongation[1](16,4) = -175.0/4096.0; - prolongation[1](16,5) = 1575.0/8192.0; - prolongation[1](16,6) = 525.0/4096.0; - prolongation[1](16,7) = -175.0/4096.0; - prolongation[1](16,8) = 175.0/8192.0; - prolongation[1](16,9) = -35.0/4096.0; - prolongation[1](16,10) = 25.0/4096.0; - prolongation[1](16,11) = -225.0/8192.0; - prolongation[1](16,12) = -75.0/4096.0; - prolongation[1](16,13) = 105.0/4096.0; - prolongation[1](16,14) = -105.0/8192.0; - prolongation[1](16,15) = 21.0/4096.0; - prolongation[1](16,16) = -175.0/1024.0; - prolongation[1](16,17) = 525.0/1024.0; - prolongation[1](16,18) = 105.0/1024.0; - prolongation[1](16,19) = -35.0/1024.0; - prolongation[1](16,20) = 1575.0/2048.0; - prolongation[1](16,21) = -525.0/2048.0; - prolongation[1](16,22) = 315.0/2048.0; - prolongation[1](16,23) = 175.0/2048.0; - prolongation[1](16,24) = -1575.0/4096.0; - prolongation[1](17,0) = -175.0/16384.0; - prolongation[1](17,1) = 1225.0/16384.0; - prolongation[1](17,2) = -175.0/16384.0; - prolongation[1](17,3) = 25.0/16384.0; - prolongation[1](17,4) = 245.0/4096.0; - prolongation[1](17,5) = -1225.0/8192.0; - prolongation[1](17,6) = 1225.0/4096.0; - prolongation[1](17,7) = 1225.0/4096.0; - prolongation[1](17,8) = -1225.0/8192.0; - prolongation[1](17,9) = 245.0/4096.0; - prolongation[1](17,10) = -35.0/4096.0; - prolongation[1](17,11) = 175.0/8192.0; - prolongation[1](17,12) = -175.0/4096.0; - prolongation[1](17,13) = -175.0/4096.0; - prolongation[1](17,14) = 175.0/8192.0; - prolongation[1](17,15) = -35.0/4096.0; - prolongation[1](17,16) = 245.0/1024.0; - prolongation[1](17,17) = 1225.0/1024.0; - prolongation[1](17,18) = 245.0/1024.0; - prolongation[1](17,19) = 49.0/1024.0; - prolongation[1](17,20) = -1225.0/2048.0; - prolongation[1](17,21) = -1225.0/2048.0; - prolongation[1](17,22) = -245.0/2048.0; - prolongation[1](17,23) = -245.0/2048.0; - prolongation[1](17,24) = 1225.0/4096.0; - prolongation[1](18,0) = 25.0/16384.0; - prolongation[1](18,1) = -175.0/16384.0; - prolongation[1](18,2) = 105.0/16384.0; - prolongation[1](18,3) = -15.0/16384.0; - prolongation[1](18,4) = -35.0/4096.0; - prolongation[1](18,5) = 175.0/8192.0; - prolongation[1](18,6) = -175.0/4096.0; - prolongation[1](18,7) = 525.0/4096.0; - prolongation[1](18,8) = 1575.0/8192.0; - prolongation[1](18,9) = -175.0/4096.0; - prolongation[1](18,10) = 21.0/4096.0; - prolongation[1](18,11) = -105.0/8192.0; - prolongation[1](18,12) = 105.0/4096.0; - prolongation[1](18,13) = -75.0/4096.0; - prolongation[1](18,14) = -225.0/8192.0; - prolongation[1](18,15) = 25.0/4096.0; - prolongation[1](18,16) = 105.0/1024.0; - prolongation[1](18,17) = 525.0/1024.0; - prolongation[1](18,18) = -175.0/1024.0; - prolongation[1](18,19) = -35.0/1024.0; - prolongation[1](18,20) = -525.0/2048.0; - prolongation[1](18,21) = 1575.0/2048.0; - prolongation[1](18,22) = 175.0/2048.0; - prolongation[1](18,23) = 315.0/2048.0; - prolongation[1](18,24) = -1575.0/4096.0; - prolongation[1](19,0) = -15.0/16384.0; - prolongation[1](19,1) = 25.0/16384.0; - prolongation[1](19,2) = -15.0/16384.0; - prolongation[1](19,3) = 9.0/16384.0; - prolongation[1](19,4) = 25.0/4096.0; - prolongation[1](19,5) = -225.0/8192.0; - prolongation[1](19,6) = -75.0/4096.0; - prolongation[1](19,7) = -75.0/4096.0; - prolongation[1](19,8) = -225.0/8192.0; - prolongation[1](19,9) = 25.0/4096.0; - prolongation[1](19,10) = -15.0/4096.0; - prolongation[1](19,11) = 135.0/8192.0; - prolongation[1](19,12) = 45.0/4096.0; - prolongation[1](19,13) = 45.0/4096.0; - prolongation[1](19,14) = 135.0/8192.0; - prolongation[1](19,15) = -15.0/4096.0; - prolongation[1](19,16) = -75.0/1024.0; - prolongation[1](19,17) = 225.0/1024.0; - prolongation[1](19,18) = -75.0/1024.0; - prolongation[1](19,19) = 25.0/1024.0; - prolongation[1](19,20) = 675.0/2048.0; - prolongation[1](19,21) = 675.0/2048.0; - prolongation[1](19,22) = -225.0/2048.0; - prolongation[1](19,23) = -225.0/2048.0; - prolongation[1](19,24) = 2025.0/4096.0; - prolongation[1](20,6) = 35.0/128.0; - prolongation[1](20,12) = -5.0/128.0; - prolongation[1](20,17) = 35.0/32.0; - prolongation[1](20,18) = 7.0/32.0; - prolongation[1](20,21) = -35.0/64.0; - prolongation[1](21,7) = 35.0/128.0; - prolongation[1](21,13) = -5.0/128.0; - prolongation[1](21,16) = 7.0/32.0; - prolongation[1](21,17) = 35.0/32.0; - prolongation[1](21,20) = -35.0/64.0; - prolongation[1](22,6) = -5.0/128.0; - prolongation[1](22,12) = 3.0/128.0; - prolongation[1](22,17) = 15.0/32.0; - prolongation[1](22,18) = -5.0/32.0; - prolongation[1](22,21) = 45.0/64.0; - prolongation[1](23,7) = -5.0/128.0; - prolongation[1](23,13) = 3.0/128.0; - prolongation[1](23,16) = -5.0/32.0; - prolongation[1](23,17) = 15.0/32.0; - prolongation[1](23,20) = 45.0/64.0; - prolongation[1](24,17) = 1.0; - prolongation[2](0,24) = 1.0; - prolongation[2](1,8) = 1.0; - prolongation[2](2,2) = 1.0; - prolongation[2](3,11) = 1.0; - prolongation[2](4,8) = -5.0/128.0; - prolongation[2](4,14) = 3.0/128.0; - prolongation[2](4,21) = 15.0/32.0; - prolongation[2](4,23) = -5.0/32.0; - prolongation[2](4,24) = 45.0/64.0; - prolongation[2](5,21) = 1.0; - prolongation[2](6,8) = 35.0/128.0; - prolongation[2](6,14) = -5.0/128.0; - prolongation[2](6,21) = 35.0/32.0; - prolongation[2](6,23) = 7.0/32.0; - prolongation[2](6,24) = -35.0/64.0; - prolongation[2](7,1) = 3.0/128.0; - prolongation[2](7,2) = -5.0/128.0; - prolongation[2](7,7) = -5.0/32.0; - prolongation[2](7,8) = 45.0/64.0; - prolongation[2](7,9) = 15.0/32.0; - prolongation[2](8,9) = 1.0; - prolongation[2](9,1) = -5.0/128.0; - prolongation[2](9,2) = 35.0/128.0; - prolongation[2](9,7) = 7.0/32.0; - prolongation[2](9,8) = -35.0/64.0; - prolongation[2](9,9) = 35.0/32.0; - prolongation[2](10,2) = -5.0/128.0; - prolongation[2](10,3) = 3.0/128.0; - prolongation[2](10,10) = -5.0/32.0; - prolongation[2](10,11) = 45.0/64.0; - prolongation[2](10,12) = 15.0/32.0; - prolongation[2](11,12) = 1.0; - prolongation[2](12,2) = 35.0/128.0; - prolongation[2](12,3) = -5.0/128.0; - prolongation[2](12,10) = 7.0/32.0; - prolongation[2](12,11) = -35.0/64.0; - prolongation[2](12,12) = 35.0/32.0; - prolongation[2](13,5) = 3.0/128.0; - prolongation[2](13,11) = -5.0/128.0; - prolongation[2](13,20) = -5.0/32.0; - prolongation[2](13,22) = 15.0/32.0; - prolongation[2](13,24) = 45.0/64.0; - prolongation[2](14,22) = 1.0; - prolongation[2](15,5) = -5.0/128.0; - prolongation[2](15,11) = 35.0/128.0; - prolongation[2](15,20) = 7.0/32.0; - prolongation[2](15,22) = 35.0/32.0; - prolongation[2](15,24) = -35.0/64.0; - prolongation[2](16,0) = 9.0/16384.0; - prolongation[2](16,1) = -15.0/16384.0; - prolongation[2](16,2) = 25.0/16384.0; - prolongation[2](16,3) = -15.0/16384.0; - prolongation[2](16,4) = -15.0/4096.0; - prolongation[2](16,5) = 135.0/8192.0; - prolongation[2](16,6) = 45.0/4096.0; - prolongation[2](16,7) = 25.0/4096.0; - prolongation[2](16,8) = -225.0/8192.0; - prolongation[2](16,9) = -75.0/4096.0; - prolongation[2](16,10) = 25.0/4096.0; - prolongation[2](16,11) = -225.0/8192.0; - prolongation[2](16,12) = -75.0/4096.0; - prolongation[2](16,13) = -15.0/4096.0; - prolongation[2](16,14) = 135.0/8192.0; - prolongation[2](16,15) = 45.0/4096.0; - prolongation[2](16,16) = 25.0/1024.0; - prolongation[2](16,17) = -75.0/1024.0; - prolongation[2](16,18) = 225.0/1024.0; - prolongation[2](16,19) = -75.0/1024.0; - prolongation[2](16,20) = -225.0/2048.0; - prolongation[2](16,21) = 675.0/2048.0; - prolongation[2](16,22) = 675.0/2048.0; - prolongation[2](16,23) = -225.0/2048.0; - prolongation[2](16,24) = 2025.0/4096.0; - prolongation[2](17,0) = -15.0/16384.0; - prolongation[2](17,1) = 105.0/16384.0; - prolongation[2](17,2) = -175.0/16384.0; - prolongation[2](17,3) = 25.0/16384.0; - prolongation[2](17,4) = 21.0/4096.0; - prolongation[2](17,5) = -105.0/8192.0; - prolongation[2](17,6) = 105.0/4096.0; - prolongation[2](17,7) = -175.0/4096.0; - prolongation[2](17,8) = 1575.0/8192.0; - prolongation[2](17,9) = 525.0/4096.0; - prolongation[2](17,10) = -35.0/4096.0; - prolongation[2](17,11) = 175.0/8192.0; - prolongation[2](17,12) = -175.0/4096.0; - prolongation[2](17,13) = 25.0/4096.0; - prolongation[2](17,14) = -225.0/8192.0; - prolongation[2](17,15) = -75.0/4096.0; - prolongation[2](17,16) = -35.0/1024.0; - prolongation[2](17,17) = -175.0/1024.0; - prolongation[2](17,18) = 525.0/1024.0; - prolongation[2](17,19) = 105.0/1024.0; - prolongation[2](17,20) = 175.0/2048.0; - prolongation[2](17,21) = 1575.0/2048.0; - prolongation[2](17,22) = -525.0/2048.0; - prolongation[2](17,23) = 315.0/2048.0; - prolongation[2](17,24) = -1575.0/4096.0; - prolongation[2](18,0) = 25.0/16384.0; - prolongation[2](18,1) = -175.0/16384.0; - prolongation[2](18,2) = 1225.0/16384.0; - prolongation[2](18,3) = -175.0/16384.0; - prolongation[2](18,4) = -35.0/4096.0; - prolongation[2](18,5) = 175.0/8192.0; - prolongation[2](18,6) = -175.0/4096.0; - prolongation[2](18,7) = 245.0/4096.0; - prolongation[2](18,8) = -1225.0/8192.0; - prolongation[2](18,9) = 1225.0/4096.0; - prolongation[2](18,10) = 245.0/4096.0; - prolongation[2](18,11) = -1225.0/8192.0; - prolongation[2](18,12) = 1225.0/4096.0; - prolongation[2](18,13) = -35.0/4096.0; - prolongation[2](18,14) = 175.0/8192.0; - prolongation[2](18,15) = -175.0/4096.0; - prolongation[2](18,16) = 49.0/1024.0; - prolongation[2](18,17) = 245.0/1024.0; - prolongation[2](18,18) = 1225.0/1024.0; - prolongation[2](18,19) = 245.0/1024.0; - prolongation[2](18,20) = -245.0/2048.0; - prolongation[2](18,21) = -1225.0/2048.0; - prolongation[2](18,22) = -1225.0/2048.0; - prolongation[2](18,23) = -245.0/2048.0; - prolongation[2](18,24) = 1225.0/4096.0; - prolongation[2](19,0) = -15.0/16384.0; - prolongation[2](19,1) = 25.0/16384.0; - prolongation[2](19,2) = -175.0/16384.0; - prolongation[2](19,3) = 105.0/16384.0; - prolongation[2](19,4) = 25.0/4096.0; - prolongation[2](19,5) = -225.0/8192.0; - prolongation[2](19,6) = -75.0/4096.0; - prolongation[2](19,7) = -35.0/4096.0; - prolongation[2](19,8) = 175.0/8192.0; - prolongation[2](19,9) = -175.0/4096.0; - prolongation[2](19,10) = -175.0/4096.0; - prolongation[2](19,11) = 1575.0/8192.0; - prolongation[2](19,12) = 525.0/4096.0; - prolongation[2](19,13) = 21.0/4096.0; - prolongation[2](19,14) = -105.0/8192.0; - prolongation[2](19,15) = 105.0/4096.0; - prolongation[2](19,16) = -35.0/1024.0; - prolongation[2](19,17) = 105.0/1024.0; - prolongation[2](19,18) = 525.0/1024.0; - prolongation[2](19,19) = -175.0/1024.0; - prolongation[2](19,20) = 315.0/2048.0; - prolongation[2](19,21) = -525.0/2048.0; - prolongation[2](19,22) = 1575.0/2048.0; - prolongation[2](19,23) = 175.0/2048.0; - prolongation[2](19,24) = -1575.0/4096.0; - prolongation[2](20,6) = 3.0/128.0; - prolongation[2](20,12) = -5.0/128.0; - prolongation[2](20,17) = -5.0/32.0; - prolongation[2](20,18) = 15.0/32.0; - prolongation[2](20,21) = 45.0/64.0; - prolongation[2](21,9) = 35.0/128.0; - prolongation[2](21,15) = -5.0/128.0; - prolongation[2](21,18) = 35.0/32.0; - prolongation[2](21,19) = 7.0/32.0; - prolongation[2](21,22) = -35.0/64.0; - prolongation[2](22,6) = -5.0/128.0; - prolongation[2](22,12) = 35.0/128.0; - prolongation[2](22,17) = 7.0/32.0; - prolongation[2](22,18) = 35.0/32.0; - prolongation[2](22,21) = -35.0/64.0; - prolongation[2](23,9) = -5.0/128.0; - prolongation[2](23,15) = 3.0/128.0; - prolongation[2](23,18) = 15.0/32.0; - prolongation[2](23,19) = -5.0/32.0; - prolongation[2](23,22) = 45.0/64.0; - prolongation[2](24,18) = 1.0; - prolongation[3](0,14) = 1.0; - prolongation[3](1,24) = 1.0; - prolongation[3](2,11) = 1.0; - prolongation[3](3,3) = 1.0; - prolongation[3](4,8) = -5.0/128.0; - prolongation[3](4,14) = 35.0/128.0; - prolongation[3](4,21) = 7.0/32.0; - prolongation[3](4,23) = 35.0/32.0; - prolongation[3](4,24) = -35.0/64.0; - prolongation[3](5,23) = 1.0; - prolongation[3](6,8) = 3.0/128.0; - prolongation[3](6,14) = -5.0/128.0; - prolongation[3](6,21) = -5.0/32.0; - prolongation[3](6,23) = 15.0/32.0; - prolongation[3](6,24) = 45.0/64.0; - prolongation[3](7,5) = 3.0/128.0; - prolongation[3](7,11) = -5.0/128.0; - prolongation[3](7,20) = -5.0/32.0; - prolongation[3](7,22) = 15.0/32.0; - prolongation[3](7,24) = 45.0/64.0; - prolongation[3](8,22) = 1.0; - prolongation[3](9,5) = -5.0/128.0; - prolongation[3](9,11) = 35.0/128.0; - prolongation[3](9,20) = 7.0/32.0; - prolongation[3](9,22) = 35.0/32.0; - prolongation[3](9,24) = -35.0/64.0; - prolongation[3](10,2) = -5.0/128.0; - prolongation[3](10,3) = 35.0/128.0; - prolongation[3](10,10) = 35.0/32.0; - prolongation[3](10,11) = -35.0/64.0; - prolongation[3](10,12) = 7.0/32.0; - prolongation[3](11,10) = 1.0; - prolongation[3](12,2) = 3.0/128.0; - prolongation[3](12,3) = -5.0/128.0; - prolongation[3](12,10) = 15.0/32.0; - prolongation[3](12,11) = 45.0/64.0; - prolongation[3](12,12) = -5.0/32.0; - prolongation[3](13,0) = 3.0/128.0; - prolongation[3](13,3) = -5.0/128.0; - prolongation[3](13,13) = -5.0/32.0; - prolongation[3](13,14) = 45.0/64.0; - prolongation[3](13,15) = 15.0/32.0; - prolongation[3](14,15) = 1.0; - prolongation[3](15,0) = -5.0/128.0; - prolongation[3](15,3) = 35.0/128.0; - prolongation[3](15,13) = 7.0/32.0; - prolongation[3](15,14) = -35.0/64.0; - prolongation[3](15,15) = 35.0/32.0; - prolongation[3](16,0) = 105.0/16384.0; - prolongation[3](16,1) = -15.0/16384.0; - prolongation[3](16,2) = 25.0/16384.0; - prolongation[3](16,3) = -175.0/16384.0; - prolongation[3](16,4) = 105.0/4096.0; - prolongation[3](16,5) = -105.0/8192.0; - prolongation[3](16,6) = 21.0/4096.0; - prolongation[3](16,7) = 25.0/4096.0; - prolongation[3](16,8) = -225.0/8192.0; - prolongation[3](16,9) = -75.0/4096.0; - prolongation[3](16,10) = -175.0/4096.0; - prolongation[3](16,11) = 175.0/8192.0; - prolongation[3](16,12) = -35.0/4096.0; - prolongation[3](16,13) = -175.0/4096.0; - prolongation[3](16,14) = 1575.0/8192.0; - prolongation[3](16,15) = 525.0/4096.0; - prolongation[3](16,16) = -175.0/1024.0; - prolongation[3](16,17) = -35.0/1024.0; - prolongation[3](16,18) = 105.0/1024.0; - prolongation[3](16,19) = 525.0/1024.0; - prolongation[3](16,20) = 175.0/2048.0; - prolongation[3](16,21) = 315.0/2048.0; - prolongation[3](16,22) = -525.0/2048.0; - prolongation[3](16,23) = 1575.0/2048.0; - prolongation[3](16,24) = -1575.0/4096.0; - prolongation[3](17,0) = -15.0/16384.0; - prolongation[3](17,1) = 9.0/16384.0; - prolongation[3](17,2) = -15.0/16384.0; - prolongation[3](17,3) = 25.0/16384.0; - prolongation[3](17,4) = 45.0/4096.0; - prolongation[3](17,5) = 135.0/8192.0; - prolongation[3](17,6) = -15.0/4096.0; - prolongation[3](17,7) = -15.0/4096.0; - prolongation[3](17,8) = 135.0/8192.0; - prolongation[3](17,9) = 45.0/4096.0; - prolongation[3](17,10) = -75.0/4096.0; - prolongation[3](17,11) = -225.0/8192.0; - prolongation[3](17,12) = 25.0/4096.0; - prolongation[3](17,13) = 25.0/4096.0; - prolongation[3](17,14) = -225.0/8192.0; - prolongation[3](17,15) = -75.0/4096.0; - prolongation[3](17,16) = -75.0/1024.0; - prolongation[3](17,17) = 25.0/1024.0; - prolongation[3](17,18) = -75.0/1024.0; - prolongation[3](17,19) = 225.0/1024.0; - prolongation[3](17,20) = -225.0/2048.0; - prolongation[3](17,21) = -225.0/2048.0; - prolongation[3](17,22) = 675.0/2048.0; - prolongation[3](17,23) = 675.0/2048.0; - prolongation[3](17,24) = 2025.0/4096.0; - prolongation[3](18,0) = 25.0/16384.0; - prolongation[3](18,1) = -15.0/16384.0; - prolongation[3](18,2) = 105.0/16384.0; - prolongation[3](18,3) = -175.0/16384.0; - prolongation[3](18,4) = -75.0/4096.0; - prolongation[3](18,5) = -225.0/8192.0; - prolongation[3](18,6) = 25.0/4096.0; - prolongation[3](18,7) = 21.0/4096.0; - prolongation[3](18,8) = -105.0/8192.0; - prolongation[3](18,9) = 105.0/4096.0; - prolongation[3](18,10) = 525.0/4096.0; - prolongation[3](18,11) = 1575.0/8192.0; - prolongation[3](18,12) = -175.0/4096.0; - prolongation[3](18,13) = -35.0/4096.0; - prolongation[3](18,14) = 175.0/8192.0; - prolongation[3](18,15) = -175.0/4096.0; - prolongation[3](18,16) = 105.0/1024.0; - prolongation[3](18,17) = -35.0/1024.0; - prolongation[3](18,18) = -175.0/1024.0; - prolongation[3](18,19) = 525.0/1024.0; - prolongation[3](18,20) = 315.0/2048.0; - prolongation[3](18,21) = 175.0/2048.0; - prolongation[3](18,22) = 1575.0/2048.0; - prolongation[3](18,23) = -525.0/2048.0; - prolongation[3](18,24) = -1575.0/4096.0; - prolongation[3](19,0) = -175.0/16384.0; - prolongation[3](19,1) = 25.0/16384.0; - prolongation[3](19,2) = -175.0/16384.0; - prolongation[3](19,3) = 1225.0/16384.0; - prolongation[3](19,4) = -175.0/4096.0; - prolongation[3](19,5) = 175.0/8192.0; - prolongation[3](19,6) = -35.0/4096.0; - prolongation[3](19,7) = -35.0/4096.0; - prolongation[3](19,8) = 175.0/8192.0; - prolongation[3](19,9) = -175.0/4096.0; - prolongation[3](19,10) = 1225.0/4096.0; - prolongation[3](19,11) = -1225.0/8192.0; - prolongation[3](19,12) = 245.0/4096.0; - prolongation[3](19,13) = 245.0/4096.0; - prolongation[3](19,14) = -1225.0/8192.0; - prolongation[3](19,15) = 1225.0/4096.0; - prolongation[3](19,16) = 245.0/1024.0; - prolongation[3](19,17) = 49.0/1024.0; - prolongation[3](19,18) = 245.0/1024.0; - prolongation[3](19,19) = 1225.0/1024.0; - prolongation[3](19,20) = -245.0/2048.0; - prolongation[3](19,21) = -245.0/2048.0; - prolongation[3](19,22) = -1225.0/2048.0; - prolongation[3](19,23) = -1225.0/2048.0; - prolongation[3](19,24) = 1225.0/4096.0; - prolongation[3](20,4) = 3.0/128.0; - prolongation[3](20,10) = -5.0/128.0; - prolongation[3](20,16) = -5.0/32.0; - prolongation[3](20,19) = 15.0/32.0; - prolongation[3](20,23) = 45.0/64.0; - prolongation[3](21,9) = 3.0/128.0; - prolongation[3](21,15) = -5.0/128.0; - prolongation[3](21,18) = -5.0/32.0; - prolongation[3](21,19) = 15.0/32.0; - prolongation[3](21,22) = 45.0/64.0; - prolongation[3](22,4) = -5.0/128.0; - prolongation[3](22,10) = 35.0/128.0; - prolongation[3](22,16) = 7.0/32.0; - prolongation[3](22,19) = 35.0/32.0; - prolongation[3](22,23) = -35.0/64.0; - prolongation[3](23,9) = -5.0/128.0; - prolongation[3](23,15) = 35.0/128.0; - prolongation[3](23,18) = 7.0/32.0; - prolongation[3](23,19) = 35.0/32.0; - prolongation[3](23,22) = -35.0/64.0; - prolongation[3](24,19) = 1.0; - - restriction[0](0,0) = 1.0; - restriction[0](4,5) = 1.0; - restriction[0](5,1) = 1.0; - restriction[0](13,14) = 1.0; - restriction[0](14,3) = 1.0; - restriction[0](16,24) = 1.0; - restriction[0](20,8) = 1.0; - restriction[0](23,11) = 1.0; - restriction[0](24,2) = 1.0; - restriction[1](1,1) = 1.0; - restriction[1](5,0) = 1.0; - restriction[1](6,5) = 1.0; - restriction[1](7,8) = 1.0; - restriction[1](8,2) = 1.0; - restriction[1](17,24) = 1.0; - restriction[1](20,14) = 1.0; - restriction[1](21,11) = 1.0; - restriction[1](24,3) = 1.0; - restriction[2](2,2) = 1.0; - restriction[2](8,1) = 1.0; - restriction[2](9,8) = 1.0; - restriction[2](11,3) = 1.0; - restriction[2](12,11) = 1.0; - restriction[2](18,24) = 1.0; - restriction[2](21,5) = 1.0; - restriction[2](22,14) = 1.0; - restriction[2](24,0) = 1.0; - restriction[3](3,3) = 1.0; - restriction[3](10,11) = 1.0; - restriction[3](11,2) = 1.0; - restriction[3](14,0) = 1.0; - restriction[3](15,14) = 1.0; - restriction[3](19,24) = 1.0; - restriction[3](22,8) = 1.0; - restriction[3](23,5) = 1.0; - restriction[3](24,1) = 1.0; -}; - - -template <> -double -FEQ4<2>::shape_value (const unsigned int i, - const Point<2> &p) const -{ - Assert (i -Tensor<1,2> -FEQ4<2>::shape_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i, so we - // still construct it as that. it should - // make no difference in practice, - // however - switch (i) - { - case 0: return Point<2>(-25.0/3.0+140.0/3.0*xi-80.0*xi*xi+128.0/3.0*xi*xi*xi+(625.0/9.0-3500.0/9.0*xi+2000.0/3.0*xi*xi-3200.0/9.0*xi*xi*xi)*eta+(-1750.0/9.0+9800.0/9.0*xi-5600.0/3.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta*eta+(2000.0/9.0-11200.0/9.0*xi+6400.0/3.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta*eta+(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -25.0/3.0+625.0/9.0*xi-1750.0/9.0*xi*xi+2000.0/9.0*xi*xi*xi-800.0/9.0*xi*xi*xi*xi+2.0*(70.0/3.0-1750.0/9.0*xi+4900.0/9.0*xi*xi-5600.0/9.0*xi*xi*xi+2240.0/9.0*xi*xi*xi*xi)*eta+3.0*(-80.0/3.0+2000.0/9.0*xi-5600.0/9.0*xi*xi+6400.0/9.0*xi*xi*xi-2560.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(32.0/3.0-800.0/9.0*xi+2240.0/9.0*xi*xi-2560.0/9.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 1: return Point<2>(-1.0+44.0/3.0*xi-48.0*xi*xi+128.0/3.0*xi*xi*xi+(25.0/3.0-1100.0/9.0*xi+400.0*xi*xi-3200.0/9.0*xi*xi*xi)*eta+(-70.0/3.0+3080.0/9.0*xi-1120.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta*eta+(80.0/3.0-3520.0/9.0*xi+1280.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta*eta+(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 25.0/3.0*xi-550.0/9.0*xi*xi+400.0/3.0*xi*xi*xi-800.0/9.0*xi*xi*xi*xi+2.0*(-70.0/3.0*xi+1540.0/9.0*xi*xi-1120.0/3.0*xi*xi*xi+2240.0/9.0*xi*xi*xi*xi)*eta+3.0*(80.0/3.0*xi-1760.0/9.0*xi*xi+1280.0/3.0*xi*xi*xi-2560.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0*xi+704.0/9.0*xi*xi-512.0/3.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 2: return Point<2>((1.0-44.0/3.0*xi+48.0*xi*xi-128.0/3.0*xi*xi*xi)*eta+(-22.0/3.0+968.0/9.0*xi-352.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta*eta+(16.0-704.0/3.0*xi+768.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta*eta+(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - xi-22.0/3.0*xi*xi+16.0*xi*xi*xi-32.0/3.0*xi*xi*xi*xi+2.0*(-22.0/3.0*xi+484.0/9.0*xi*xi-352.0/3.0*xi*xi*xi+704.0/9.0*xi*xi*xi*xi)*eta+3.0*(16.0*xi-352.0/3.0*xi*xi+256.0*xi*xi*xi-512.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0*xi+704.0/9.0*xi*xi-512.0/3.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 3: return Point<2>((25.0/3.0-140.0/3.0*xi+80.0*xi*xi-128.0/3.0*xi*xi*xi)*eta+(-550.0/9.0+3080.0/9.0*xi-1760.0/3.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta*eta+(400.0/3.0-2240.0/3.0*xi+1280.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta*eta+(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -1.0+25.0/3.0*xi-70.0/3.0*xi*xi+80.0/3.0*xi*xi*xi-32.0/3.0*xi*xi*xi*xi+2.0*(22.0/3.0-550.0/9.0*xi+1540.0/9.0*xi*xi-1760.0/9.0*xi*xi*xi+704.0/9.0*xi*xi*xi*xi)*eta+3.0*(-16.0+400.0/3.0*xi-1120.0/3.0*xi*xi+1280.0/3.0*xi*xi*xi-512.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(32.0/3.0-800.0/9.0*xi+2240.0/9.0*xi*xi-2560.0/9.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 4: return Point<2>(16.0-416.0/3.0*xi+288.0*xi*xi-512.0/3.0*xi*xi*xi+(-400.0/3.0+10400.0/9.0*xi-2400.0*xi*xi+12800.0/9.0*xi*xi*xi)*eta+(1120.0/3.0-29120.0/9.0*xi+6720.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta*eta+(-1280.0/3.0+33280.0/9.0*xi-7680.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta*eta+(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -400.0/3.0*xi+5200.0/9.0*xi*xi-800.0*xi*xi*xi+3200.0/9.0*xi*xi*xi*xi+2.0*(1120.0/3.0*xi-14560.0/9.0*xi*xi+2240.0*xi*xi*xi-8960.0/9.0*xi*xi*xi*xi)*eta+3.0*(-1280.0/3.0*xi+16640.0/9.0*xi*xi-2560.0*xi*xi*xi+10240.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0/3.0*xi-6656.0/9.0*xi*xi+1024.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 5: return Point<2>(-12.0+152.0*xi-384.0*xi*xi+256.0*xi*xi*xi+(100.0-3800.0/3.0*xi+3200.0*xi*xi-6400.0/3.0*xi*xi*xi)*eta+(-280.0+10640.0/3.0*xi-8960.0*xi*xi+17920.0/3.0*xi*xi*xi)*eta*eta+(320.0-12160.0/3.0*xi+10240.0*xi*xi-20480.0/3.0*xi*xi*xi)*eta*eta*eta+(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - 100.0*xi-1900.0/3.0*xi*xi+3200.0/3.0*xi*xi*xi-1600.0/3.0*xi*xi*xi*xi+2.0*(-280.0*xi+5320.0/3.0*xi*xi-8960.0/3.0*xi*xi*xi+4480.0/3.0*xi*xi*xi*xi)*eta+3.0*(320.0*xi-6080.0/3.0*xi*xi+10240.0/3.0*xi*xi*xi-5120.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(-128.0*xi+2432.0/3.0*xi*xi-4096.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 6: return Point<2>(16.0/3.0-224.0/3.0*xi+224.0*xi*xi-512.0/3.0*xi*xi*xi+(-400.0/9.0+5600.0/9.0*xi-5600.0/3.0*xi*xi+12800.0/9.0*xi*xi*xi)*eta+(1120.0/9.0-15680.0/9.0*xi+15680.0/3.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta*eta+(-1280.0/9.0+17920.0/9.0*xi-17920.0/3.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta*eta+(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -400.0/9.0*xi+2800.0/9.0*xi*xi-5600.0/9.0*xi*xi*xi+3200.0/9.0*xi*xi*xi*xi+2.0*(1120.0/9.0*xi-7840.0/9.0*xi*xi+15680.0/9.0*xi*xi*xi-8960.0/9.0*xi*xi*xi*xi)*eta+3.0*(-1280.0/9.0*xi+8960.0/9.0*xi*xi-17920.0/9.0*xi*xi*xi+10240.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0/9.0*xi-3584.0/9.0*xi*xi+7168.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 7: return Point<2>((-16.0+704.0/3.0*xi-768.0*xi*xi+2048.0/3.0*xi*xi*xi)*eta+(208.0/3.0-9152.0/9.0*xi+3328.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta*eta+(-96.0+1408.0*xi-4608.0*xi*xi+4096.0*xi*xi*xi)*eta*eta*eta+(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -16.0*xi+352.0/3.0*xi*xi-256.0*xi*xi*xi+512.0/3.0*xi*xi*xi*xi+2.0*(208.0/3.0*xi-4576.0/9.0*xi*xi+3328.0/3.0*xi*xi*xi-6656.0/9.0*xi*xi*xi*xi)*eta+3.0*(-96.0*xi+704.0*xi*xi-1536.0*xi*xi*xi+1024.0*xi*xi*xi*xi)*eta*eta+4.0*(128.0/3.0*xi-2816.0/9.0*xi*xi+2048.0/3.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 8: return Point<2>((12.0-176.0*xi+576.0*xi*xi-512.0*xi*xi*xi)*eta+(-76.0+3344.0/3.0*xi-3648.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta*eta+(128.0-5632.0/3.0*xi+6144.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta*eta+(-64.0+2816.0/3.0*xi-3072.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - 12.0*xi-88.0*xi*xi+192.0*xi*xi*xi-128.0*xi*xi*xi*xi+2.0*(-76.0*xi+1672.0/3.0*xi*xi-1216.0*xi*xi*xi+2432.0/3.0*xi*xi*xi*xi)*eta+3.0*(128.0*xi-2816.0/3.0*xi*xi+2048.0*xi*xi*xi-4096.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(-64.0*xi+1408.0/3.0*xi*xi-1024.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 9: return Point<2>((-16.0/3.0+704.0/9.0*xi-256.0*xi*xi+2048.0/9.0*xi*xi*xi)*eta+(112.0/3.0-4928.0/9.0*xi+1792.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta*eta+(-224.0/3.0+9856.0/9.0*xi-3584.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta*eta+(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -16.0/3.0*xi+352.0/9.0*xi*xi-256.0/3.0*xi*xi*xi+512.0/9.0*xi*xi*xi*xi+2.0*(112.0/3.0*xi-2464.0/9.0*xi*xi+1792.0/3.0*xi*xi*xi-3584.0/9.0*xi*xi*xi*xi)*eta+3.0*(-224.0/3.0*xi+4928.0/9.0*xi*xi-3584.0/3.0*xi*xi*xi+7168.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(128.0/3.0*xi-2816.0/9.0*xi*xi+2048.0/3.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 10: return Point<2>((-16.0+416.0/3.0*xi-288.0*xi*xi+512.0/3.0*xi*xi*xi)*eta+(352.0/3.0-9152.0/9.0*xi+2112.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta*eta+(-256.0+6656.0/3.0*xi-4608.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta+(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -16.0*xi+208.0/3.0*xi*xi-96.0*xi*xi*xi+128.0/3.0*xi*xi*xi*xi+2.0*(352.0/3.0*xi-4576.0/9.0*xi*xi+704.0*xi*xi*xi-2816.0/9.0*xi*xi*xi*xi)*eta+3.0*(-256.0*xi+3328.0/3.0*xi*xi-1536.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0/3.0*xi-6656.0/9.0*xi*xi+1024.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 11: return Point<2>((12.0-152.0*xi+384.0*xi*xi-256.0*xi*xi*xi)*eta+(-88.0+3344.0/3.0*xi-2816.0*xi*xi+5632.0/3.0*xi*xi*xi)*eta*eta+(192.0-2432.0*xi+6144.0*xi*xi-4096.0*xi*xi*xi)*eta*eta*eta+(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - 12.0*xi-76.0*xi*xi+128.0*xi*xi*xi-64.0*xi*xi*xi*xi+2.0*(-88.0*xi+1672.0/3.0*xi*xi-2816.0/3.0*xi*xi*xi+1408.0/3.0*xi*xi*xi*xi)*eta+3.0*(192.0*xi-1216.0*xi*xi+2048.0*xi*xi*xi-1024.0*xi*xi*xi*xi)*eta*eta+4.0*(-128.0*xi+2432.0/3.0*xi*xi-4096.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 12: return Point<2>((-16.0/3.0+224.0/3.0*xi-224.0*xi*xi+512.0/3.0*xi*xi*xi)*eta+(352.0/9.0-4928.0/9.0*xi+4928.0/3.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta*eta+(-256.0/3.0+3584.0/3.0*xi-3584.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta+(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - -16.0/3.0*xi+112.0/3.0*xi*xi-224.0/3.0*xi*xi*xi+128.0/3.0*xi*xi*xi*xi+2.0*(352.0/9.0*xi-2464.0/9.0*xi*xi+4928.0/9.0*xi*xi*xi-2816.0/9.0*xi*xi*xi*xi)*eta+3.0*(-256.0/3.0*xi+1792.0/3.0*xi*xi-3584.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0/9.0*xi-3584.0/9.0*xi*xi+7168.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 13: return Point<2>((-400.0/3.0+2240.0/3.0*xi-1280.0*xi*xi+2048.0/3.0*xi*xi*xi)*eta+(5200.0/9.0-29120.0/9.0*xi+16640.0/3.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta*eta+(-800.0+4480.0*xi-7680.0*xi*xi+4096.0*xi*xi*xi)*eta*eta*eta+(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 16.0-400.0/3.0*xi+1120.0/3.0*xi*xi-1280.0/3.0*xi*xi*xi+512.0/3.0*xi*xi*xi*xi+2.0*(-208.0/3.0+5200.0/9.0*xi-14560.0/9.0*xi*xi+16640.0/9.0*xi*xi*xi-6656.0/9.0*xi*xi*xi*xi)*eta+3.0*(96.0-800.0*xi+2240.0*xi*xi-2560.0*xi*xi*xi+1024.0*xi*xi*xi*xi)*eta*eta+4.0*(-128.0/3.0+3200.0/9.0*xi-8960.0/9.0*xi*xi+10240.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 14: return Point<2>((100.0-560.0*xi+960.0*xi*xi-512.0*xi*xi*xi)*eta+(-1900.0/3.0+10640.0/3.0*xi-6080.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta*eta+(3200.0/3.0-17920.0/3.0*xi+10240.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta*eta+(-1600.0/3.0+8960.0/3.0*xi-5120.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - -12.0+100.0*xi-280.0*xi*xi+320.0*xi*xi*xi-128.0*xi*xi*xi*xi+2.0*(76.0-1900.0/3.0*xi+5320.0/3.0*xi*xi-6080.0/3.0*xi*xi*xi+2432.0/3.0*xi*xi*xi*xi)*eta+3.0*(-128.0+3200.0/3.0*xi-8960.0/3.0*xi*xi+10240.0/3.0*xi*xi*xi-4096.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(64.0-1600.0/3.0*xi+4480.0/3.0*xi*xi-5120.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 15: return Point<2>((-400.0/9.0+2240.0/9.0*xi-1280.0/3.0*xi*xi+2048.0/9.0*xi*xi*xi)*eta+(2800.0/9.0-15680.0/9.0*xi+8960.0/3.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta*eta+(-5600.0/9.0+31360.0/9.0*xi-17920.0/3.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta*eta+(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 16.0/3.0-400.0/9.0*xi+1120.0/9.0*xi*xi-1280.0/9.0*xi*xi*xi+512.0/9.0*xi*xi*xi*xi+2.0*(-112.0/3.0+2800.0/9.0*xi-7840.0/9.0*xi*xi+8960.0/9.0*xi*xi*xi-3584.0/9.0*xi*xi*xi*xi)*eta+3.0*(224.0/3.0-5600.0/9.0*xi+15680.0/9.0*xi*xi-17920.0/9.0*xi*xi*xi+7168.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(-128.0/3.0+3200.0/9.0*xi-8960.0/9.0*xi*xi+10240.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 16: return Point<2>((256.0-6656.0/3.0*xi+4608.0*xi*xi-8192.0/3.0*xi*xi*xi)*eta+(-3328.0/3.0+86528.0/9.0*xi-19968.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta*eta+(1536.0-13312.0*xi+27648.0*xi*xi-16384.0*xi*xi*xi)*eta*eta*eta+(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 256.0*xi-3328.0/3.0*xi*xi+1536.0*xi*xi*xi-2048.0/3.0*xi*xi*xi*xi+2.0*(-3328.0/3.0*xi+43264.0/9.0*xi*xi-6656.0*xi*xi*xi+26624.0/9.0*xi*xi*xi*xi)*eta+3.0*(1536.0*xi-6656.0*xi*xi+9216.0*xi*xi*xi-4096.0*xi*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0*xi+26624.0/9.0*xi*xi-4096.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 17: return Point<2>((256.0/3.0-3584.0/3.0*xi+3584.0*xi*xi-8192.0/3.0*xi*xi*xi)*eta+(-3328.0/9.0+46592.0/9.0*xi-46592.0/3.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta*eta+(512.0-7168.0*xi+21504.0*xi*xi-16384.0*xi*xi*xi)*eta*eta*eta+(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 256.0/3.0*xi-1792.0/3.0*xi*xi+3584.0/3.0*xi*xi*xi-2048.0/3.0*xi*xi*xi*xi+2.0*(-3328.0/9.0*xi+23296.0/9.0*xi*xi-46592.0/9.0*xi*xi*xi+26624.0/9.0*xi*xi*xi*xi)*eta+3.0*(512.0*xi-3584.0*xi*xi+7168.0*xi*xi*xi-4096.0*xi*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0*xi+14336.0/9.0*xi*xi-28672.0/9.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 18: return Point<2>((256.0/9.0-3584.0/9.0*xi+3584.0/3.0*xi*xi-8192.0/9.0*xi*xi*xi)*eta+(-1792.0/9.0+25088.0/9.0*xi-25088.0/3.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta*eta+(3584.0/9.0-50176.0/9.0*xi+50176.0/3.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta*eta+(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 256.0/9.0*xi-1792.0/9.0*xi*xi+3584.0/9.0*xi*xi*xi-2048.0/9.0*xi*xi*xi*xi+2.0*(-1792.0/9.0*xi+12544.0/9.0*xi*xi-25088.0/9.0*xi*xi*xi+14336.0/9.0*xi*xi*xi*xi)*eta+3.0*(3584.0/9.0*xi-25088.0/9.0*xi*xi+50176.0/9.0*xi*xi*xi-28672.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0*xi+14336.0/9.0*xi*xi-28672.0/9.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 19: return Point<2>((256.0/3.0-6656.0/9.0*xi+1536.0*xi*xi-8192.0/9.0*xi*xi*xi)*eta+(-1792.0/3.0+46592.0/9.0*xi-10752.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta*eta+(3584.0/3.0-93184.0/9.0*xi+21504.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta*eta+(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta*eta, - 256.0/3.0*xi-3328.0/9.0*xi*xi+512.0*xi*xi*xi-2048.0/9.0*xi*xi*xi*xi+2.0*(-1792.0/3.0*xi+23296.0/9.0*xi*xi-3584.0*xi*xi*xi+14336.0/9.0*xi*xi*xi*xi)*eta+3.0*(3584.0/3.0*xi-46592.0/9.0*xi*xi+7168.0*xi*xi*xi-28672.0/9.0*xi*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0*xi+26624.0/9.0*xi*xi-4096.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta*eta); - case 20: return Point<2>((-192.0+2432.0*xi-6144.0*xi*xi+4096.0*xi*xi*xi)*eta+(832.0-31616.0/3.0*xi+26624.0*xi*xi-53248.0/3.0*xi*xi*xi)*eta*eta+(-1152.0+14592.0*xi-36864.0*xi*xi+24576.0*xi*xi*xi)*eta*eta*eta+(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - -192.0*xi+1216.0*xi*xi-2048.0*xi*xi*xi+1024.0*xi*xi*xi*xi+2.0*(832.0*xi-15808.0/3.0*xi*xi+26624.0/3.0*xi*xi*xi-13312.0/3.0*xi*xi*xi*xi)*eta+3.0*(-1152.0*xi+7296.0*xi*xi-12288.0*xi*xi*xi+6144.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0*xi-9728.0/3.0*xi*xi+16384.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 21: return Point<2>((-64.0+896.0*xi-2688.0*xi*xi+2048.0*xi*xi*xi)*eta+(1216.0/3.0-17024.0/3.0*xi+17024.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta*eta+(-2048.0/3.0+28672.0/3.0*xi-28672.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta*eta+(1024.0/3.0-14336.0/3.0*xi+14336.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - -64.0*xi+448.0*xi*xi-896.0*xi*xi*xi+512.0*xi*xi*xi*xi+2.0*(1216.0/3.0*xi-8512.0/3.0*xi*xi+17024.0/3.0*xi*xi*xi-9728.0/3.0*xi*xi*xi*xi)*eta+3.0*(-2048.0/3.0*xi+14336.0/3.0*xi*xi-28672.0/3.0*xi*xi*xi+16384.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(1024.0/3.0*xi-7168.0/3.0*xi*xi+14336.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 22: return Point<2>((-64.0+2432.0/3.0*xi-2048.0*xi*xi+4096.0/3.0*xi*xi*xi)*eta+(448.0-17024.0/3.0*xi+14336.0*xi*xi-28672.0/3.0*xi*xi*xi)*eta*eta+(-896.0+34048.0/3.0*xi-28672.0*xi*xi+57344.0/3.0*xi*xi*xi)*eta*eta*eta+(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - -64.0*xi+1216.0/3.0*xi*xi-2048.0/3.0*xi*xi*xi+1024.0/3.0*xi*xi*xi*xi+2.0*(448.0*xi-8512.0/3.0*xi*xi+14336.0/3.0*xi*xi*xi-7168.0/3.0*xi*xi*xi*xi)*eta+3.0*(-896.0*xi+17024.0/3.0*xi*xi-28672.0/3.0*xi*xi*xi+14336.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(512.0*xi-9728.0/3.0*xi*xi+16384.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 23: return Point<2>((-192.0+1664.0*xi-3456.0*xi*xi+2048.0*xi*xi*xi)*eta+(1216.0-31616.0/3.0*xi+21888.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta*eta+(-2048.0+53248.0/3.0*xi-36864.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta*eta+(1024.0-26624.0/3.0*xi+18432.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta*eta, - -192.0*xi+832.0*xi*xi-1152.0*xi*xi*xi+512.0*xi*xi*xi*xi+2.0*(1216.0*xi-15808.0/3.0*xi*xi+7296.0*xi*xi*xi-9728.0/3.0*xi*xi*xi*xi)*eta+3.0*(-2048.0*xi+26624.0/3.0*xi*xi-12288.0*xi*xi*xi+16384.0/3.0*xi*xi*xi*xi)*eta*eta+4.0*(1024.0*xi-13312.0/3.0*xi*xi+6144.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta*eta); - case 24: return Point<2>((144.0-1824.0*xi+4608.0*xi*xi-3072.0*xi*xi*xi)*eta+(-912.0+11552.0*xi-29184.0*xi*xi+19456.0*xi*xi*xi)*eta*eta+(1536.0-19456.0*xi+49152.0*xi*xi-32768.0*xi*xi*xi)*eta*eta*eta+(-768.0+9728.0*xi-24576.0*xi*xi+16384.0*xi*xi*xi)*eta*eta*eta*eta, - 144.0*xi-912.0*xi*xi+1536.0*xi*xi*xi-768.0*xi*xi*xi*xi+2.0*(-912.0*xi+5776.0*xi*xi-9728.0*xi*xi*xi+4864.0*xi*xi*xi*xi)*eta+3.0*(1536.0*xi-9728.0*xi*xi+16384.0*xi*xi*xi-8192.0*xi*xi*xi*xi)*eta*eta+4.0*(-768.0*xi+4864.0*xi*xi-8192.0*xi*xi*xi+4096.0*xi*xi*xi*xi)*eta*eta*eta); - }; - return Point<2> (); -}; - - -template <> -Tensor<2,2> -FEQ4<2>::shape_grad_grad (const unsigned int i, - const Point<2> &p) const -{ - Assert (i return_value; - - switch (i) - { - case 0: - return_value[0][0] = 140.0/3.0-160.0*xi+128.0*xi*xi+(-3500.0/9.0+4000.0/3.0*xi-3200.0/3.0*xi*xi)*eta+(9800.0/9.0-11200.0/3.0*xi+8960.0/3.0*xi*xi)*eta*eta+(-11200.0/9.0+12800.0/3.0*xi-10240.0/3.0*xi*xi)*eta*eta*eta+(4480.0/9.0-5120.0/3.0*xi+4096.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 625.0/9.0-3500.0/9.0*xi+2000.0/3.0*xi*xi-3200.0/9.0*xi*xi*xi+2.0*(-1750.0/9.0+9800.0/9.0*xi-5600.0/3.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta+3.0*(2000.0/9.0-11200.0/9.0*xi+6400.0/3.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta+4.0*(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 625.0/9.0-3500.0/9.0*xi+2000.0/3.0*xi*xi-3200.0/9.0*xi*xi*xi+2.0*(-1750.0/9.0+9800.0/9.0*xi-5600.0/3.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta+3.0*(2000.0/9.0-11200.0/9.0*xi+6400.0/3.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta+4.0*(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 140.0/3.0-3500.0/9.0*xi+9800.0/9.0*xi*xi-11200.0/9.0*xi*xi*xi+4480.0/9.0*xi*xi*xi*xi+6.0*(-80.0/3.0+2000.0/9.0*xi-5600.0/9.0*xi*xi+6400.0/9.0*xi*xi*xi-2560.0/9.0*xi*xi*xi*xi)*eta+12.0*(32.0/3.0-800.0/9.0*xi+2240.0/9.0*xi*xi-2560.0/9.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 1: - return_value[0][0] = 44.0/3.0-96.0*xi+128.0*xi*xi+(-1100.0/9.0+800.0*xi-3200.0/3.0*xi*xi)*eta+(3080.0/9.0-2240.0*xi+8960.0/3.0*xi*xi)*eta*eta+(-3520.0/9.0+2560.0*xi-10240.0/3.0*xi*xi)*eta*eta*eta+(1408.0/9.0-1024.0*xi+4096.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 25.0/3.0-1100.0/9.0*xi+400.0*xi*xi-3200.0/9.0*xi*xi*xi+2.0*(-70.0/3.0+3080.0/9.0*xi-1120.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta+3.0*(80.0/3.0-3520.0/9.0*xi+1280.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 25.0/3.0-1100.0/9.0*xi+400.0*xi*xi-3200.0/9.0*xi*xi*xi+2.0*(-70.0/3.0+3080.0/9.0*xi-1120.0*xi*xi+8960.0/9.0*xi*xi*xi)*eta+3.0*(80.0/3.0-3520.0/9.0*xi+1280.0*xi*xi-10240.0/9.0*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -140.0/3.0*xi+3080.0/9.0*xi*xi-2240.0/3.0*xi*xi*xi+4480.0/9.0*xi*xi*xi*xi+6.0*(80.0/3.0*xi-1760.0/9.0*xi*xi+1280.0/3.0*xi*xi*xi-2560.0/9.0*xi*xi*xi*xi)*eta+12.0*(-32.0/3.0*xi+704.0/9.0*xi*xi-512.0/3.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 2: - return_value[0][0] = (-44.0/3.0+96.0*xi-128.0*xi*xi)*eta+(968.0/9.0-704.0*xi+2816.0/3.0*xi*xi)*eta*eta+(-704.0/3.0+1536.0*xi-2048.0*xi*xi)*eta*eta*eta+(1408.0/9.0-1024.0*xi+4096.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 1.0-44.0/3.0*xi+48.0*xi*xi-128.0/3.0*xi*xi*xi+2.0*(-22.0/3.0+968.0/9.0*xi-352.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta+3.0*(16.0-704.0/3.0*xi+768.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 1.0-44.0/3.0*xi+48.0*xi*xi-128.0/3.0*xi*xi*xi+2.0*(-22.0/3.0+968.0/9.0*xi-352.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta+3.0*(16.0-704.0/3.0*xi+768.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta+4.0*(-32.0/3.0+1408.0/9.0*xi-512.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -44.0/3.0*xi+968.0/9.0*xi*xi-704.0/3.0*xi*xi*xi+1408.0/9.0*xi*xi*xi*xi+6.0*(16.0*xi-352.0/3.0*xi*xi+256.0*xi*xi*xi-512.0/3.0*xi*xi*xi*xi)*eta+12.0*(-32.0/3.0*xi+704.0/9.0*xi*xi-512.0/3.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 3: - return_value[0][0] = (-140.0/3.0+160.0*xi-128.0*xi*xi)*eta+(3080.0/9.0-3520.0/3.0*xi+2816.0/3.0*xi*xi)*eta*eta+(-2240.0/3.0+2560.0*xi-2048.0*xi*xi)*eta*eta*eta+(4480.0/9.0-5120.0/3.0*xi+4096.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 25.0/3.0-140.0/3.0*xi+80.0*xi*xi-128.0/3.0*xi*xi*xi+2.0*(-550.0/9.0+3080.0/9.0*xi-1760.0/3.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta+3.0*(400.0/3.0-2240.0/3.0*xi+1280.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta+4.0*(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 25.0/3.0-140.0/3.0*xi+80.0*xi*xi-128.0/3.0*xi*xi*xi+2.0*(-550.0/9.0+3080.0/9.0*xi-1760.0/3.0*xi*xi+2816.0/9.0*xi*xi*xi)*eta+3.0*(400.0/3.0-2240.0/3.0*xi+1280.0*xi*xi-2048.0/3.0*xi*xi*xi)*eta*eta+4.0*(-800.0/9.0+4480.0/9.0*xi-2560.0/3.0*xi*xi+4096.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 44.0/3.0-1100.0/9.0*xi+3080.0/9.0*xi*xi-3520.0/9.0*xi*xi*xi+1408.0/9.0*xi*xi*xi*xi+6.0*(-16.0+400.0/3.0*xi-1120.0/3.0*xi*xi+1280.0/3.0*xi*xi*xi-512.0/3.0*xi*xi*xi*xi)*eta+12.0*(32.0/3.0-800.0/9.0*xi+2240.0/9.0*xi*xi-2560.0/9.0*xi*xi*xi+1024.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 4: - return_value[0][0] = -416.0/3.0+576.0*xi-512.0*xi*xi+(10400.0/9.0-4800.0*xi+12800.0/3.0*xi*xi)*eta+(-29120.0/9.0+13440.0*xi-35840.0/3.0*xi*xi)*eta*eta+(33280.0/9.0-15360.0*xi+40960.0/3.0*xi*xi)*eta*eta*eta+(-13312.0/9.0+6144.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -400.0/3.0+10400.0/9.0*xi-2400.0*xi*xi+12800.0/9.0*xi*xi*xi+2.0*(1120.0/3.0-29120.0/9.0*xi+6720.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta+3.0*(-1280.0/3.0+33280.0/9.0*xi-7680.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta+4.0*(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -400.0/3.0+10400.0/9.0*xi-2400.0*xi*xi+12800.0/9.0*xi*xi*xi+2.0*(1120.0/3.0-29120.0/9.0*xi+6720.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta+3.0*(-1280.0/3.0+33280.0/9.0*xi-7680.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta+4.0*(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 2240.0/3.0*xi-29120.0/9.0*xi*xi+4480.0*xi*xi*xi-17920.0/9.0*xi*xi*xi*xi+6.0*(-1280.0/3.0*xi+16640.0/9.0*xi*xi-2560.0*xi*xi*xi+10240.0/9.0*xi*xi*xi*xi)*eta+12.0*(512.0/3.0*xi-6656.0/9.0*xi*xi+1024.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 5: - return_value[0][0] = 152.0-768.0*xi+768.0*xi*xi+(-3800.0/3.0+6400.0*xi-6400.0*xi*xi)*eta+(10640.0/3.0-17920.0*xi+17920.0*xi*xi)*eta*eta+(-12160.0/3.0+20480.0*xi-20480.0*xi*xi)*eta*eta*eta+(4864.0/3.0-8192.0*xi+8192.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 100.0-3800.0/3.0*xi+3200.0*xi*xi-6400.0/3.0*xi*xi*xi+2.0*(-280.0+10640.0/3.0*xi-8960.0*xi*xi+17920.0/3.0*xi*xi*xi)*eta+3.0*(320.0-12160.0/3.0*xi+10240.0*xi*xi-20480.0/3.0*xi*xi*xi)*eta*eta+4.0*(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 100.0-3800.0/3.0*xi+3200.0*xi*xi-6400.0/3.0*xi*xi*xi+2.0*(-280.0+10640.0/3.0*xi-8960.0*xi*xi+17920.0/3.0*xi*xi*xi)*eta+3.0*(320.0-12160.0/3.0*xi+10240.0*xi*xi-20480.0/3.0*xi*xi*xi)*eta*eta+4.0*(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -560.0*xi+10640.0/3.0*xi*xi-17920.0/3.0*xi*xi*xi+8960.0/3.0*xi*xi*xi*xi+6.0*(320.0*xi-6080.0/3.0*xi*xi+10240.0/3.0*xi*xi*xi-5120.0/3.0*xi*xi*xi*xi)*eta+12.0*(-128.0*xi+2432.0/3.0*xi*xi-4096.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta; - break; - case 6: - return_value[0][0] = -224.0/3.0+448.0*xi-512.0*xi*xi+(5600.0/9.0-11200.0/3.0*xi+12800.0/3.0*xi*xi)*eta+(-15680.0/9.0+31360.0/3.0*xi-35840.0/3.0*xi*xi)*eta*eta+(17920.0/9.0-35840.0/3.0*xi+40960.0/3.0*xi*xi)*eta*eta*eta+(-7168.0/9.0+14336.0/3.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -400.0/9.0+5600.0/9.0*xi-5600.0/3.0*xi*xi+12800.0/9.0*xi*xi*xi+2.0*(1120.0/9.0-15680.0/9.0*xi+15680.0/3.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta+3.0*(-1280.0/9.0+17920.0/9.0*xi-17920.0/3.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta+4.0*(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -400.0/9.0+5600.0/9.0*xi-5600.0/3.0*xi*xi+12800.0/9.0*xi*xi*xi+2.0*(1120.0/9.0-15680.0/9.0*xi+15680.0/3.0*xi*xi-35840.0/9.0*xi*xi*xi)*eta+3.0*(-1280.0/9.0+17920.0/9.0*xi-17920.0/3.0*xi*xi+40960.0/9.0*xi*xi*xi)*eta*eta+4.0*(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 2240.0/9.0*xi-15680.0/9.0*xi*xi+31360.0/9.0*xi*xi*xi-17920.0/9.0*xi*xi*xi*xi+6.0*(-1280.0/9.0*xi+8960.0/9.0*xi*xi-17920.0/9.0*xi*xi*xi+10240.0/9.0*xi*xi*xi*xi)*eta+12.0*(512.0/9.0*xi-3584.0/9.0*xi*xi+7168.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 7: - return_value[0][0] = (704.0/3.0-1536.0*xi+2048.0*xi*xi)*eta+(-9152.0/9.0+6656.0*xi-26624.0/3.0*xi*xi)*eta*eta+(1408.0-9216.0*xi+12288.0*xi*xi)*eta*eta*eta+(-5632.0/9.0+4096.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -16.0+704.0/3.0*xi-768.0*xi*xi+2048.0/3.0*xi*xi*xi+2.0*(208.0/3.0-9152.0/9.0*xi+3328.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta+3.0*(-96.0+1408.0*xi-4608.0*xi*xi+4096.0*xi*xi*xi)*eta*eta+4.0*(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -16.0+704.0/3.0*xi-768.0*xi*xi+2048.0/3.0*xi*xi*xi+2.0*(208.0/3.0-9152.0/9.0*xi+3328.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta+3.0*(-96.0+1408.0*xi-4608.0*xi*xi+4096.0*xi*xi*xi)*eta*eta+4.0*(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 416.0/3.0*xi-9152.0/9.0*xi*xi+6656.0/3.0*xi*xi*xi-13312.0/9.0*xi*xi*xi*xi+6.0*(-96.0*xi+704.0*xi*xi-1536.0*xi*xi*xi+1024.0*xi*xi*xi*xi)*eta+12.0*(128.0/3.0*xi-2816.0/9.0*xi*xi+2048.0/3.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - break; - case 8: - return_value[0][0] = (-176.0+1152.0*xi-1536.0*xi*xi)*eta+(3344.0/3.0-7296.0*xi+9728.0*xi*xi)*eta*eta+(-5632.0/3.0+12288.0*xi-16384.0*xi*xi)*eta*eta*eta+(2816.0/3.0-6144.0*xi+8192.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 12.0-176.0*xi+576.0*xi*xi-512.0*xi*xi*xi+2.0*(-76.0+3344.0/3.0*xi-3648.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta+3.0*(128.0-5632.0/3.0*xi+6144.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta+4.0*(-64.0+2816.0/3.0*xi-3072.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 12.0-176.0*xi+576.0*xi*xi-512.0*xi*xi*xi+2.0*(-76.0+3344.0/3.0*xi-3648.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta+3.0*(128.0-5632.0/3.0*xi+6144.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta+4.0*(-64.0+2816.0/3.0*xi-3072.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -152.0*xi+3344.0/3.0*xi*xi-2432.0*xi*xi*xi+4864.0/3.0*xi*xi*xi*xi+6.0*(128.0*xi-2816.0/3.0*xi*xi+2048.0*xi*xi*xi-4096.0/3.0*xi*xi*xi*xi)*eta+12.0*(-64.0*xi+1408.0/3.0*xi*xi-1024.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta; - break; - case 9: - return_value[0][0] = (704.0/9.0-512.0*xi+2048.0/3.0*xi*xi)*eta+(-4928.0/9.0+3584.0*xi-14336.0/3.0*xi*xi)*eta*eta+(9856.0/9.0-7168.0*xi+28672.0/3.0*xi*xi)*eta*eta*eta+(-5632.0/9.0+4096.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -16.0/3.0+704.0/9.0*xi-256.0*xi*xi+2048.0/9.0*xi*xi*xi+2.0*(112.0/3.0-4928.0/9.0*xi+1792.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta+3.0*(-224.0/3.0+9856.0/9.0*xi-3584.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta+4.0*(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -16.0/3.0+704.0/9.0*xi-256.0*xi*xi+2048.0/9.0*xi*xi*xi+2.0*(112.0/3.0-4928.0/9.0*xi+1792.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta+3.0*(-224.0/3.0+9856.0/9.0*xi-3584.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta+4.0*(128.0/3.0-5632.0/9.0*xi+2048.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 224.0/3.0*xi-4928.0/9.0*xi*xi+3584.0/3.0*xi*xi*xi-7168.0/9.0*xi*xi*xi*xi+6.0*(-224.0/3.0*xi+4928.0/9.0*xi*xi-3584.0/3.0*xi*xi*xi+7168.0/9.0*xi*xi*xi*xi)*eta+12.0*(128.0/3.0*xi-2816.0/9.0*xi*xi+2048.0/3.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (416.0/3.0-576.0*xi+512.0*xi*xi)*eta+(-9152.0/9.0+4224.0*xi-11264.0/3.0*xi*xi)*eta*eta+(6656.0/3.0-9216.0*xi+8192.0*xi*xi)*eta*eta*eta+(-13312.0/9.0+6144.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -16.0+416.0/3.0*xi-288.0*xi*xi+512.0/3.0*xi*xi*xi+2.0*(352.0/3.0-9152.0/9.0*xi+2112.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta+3.0*(-256.0+6656.0/3.0*xi-4608.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -16.0+416.0/3.0*xi-288.0*xi*xi+512.0/3.0*xi*xi*xi+2.0*(352.0/3.0-9152.0/9.0*xi+2112.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta+3.0*(-256.0+6656.0/3.0*xi-4608.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0/3.0-13312.0/9.0*xi+3072.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 704.0/3.0*xi-9152.0/9.0*xi*xi+1408.0*xi*xi*xi-5632.0/9.0*xi*xi*xi*xi+6.0*(-256.0*xi+3328.0/3.0*xi*xi-1536.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta+12.0*(512.0/3.0*xi-6656.0/9.0*xi*xi+1024.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-152.0+768.0*xi-768.0*xi*xi)*eta+(3344.0/3.0-5632.0*xi+5632.0*xi*xi)*eta*eta+(-2432.0+12288.0*xi-12288.0*xi*xi)*eta*eta*eta+(4864.0/3.0-8192.0*xi+8192.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 12.0-152.0*xi+384.0*xi*xi-256.0*xi*xi*xi+2.0*(-88.0+3344.0/3.0*xi-2816.0*xi*xi+5632.0/3.0*xi*xi*xi)*eta+3.0*(192.0-2432.0*xi+6144.0*xi*xi-4096.0*xi*xi*xi)*eta*eta+4.0*(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 12.0-152.0*xi+384.0*xi*xi-256.0*xi*xi*xi+2.0*(-88.0+3344.0/3.0*xi-2816.0*xi*xi+5632.0/3.0*xi*xi*xi)*eta+3.0*(192.0-2432.0*xi+6144.0*xi*xi-4096.0*xi*xi*xi)*eta*eta+4.0*(-128.0+4864.0/3.0*xi-4096.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -176.0*xi+3344.0/3.0*xi*xi-5632.0/3.0*xi*xi*xi+2816.0/3.0*xi*xi*xi*xi+6.0*(192.0*xi-1216.0*xi*xi+2048.0*xi*xi*xi-1024.0*xi*xi*xi*xi)*eta+12.0*(-128.0*xi+2432.0/3.0*xi*xi-4096.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (224.0/3.0-448.0*xi+512.0*xi*xi)*eta+(-4928.0/9.0+9856.0/3.0*xi-11264.0/3.0*xi*xi)*eta*eta+(3584.0/3.0-7168.0*xi+8192.0*xi*xi)*eta*eta*eta+(-7168.0/9.0+14336.0/3.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -16.0/3.0+224.0/3.0*xi-224.0*xi*xi+512.0/3.0*xi*xi*xi+2.0*(352.0/9.0-4928.0/9.0*xi+4928.0/3.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta+3.0*(-256.0/3.0+3584.0/3.0*xi-3584.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -16.0/3.0+224.0/3.0*xi-224.0*xi*xi+512.0/3.0*xi*xi*xi+2.0*(352.0/9.0-4928.0/9.0*xi+4928.0/3.0*xi*xi-11264.0/9.0*xi*xi*xi)*eta+3.0*(-256.0/3.0+3584.0/3.0*xi-3584.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0/9.0-7168.0/9.0*xi+7168.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 704.0/9.0*xi-4928.0/9.0*xi*xi+9856.0/9.0*xi*xi*xi-5632.0/9.0*xi*xi*xi*xi+6.0*(-256.0/3.0*xi+1792.0/3.0*xi*xi-3584.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta+12.0*(512.0/9.0*xi-3584.0/9.0*xi*xi+7168.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (2240.0/3.0-2560.0*xi+2048.0*xi*xi)*eta+(-29120.0/9.0+33280.0/3.0*xi-26624.0/3.0*xi*xi)*eta*eta+(4480.0-15360.0*xi+12288.0*xi*xi)*eta*eta*eta+(-17920.0/9.0+20480.0/3.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -400.0/3.0+2240.0/3.0*xi-1280.0*xi*xi+2048.0/3.0*xi*xi*xi+2.0*(5200.0/9.0-29120.0/9.0*xi+16640.0/3.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta+3.0*(-800.0+4480.0*xi-7680.0*xi*xi+4096.0*xi*xi*xi)*eta*eta+4.0*(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -400.0/3.0+2240.0/3.0*xi-1280.0*xi*xi+2048.0/3.0*xi*xi*xi+2.0*(5200.0/9.0-29120.0/9.0*xi+16640.0/3.0*xi*xi-26624.0/9.0*xi*xi*xi)*eta+3.0*(-800.0+4480.0*xi-7680.0*xi*xi+4096.0*xi*xi*xi)*eta*eta+4.0*(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -416.0/3.0+10400.0/9.0*xi-29120.0/9.0*xi*xi+33280.0/9.0*xi*xi*xi-13312.0/9.0*xi*xi*xi*xi+6.0*(96.0-800.0*xi+2240.0*xi*xi-2560.0*xi*xi*xi+1024.0*xi*xi*xi*xi)*eta+12.0*(-128.0/3.0+3200.0/9.0*xi-8960.0/9.0*xi*xi+10240.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-560.0+1920.0*xi-1536.0*xi*xi)*eta+(10640.0/3.0-12160.0*xi+9728.0*xi*xi)*eta*eta+(-17920.0/3.0+20480.0*xi-16384.0*xi*xi)*eta*eta*eta+(8960.0/3.0-10240.0*xi+8192.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 100.0-560.0*xi+960.0*xi*xi-512.0*xi*xi*xi+2.0*(-1900.0/3.0+10640.0/3.0*xi-6080.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta+3.0*(3200.0/3.0-17920.0/3.0*xi+10240.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta+4.0*(-1600.0/3.0+8960.0/3.0*xi-5120.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 100.0-560.0*xi+960.0*xi*xi-512.0*xi*xi*xi+2.0*(-1900.0/3.0+10640.0/3.0*xi-6080.0*xi*xi+9728.0/3.0*xi*xi*xi)*eta+3.0*(3200.0/3.0-17920.0/3.0*xi+10240.0*xi*xi-16384.0/3.0*xi*xi*xi)*eta*eta+4.0*(-1600.0/3.0+8960.0/3.0*xi-5120.0*xi*xi+8192.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 152.0-3800.0/3.0*xi+10640.0/3.0*xi*xi-12160.0/3.0*xi*xi*xi+4864.0/3.0*xi*xi*xi*xi+6.0*(-128.0+3200.0/3.0*xi-8960.0/3.0*xi*xi+10240.0/3.0*xi*xi*xi-4096.0/3.0*xi*xi*xi*xi)*eta+12.0*(64.0-1600.0/3.0*xi+4480.0/3.0*xi*xi-5120.0/3.0*xi*xi*xi+2048.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (2240.0/9.0-2560.0/3.0*xi+2048.0/3.0*xi*xi)*eta+(-15680.0/9.0+17920.0/3.0*xi-14336.0/3.0*xi*xi)*eta*eta+(31360.0/9.0-35840.0/3.0*xi+28672.0/3.0*xi*xi)*eta*eta*eta+(-17920.0/9.0+20480.0/3.0*xi-16384.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -400.0/9.0+2240.0/9.0*xi-1280.0/3.0*xi*xi+2048.0/9.0*xi*xi*xi+2.0*(2800.0/9.0-15680.0/9.0*xi+8960.0/3.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta+3.0*(-5600.0/9.0+31360.0/9.0*xi-17920.0/3.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta+4.0*(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -400.0/9.0+2240.0/9.0*xi-1280.0/3.0*xi*xi+2048.0/9.0*xi*xi*xi+2.0*(2800.0/9.0-15680.0/9.0*xi+8960.0/3.0*xi*xi-14336.0/9.0*xi*xi*xi)*eta+3.0*(-5600.0/9.0+31360.0/9.0*xi-17920.0/3.0*xi*xi+28672.0/9.0*xi*xi*xi)*eta*eta+4.0*(3200.0/9.0-17920.0/9.0*xi+10240.0/3.0*xi*xi-16384.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -224.0/3.0+5600.0/9.0*xi-15680.0/9.0*xi*xi+17920.0/9.0*xi*xi*xi-7168.0/9.0*xi*xi*xi*xi+6.0*(224.0/3.0-5600.0/9.0*xi+15680.0/9.0*xi*xi-17920.0/9.0*xi*xi*xi+7168.0/9.0*xi*xi*xi*xi)*eta+12.0*(-128.0/3.0+3200.0/9.0*xi-8960.0/9.0*xi*xi+10240.0/9.0*xi*xi*xi-4096.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-6656.0/3.0+9216.0*xi-8192.0*xi*xi)*eta+(86528.0/9.0-39936.0*xi+106496.0/3.0*xi*xi)*eta*eta+(-13312.0+55296.0*xi-49152.0*xi*xi)*eta*eta*eta+(53248.0/9.0-24576.0*xi+65536.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 256.0-6656.0/3.0*xi+4608.0*xi*xi-8192.0/3.0*xi*xi*xi+2.0*(-3328.0/3.0+86528.0/9.0*xi-19968.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta+3.0*(1536.0-13312.0*xi+27648.0*xi*xi-16384.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 256.0-6656.0/3.0*xi+4608.0*xi*xi-8192.0/3.0*xi*xi*xi+2.0*(-3328.0/3.0+86528.0/9.0*xi-19968.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta+3.0*(1536.0-13312.0*xi+27648.0*xi*xi-16384.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -6656.0/3.0*xi+86528.0/9.0*xi*xi-13312.0*xi*xi*xi+53248.0/9.0*xi*xi*xi*xi+6.0*(1536.0*xi-6656.0*xi*xi+9216.0*xi*xi*xi-4096.0*xi*xi*xi*xi)*eta+12.0*(-2048.0/3.0*xi+26624.0/9.0*xi*xi-4096.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-3584.0/3.0+7168.0*xi-8192.0*xi*xi)*eta+(46592.0/9.0-93184.0/3.0*xi+106496.0/3.0*xi*xi)*eta*eta+(-7168.0+43008.0*xi-49152.0*xi*xi)*eta*eta*eta+(28672.0/9.0-57344.0/3.0*xi+65536.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 256.0/3.0-3584.0/3.0*xi+3584.0*xi*xi-8192.0/3.0*xi*xi*xi+2.0*(-3328.0/9.0+46592.0/9.0*xi-46592.0/3.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta+3.0*(512.0-7168.0*xi+21504.0*xi*xi-16384.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 256.0/3.0-3584.0/3.0*xi+3584.0*xi*xi-8192.0/3.0*xi*xi*xi+2.0*(-3328.0/9.0+46592.0/9.0*xi-46592.0/3.0*xi*xi+106496.0/9.0*xi*xi*xi)*eta+3.0*(512.0-7168.0*xi+21504.0*xi*xi-16384.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -6656.0/9.0*xi+46592.0/9.0*xi*xi-93184.0/9.0*xi*xi*xi+53248.0/9.0*xi*xi*xi*xi+6.0*(512.0*xi-3584.0*xi*xi+7168.0*xi*xi*xi-4096.0*xi*xi*xi*xi)*eta+12.0*(-2048.0/9.0*xi+14336.0/9.0*xi*xi-28672.0/9.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-3584.0/9.0+7168.0/3.0*xi-8192.0/3.0*xi*xi)*eta+(25088.0/9.0-50176.0/3.0*xi+57344.0/3.0*xi*xi)*eta*eta+(-50176.0/9.0+100352.0/3.0*xi-114688.0/3.0*xi*xi)*eta*eta*eta+(28672.0/9.0-57344.0/3.0*xi+65536.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 256.0/9.0-3584.0/9.0*xi+3584.0/3.0*xi*xi-8192.0/9.0*xi*xi*xi+2.0*(-1792.0/9.0+25088.0/9.0*xi-25088.0/3.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta+3.0*(3584.0/9.0-50176.0/9.0*xi+50176.0/3.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 256.0/9.0-3584.0/9.0*xi+3584.0/3.0*xi*xi-8192.0/9.0*xi*xi*xi+2.0*(-1792.0/9.0+25088.0/9.0*xi-25088.0/3.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta+3.0*(3584.0/9.0-50176.0/9.0*xi+50176.0/3.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/9.0+28672.0/9.0*xi-28672.0/3.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -3584.0/9.0*xi+25088.0/9.0*xi*xi-50176.0/9.0*xi*xi*xi+28672.0/9.0*xi*xi*xi*xi+6.0*(3584.0/9.0*xi-25088.0/9.0*xi*xi+50176.0/9.0*xi*xi*xi-28672.0/9.0*xi*xi*xi*xi)*eta+12.0*(-2048.0/9.0*xi+14336.0/9.0*xi*xi-28672.0/9.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-6656.0/9.0+3072.0*xi-8192.0/3.0*xi*xi)*eta+(46592.0/9.0-21504.0*xi+57344.0/3.0*xi*xi)*eta*eta+(-93184.0/9.0+43008.0*xi-114688.0/3.0*xi*xi)*eta*eta*eta+(53248.0/9.0-24576.0*xi+65536.0/3.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 256.0/3.0-6656.0/9.0*xi+1536.0*xi*xi-8192.0/9.0*xi*xi*xi+2.0*(-1792.0/3.0+46592.0/9.0*xi-10752.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta+3.0*(3584.0/3.0-93184.0/9.0*xi+21504.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 256.0/3.0-6656.0/9.0*xi+1536.0*xi*xi-8192.0/9.0*xi*xi*xi+2.0*(-1792.0/3.0+46592.0/9.0*xi-10752.0*xi*xi+57344.0/9.0*xi*xi*xi)*eta+3.0*(3584.0/3.0-93184.0/9.0*xi+21504.0*xi*xi-114688.0/9.0*xi*xi*xi)*eta*eta+4.0*(-2048.0/3.0+53248.0/9.0*xi-12288.0*xi*xi+65536.0/9.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -3584.0/3.0*xi+46592.0/9.0*xi*xi-7168.0*xi*xi*xi+28672.0/9.0*xi*xi*xi*xi+6.0*(3584.0/3.0*xi-46592.0/9.0*xi*xi+7168.0*xi*xi*xi-28672.0/9.0*xi*xi*xi*xi)*eta+12.0*(-2048.0/3.0*xi+26624.0/9.0*xi*xi-4096.0*xi*xi*xi+16384.0/9.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (2432.0-12288.0*xi+12288.0*xi*xi)*eta+(-31616.0/3.0+53248.0*xi-53248.0*xi*xi)*eta*eta+(14592.0-73728.0*xi+73728.0*xi*xi)*eta*eta*eta+(-19456.0/3.0+32768.0*xi-32768.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -192.0+2432.0*xi-6144.0*xi*xi+4096.0*xi*xi*xi+2.0*(832.0-31616.0/3.0*xi+26624.0*xi*xi-53248.0/3.0*xi*xi*xi)*eta+3.0*(-1152.0+14592.0*xi-36864.0*xi*xi+24576.0*xi*xi*xi)*eta*eta+4.0*(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -192.0+2432.0*xi-6144.0*xi*xi+4096.0*xi*xi*xi+2.0*(832.0-31616.0/3.0*xi+26624.0*xi*xi-53248.0/3.0*xi*xi*xi)*eta+3.0*(-1152.0+14592.0*xi-36864.0*xi*xi+24576.0*xi*xi*xi)*eta*eta+4.0*(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 1664.0*xi-31616.0/3.0*xi*xi+53248.0/3.0*xi*xi*xi-26624.0/3.0*xi*xi*xi*xi+6.0*(-1152.0*xi+7296.0*xi*xi-12288.0*xi*xi*xi+6144.0*xi*xi*xi*xi)*eta+12.0*(512.0*xi-9728.0/3.0*xi*xi+16384.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (896.0-5376.0*xi+6144.0*xi*xi)*eta+(-17024.0/3.0+34048.0*xi-38912.0*xi*xi)*eta*eta+(28672.0/3.0-57344.0*xi+65536.0*xi*xi)*eta*eta*eta+(-14336.0/3.0+28672.0*xi-32768.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -64.0+896.0*xi-2688.0*xi*xi+2048.0*xi*xi*xi+2.0*(1216.0/3.0-17024.0/3.0*xi+17024.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta+3.0*(-2048.0/3.0+28672.0/3.0*xi-28672.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta+4.0*(1024.0/3.0-14336.0/3.0*xi+14336.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -64.0+896.0*xi-2688.0*xi*xi+2048.0*xi*xi*xi+2.0*(1216.0/3.0-17024.0/3.0*xi+17024.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta+3.0*(-2048.0/3.0+28672.0/3.0*xi-28672.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta+4.0*(1024.0/3.0-14336.0/3.0*xi+14336.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 2432.0/3.0*xi-17024.0/3.0*xi*xi+34048.0/3.0*xi*xi*xi-19456.0/3.0*xi*xi*xi*xi+6.0*(-2048.0/3.0*xi+14336.0/3.0*xi*xi-28672.0/3.0*xi*xi*xi+16384.0/3.0*xi*xi*xi*xi)*eta+12.0*(1024.0/3.0*xi-7168.0/3.0*xi*xi+14336.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (2432.0/3.0-4096.0*xi+4096.0*xi*xi)*eta+(-17024.0/3.0+28672.0*xi-28672.0*xi*xi)*eta*eta+(34048.0/3.0-57344.0*xi+57344.0*xi*xi)*eta*eta*eta+(-19456.0/3.0+32768.0*xi-32768.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -64.0+2432.0/3.0*xi-2048.0*xi*xi+4096.0/3.0*xi*xi*xi+2.0*(448.0-17024.0/3.0*xi+14336.0*xi*xi-28672.0/3.0*xi*xi*xi)*eta+3.0*(-896.0+34048.0/3.0*xi-28672.0*xi*xi+57344.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -64.0+2432.0/3.0*xi-2048.0*xi*xi+4096.0/3.0*xi*xi*xi+2.0*(448.0-17024.0/3.0*xi+14336.0*xi*xi-28672.0/3.0*xi*xi*xi)*eta+3.0*(-896.0+34048.0/3.0*xi-28672.0*xi*xi+57344.0/3.0*xi*xi*xi)*eta*eta+4.0*(512.0-19456.0/3.0*xi+16384.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 896.0*xi-17024.0/3.0*xi*xi+28672.0/3.0*xi*xi*xi-14336.0/3.0*xi*xi*xi*xi+6.0*(-896.0*xi+17024.0/3.0*xi*xi-28672.0/3.0*xi*xi*xi+14336.0/3.0*xi*xi*xi*xi)*eta+12.0*(512.0*xi-9728.0/3.0*xi*xi+16384.0/3.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (1664.0-6912.0*xi+6144.0*xi*xi)*eta+(-31616.0/3.0+43776.0*xi-38912.0*xi*xi)*eta*eta+(53248.0/3.0-73728.0*xi+65536.0*xi*xi)*eta*eta*eta+(-26624.0/3.0+36864.0*xi-32768.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = -192.0+1664.0*xi-3456.0*xi*xi+2048.0*xi*xi*xi+2.0*(1216.0-31616.0/3.0*xi+21888.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta+3.0*(-2048.0+53248.0/3.0*xi-36864.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta+4.0*(1024.0-26624.0/3.0*xi+18432.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = -192.0+1664.0*xi-3456.0*xi*xi+2048.0*xi*xi*xi+2.0*(1216.0-31616.0/3.0*xi+21888.0*xi*xi-38912.0/3.0*xi*xi*xi)*eta+3.0*(-2048.0+53248.0/3.0*xi-36864.0*xi*xi+65536.0/3.0*xi*xi*xi)*eta*eta+4.0*(1024.0-26624.0/3.0*xi+18432.0*xi*xi-32768.0/3.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = 2432.0*xi-31616.0/3.0*xi*xi+14592.0*xi*xi*xi-19456.0/3.0*xi*xi*xi*xi+6.0*(-2048.0*xi+26624.0/3.0*xi*xi-12288.0*xi*xi*xi+16384.0/3.0*xi*xi*xi*xi)*eta+12.0*(1024.0*xi-13312.0/3.0*xi*xi+6144.0*xi*xi*xi-8192.0/3.0*xi*xi*xi*xi)*eta*eta; - return_value[0][0] = (-1824.0+9216.0*xi-9216.0*xi*xi)*eta+(11552.0-58368.0*xi+58368.0*xi*xi)*eta*eta+(-19456.0+98304.0*xi-98304.0*xi*xi)*eta*eta*eta+(9728.0-49152.0*xi+49152.0*xi*xi)*eta*eta*eta*eta; - return_value[0][1] = 144.0-1824.0*xi+4608.0*xi*xi-3072.0*xi*xi*xi+2.0*(-912.0+11552.0*xi-29184.0*xi*xi+19456.0*xi*xi*xi)*eta+3.0*(1536.0-19456.0*xi+49152.0*xi*xi-32768.0*xi*xi*xi)*eta*eta+4.0*(-768.0+9728.0*xi-24576.0*xi*xi+16384.0*xi*xi*xi)*eta*eta*eta; - return_value[1][0] = 144.0-1824.0*xi+4608.0*xi*xi-3072.0*xi*xi*xi+2.0*(-912.0+11552.0*xi-29184.0*xi*xi+19456.0*xi*xi*xi)*eta+3.0*(1536.0-19456.0*xi+49152.0*xi*xi-32768.0*xi*xi*xi)*eta*eta+4.0*(-768.0+9728.0*xi-24576.0*xi*xi+16384.0*xi*xi*xi)*eta*eta*eta; - return_value[1][1] = -1824.0*xi+11552.0*xi*xi-19456.0*xi*xi*xi+9728.0*xi*xi*xi*xi+6.0*(1536.0*xi-9728.0*xi*xi+16384.0*xi*xi*xi-8192.0*xi*xi*xi*xi)*eta+12.0*(-768.0*xi+4864.0*xi*xi-8192.0*xi*xi*xi+4096.0*xi*xi*xi*xi)*eta*eta; - break; - }; - return return_value; -}; - - -template <> -void FEQ4<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell, - FullMatrix &local_mass_matrix) const { - Assert (local_mass_matrix.n() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - -/* check that the Jacobi determinant - - t0 = (-x[0]*(1.0-eta)+x[1]*(1.0-eta)+x[2]*eta-x[3]*eta) * - (-y[0]*(1.0-xi)-y[1]*xi+y[2]*xi+y[3]*(1.0-xi)) - - (-x[0]*(1.0-xi)-x[1]*xi+x[2]*xi+x[3]*(1.0-xi)) * - (-y[0]*(1.0-eta)+y[1]*(1.0-eta)+y[2]*eta-y[3]*eta) - - has the right sign. - - We do not attempt to check its (hopefully) positive sign at all points - on the unit cell, but we check that it is positive in the four corners, - which is sufficient since $det J$ is a bilinear function. -*/ - Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]), // xi=eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]), // xi=0, eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]), // xi=eta=1 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]), // xi=1, eta=0 - FiniteElement<2>::ExcJacobiDeterminantHasWrongSign()); - - const double t1 = -x[0]+x[1]; - const double t2 = y[0]-y[1]+y[2]-y[3]; - const double t3 = t1*t2; - const double t4 = 2117.0/16074450.0*t3; - const double t5 = x[0]-x[1]+x[2]-x[3]; - const double t6 = -y[0]+y[1]; - const double t7 = t5*t6; - const double t8 = 2117.0/16074450.0*t7; - const double t9 = -y[0]+y[3]; - const double t10 = t1*t9; - const double t11 = 21316.0/8037225.0*t10; - const double t12 = t5*t9; - const double t13 = 2117.0/16074450.0*t12; - const double t14 = -x[0]+x[3]; - const double t15 = t14*t6; - const double t16 = 21316.0/8037225.0*t15; - const double t17 = t14*t2; - const double t18 = 2117.0/16074450.0*t17; - const double t20 = 2117.0/8037225.0*t10; - const double t21 = 841.0/64297800.0*t12; - const double t22 = 2117.0/8037225.0*t15; - const double t23 = 841.0/64297800.0*t17; - const double t24 = -t4+t8-t20-t21+t22+t23; - const double t25 = 841.0/64297800.0*t3; - const double t26 = 841.0/64297800.0*t7; - const double t29 = t25-t26+841.0/32148900.0*t10+t21-841.0/32148900.0*t15-t23; - const double t30 = -t25+t26-t20-t13+t22+t18; - const double t31 = 1168.0/8037225.0*t3; - const double t32 = 1168.0/8037225.0*t7; - const double t33 = 21608.0/8037225.0*t10; - const double t34 = 1073.0/8037225.0*t12; - const double t35 = 21608.0/8037225.0*t15; - const double t36 = 1073.0/8037225.0*t17; - const double t37 = t31-t32+t33+t34-t35-t36; - const double t38 = 4234.0/2679075.0*t10; - const double t39 = 841.0/10716300.0*t12; - const double t40 = 4234.0/2679075.0*t15; - const double t41 = 841.0/10716300.0*t17; - const double t42 = -t38-t39+t40+t41; - const double t43 = 584.0/1148175.0*t10; - const double t44 = 29.0/1148175.0*t12; - const double t45 = 584.0/1148175.0*t15; - const double t46 = 29.0/1148175.0*t17; - const double t47 = -t31+t32+t43+t44-t45-t46; - const double t48 = 1073.0/8037225.0*t3; - const double t49 = 1073.0/8037225.0*t7; - const double t50 = 2146.0/8037225.0*t10; - const double t51 = 116.0/8037225.0*t12; - const double t52 = 2146.0/8037225.0*t15; - const double t53 = 116.0/8037225.0*t17; - const double t54 = -t48+t49-t50-t51+t52+t53; - const double t55 = 841.0/10716300.0*t3; - const double t56 = 841.0/10716300.0*t7; - const double t57 = 841.0/5358150.0*t10; - const double t58 = 841.0/5358150.0*t15; - const double t59 = t55-t56+t57-t58; - const double t60 = 29.0/1148175.0*t3; - const double t61 = 29.0/1148175.0*t7; - const double t62 = 58.0/1148175.0*t10; - const double t63 = 58.0/1148175.0*t15; - const double t64 = -t60+t61-t62+t51+t63-t53; - const double t65 = 116.0/8037225.0*t3; - const double t66 = 116.0/8037225.0*t7; - const double t67 = -t65+t66-t50-t34+t52+t36; - const double t68 = t57+t39-t58-t41; - const double t69 = t65-t66-t62-t44+t63+t46; - const double t70 = 1168.0/8037225.0*t12; - const double t71 = 1168.0/8037225.0*t17; - const double t72 = t48-t49+t33+t70-t35-t71; - const double t73 = -t55+t56-t38+t40; - const double t74 = t60-t61+t43-t70-t45+t71; - const double t75 = 1184.0/8037225.0*t3; - const double t76 = 1184.0/8037225.0*t7; - const double t77 = 21904.0/8037225.0*t10; - const double t78 = 1184.0/8037225.0*t12; - const double t79 = 21904.0/8037225.0*t15; - const double t80 = 1184.0/8037225.0*t17; - const double t81 = t75-t76+t77+t78-t79-t80; - const double t82 = 592.0/1148175.0*t10; - const double t83 = 32.0/1148175.0*t12; - const double t84 = 592.0/1148175.0*t15; - const double t85 = 32.0/1148175.0*t17; - const double t86 = -t75+t76+t82+t83-t84-t85; - const double t87 = 32.0/1148175.0*t3; - const double t88 = 32.0/1148175.0*t7; - const double t89 = 16.0/164025.0*t10; - const double t90 = 16.0/164025.0*t15; - const double t91 = -t87+t88+t89-t83-t90+t85; - const double t92 = t87-t88+t82-t78-t84+t80; - const double t93 = 4292.0/2679075.0*t10; - const double t94 = 232.0/2679075.0*t12; - const double t95 = 4292.0/2679075.0*t15; - const double t96 = 232.0/2679075.0*t17; - const double t97 = -t93-t94+t95+t96; - const double t98 = 232.0/2679075.0*t3; - const double t99 = 232.0/2679075.0*t7; - const double t100 = 116.0/382725.0*t10; - const double t101 = 116.0/382725.0*t15; - const double t102 = t98-t99-t100+t101; - const double t103 = -t100+t94+t101-t96; - const double t104 = -t98+t99-t93+t95; - const double t105 = t10-t15; - const double t106 = 2701.0/1071630.0*t3; - const double t107 = 2701.0/1071630.0*t7; - const double t111 = -1073.0/4286520.0*t3+1073.0/4286520.0*t7-t20-t13+t22+t18; - const double t112 = 584.0/893025.0*t3; - const double t113 = 584.0/893025.0*t7; - const double t114 = t112-t113+t43+t44-t45-t46; - const double t115 = 4234.0/2679075.0*t3; - const double t116 = 4234.0/2679075.0*t7; - const double t117 = -t115+t116-t38-t39+t40+t41; - const double t118 = 584.0/229635.0*t3; - const double t119 = 584.0/229635.0*t7; - const double t120 = t118-t119+t33+t34-t35-t36; - const double t121 = 1369.0/535815.0*t3; - const double t122 = 1369.0/535815.0*t7; - const double t123 = t121-t122+t33+t70-t35-t71; - const double t124 = 1073.0/714420.0*t3; - const double t125 = 1073.0/714420.0*t7; - const double t126 = -t124+t125-t38+t40; - const double t127 = 37.0/76545.0*t3; - const double t128 = 37.0/76545.0*t7; - const double t129 = t127-t128+t43-t70-t45+t71; - const double t132 = -58.0/893025.0*t3+58.0/893025.0*t7-t62-t44+t63+t46; - const double t135 = 841.0/5358150.0*t3-841.0/5358150.0*t7+t57+t39-t58-t41; - const double t138 = -58.0/229635.0*t3+58.0/229635.0*t7-t50-t34+t52+t36; - const double t139 = 592.0/893025.0*t3; - const double t140 = 592.0/893025.0*t7; - const double t141 = t139-t140+t82+t83-t84-t85; - const double t142 = 592.0/229635.0*t3; - const double t143 = 592.0/229635.0*t7; - const double t144 = t142-t143+t77+t78-t79-t80; - const double t145 = 16.0/32805.0*t3; - const double t146 = 16.0/32805.0*t7; - const double t147 = t145-t146+t82-t78-t84+t80; - const double t148 = 16.0/127575.0*t3; - const double t149 = 16.0/127575.0*t7; - const double t150 = t148-t149+t89-t83-t90+t85; - const double t151 = 4292.0/2679075.0*t3; - const double t152 = 4292.0/2679075.0*t7; - const double t153 = -t151+t152-t93-t94+t95+t96; - const double t154 = 116.0/76545.0*t3; - const double t155 = 116.0/76545.0*t7; - const double t156 = -t154+t155-t93+t95; - const double t157 = 116.0/382725.0*t3; - const double t158 = 116.0/382725.0*t7; - const double t159 = -t157+t158-t100+t94+t101-t96; - const double t160 = 116.0/297675.0*t3; - const double t161 = 116.0/297675.0*t7; - const double t162 = -t160+t161-t100+t101; - const double t163 = t3-t7+t10-t15; - const double t164 = 2701.0/1071630.0*t12; - const double t165 = 2701.0/1071630.0*t17; - const double t169 = -t4+t8-t20-1073.0/4286520.0*t12+t22+1073.0/4286520.0*t17; - const double t170 = 584.0/893025.0*t12; - const double t171 = 584.0/893025.0*t17; - const double t172 = t127-t128+t43+t170-t45-t171; - const double t173 = 4234.0/2679075.0*t12; - const double t174 = 4234.0/2679075.0*t17; - const double t175 = -t124+t125-t38-t173+t40+t174; - const double t176 = 584.0/229635.0*t12; - const double t177 = 584.0/229635.0*t17; - const double t178 = t121-t122+t33+t176-t35-t177; - const double t179 = 37.0/76545.0*t12; - const double t180 = 37.0/76545.0*t17; - const double t181 = t112-t113+t43+t179-t45-t180; - const double t182 = 1073.0/714420.0*t12; - const double t183 = 1073.0/714420.0*t17; - const double t184 = -t115+t116-t38-t182+t40+t183; - const double t185 = 1369.0/535815.0*t12; - const double t186 = 1369.0/535815.0*t17; - const double t187 = t118-t119+t33+t185-t35-t186; - const double t190 = -t60+t61-t62-58.0/893025.0*t12+t63+58.0/893025.0*t17; - const double t193 = t55-t56+t57+841.0/5358150.0*t12-t58-841.0/5358150.0*t17; - const double t196 = -t48+t49-t50-58.0/229635.0*t12+t52+58.0/229635.0*t17; - const double t197 = 16.0/127575.0*t12; - const double t198 = 16.0/127575.0*t17; - const double t199 = t148-t149+t89+t197-t90-t198; - const double t200 = 592.0/893025.0*t12; - const double t201 = 592.0/893025.0*t17; - const double t202 = t145-t146+t82+t200-t84-t201; - const double t203 = 592.0/229635.0*t12; - const double t204 = 592.0/229635.0*t17; - const double t205 = t142-t143+t77+t203-t79-t204; - const double t206 = 16.0/32805.0*t12; - const double t207 = 16.0/32805.0*t17; - const double t208 = t139-t140+t82+t206-t84-t207; - const double t209 = 116.0/297675.0*t12; - const double t210 = 116.0/297675.0*t17; - const double t211 = -t157+t158-t100-t209+t101+t210; - const double t212 = 4292.0/2679075.0*t12; - const double t213 = 4292.0/2679075.0*t17; - const double t214 = -t154+t155-t93-t212+t95+t213; - const double t215 = 116.0/76545.0*t12; - const double t216 = 116.0/76545.0*t17; - const double t217 = -t151+t152-t93-t215+t95+t216; - const double t218 = 116.0/382725.0*t12; - const double t219 = 116.0/382725.0*t17; - const double t220 = -t160+t161-t100-t218+t101+t219; - const double t221 = t3-t7+t10+t12-t15-t17; - const double t223 = t31-t32+t33+t185-t35-t186; - const double t224 = -t38-t182+t40+t183; - const double t225 = -t31+t32+t43+t179-t45-t180; - const double t226 = t60-t61+t43+t170-t45-t171; - const double t227 = -t55+t56-t38-t173+t40+t174; - const double t228 = t48-t49+t33+t176-t35-t177; - const double t229 = t87-t88+t82+t200-t84-t201; - const double t230 = -t87+t88+t89+t197-t90-t198; - const double t231 = -t75+t76+t82+t206-t84-t207; - const double t232 = t75-t76+t77+t203-t79-t204; - const double t233 = -t100-t209+t101+t210; - const double t234 = t98-t99-t100-t218+t101+t219; - const double t235 = -t93-t215+t95+t216; - const double t236 = -t98+t99-t93-t212+t95+t213; - const double t237 = t10+t12-t15-t17; - const double t238 = 9344.0/2679075.0*t3; - const double t239 = 9344.0/2679075.0*t7; - const double t240 = 18688.0/1148175.0*t10; - const double t241 = 928.0/1148175.0*t12; - const double t242 = 18688.0/1148175.0*t15; - const double t243 = 928.0/1148175.0*t17; - const double t245 = 2336.0/2679075.0*t3; - const double t246 = 2336.0/2679075.0*t7; - const double t247 = 9344.0/2679075.0*t10; - const double t248 = 464.0/2679075.0*t12; - const double t249 = 9344.0/2679075.0*t15; - const double t250 = 464.0/2679075.0*t17; - const double t251 = -t245+t246-t247-t248+t249+t250; - const double t252 = 9344.0/8037225.0*t3; - const double t253 = 9344.0/8037225.0*t7; - const double t254 = 18688.0/8037225.0*t10; - const double t255 = 928.0/8037225.0*t12; - const double t256 = 18688.0/8037225.0*t15; - const double t257 = 928.0/8037225.0*t17; - const double t258 = t252-t253+t254+t255-t256-t257; - const double t261 = 1856.0/1148175.0*t10; - const double t262 = 1856.0/1148175.0*t15; - const double t263 = -928.0/2679075.0*t3+928.0/2679075.0*t7-t261-t241+t262+t243; - const double t264 = 928.0/2679075.0*t10; - const double t265 = 928.0/2679075.0*t15; - const double t266 = t98-t99+t264+t248-t265-t250; - const double t267 = 928.0/8037225.0*t3; - const double t268 = 928.0/8037225.0*t7; - const double t271 = -t267+t268-1856.0/8037225.0*t10-t255+1856.0/8037225.0*t15+t257; - const double t272 = 9472.0/2679075.0*t3; - const double t273 = 9472.0/2679075.0*t7; - const double t274 = 18944.0/1148175.0*t10; - const double t275 = 1024.0/1148175.0*t12; - const double t276 = 18944.0/1148175.0*t15; - const double t277 = 1024.0/1148175.0*t17; - const double t278 = t272-t273+t274+t275-t276-t277; - const double t279 = 9472.0/8037225.0*t3; - const double t280 = 9472.0/8037225.0*t7; - const double t281 = 18944.0/8037225.0*t10; - const double t282 = 1024.0/8037225.0*t12; - const double t283 = 18944.0/8037225.0*t15; - const double t284 = 1024.0/8037225.0*t17; - const double t285 = t279-t280+t281+t282-t283-t284; - const double t286 = 256.0/1148175.0*t3; - const double t287 = 256.0/1148175.0*t7; - const double t288 = 512.0/1148175.0*t10; - const double t289 = 512.0/1148175.0*t15; - const double t290 = t286-t287+t288-t282-t289+t284; - const double t291 = 256.0/382725.0*t3; - const double t292 = 256.0/382725.0*t7; - const double t293 = 512.0/164025.0*t10; - const double t294 = 512.0/164025.0*t15; - const double t295 = t291-t292+t293-t275-t294+t277; - const double t296 = 2368.0/2679075.0*t3; - const double t297 = 2368.0/2679075.0*t7; - const double t298 = 9472.0/2679075.0*t10; - const double t299 = 512.0/2679075.0*t12; - const double t300 = 9472.0/2679075.0*t15; - const double t301 = 512.0/2679075.0*t17; - const double t302 = -t296+t297-t298-t299+t300+t301; - const double t303 = 1856.0/2679075.0*t3; - const double t304 = 1856.0/2679075.0*t7; - const double t305 = 3712.0/2679075.0*t10; - const double t306 = 3712.0/2679075.0*t15; - const double t307 = -t303+t304-t305+t306; - const double t308 = 64.0/382725.0*t3; - const double t309 = 64.0/382725.0*t7; - const double t310 = 256.0/382725.0*t10; - const double t311 = 256.0/382725.0*t15; - const double t312 = -t308+t309-t310+t299+t311-t301; - const double t313 = 1856.0/893025.0*t3; - const double t314 = 1856.0/893025.0*t7; - const double t315 = 3712.0/382725.0*t10; - const double t316 = 3712.0/382725.0*t15; - const double t317 = -t313+t314-t315+t316; - const double t318 = 464.0/893025.0*t3; - const double t319 = 464.0/893025.0*t7; - const double t320 = 1856.0/893025.0*t10; - const double t321 = 1856.0/893025.0*t15; - const double t322 = t318-t319+t320-t321; - const double t323 = 7592.0/893025.0*t3; - const double t324 = 7592.0/893025.0*t7; - const double t325 = 15184.0/893025.0*t10; - const double t326 = 754.0/893025.0*t12; - const double t327 = 15184.0/893025.0*t15; - const double t328 = 754.0/893025.0*t17; - const double t330 = 2336.0/893025.0*t3; - const double t331 = 2336.0/893025.0*t7; - const double t332 = -t330+t331-t247-t248+t249+t250; - const double t333 = 754.0/893025.0*t3; - const double t334 = 754.0/893025.0*t7; - const double t337 = -t333+t334-1508.0/893025.0*t10-t326+1508.0/893025.0*t15+t328; - const double t340 = 232.0/893025.0*t3-232.0/893025.0*t7+t264+t248-t265-t250; - const double t341 = 2368.0/893025.0*t3; - const double t342 = 2368.0/893025.0*t7; - const double t343 = -t341+t342-t298-t299+t300+t301; - const double t344 = 64.0/127575.0*t3; - const double t345 = 64.0/127575.0*t7; - const double t346 = -t344+t345-t310+t299+t311-t301; - const double t347 = 7696.0/893025.0*t3; - const double t348 = 7696.0/893025.0*t7; - const double t349 = 15392.0/893025.0*t10; - const double t350 = 832.0/893025.0*t12; - const double t351 = 15392.0/893025.0*t15; - const double t352 = 832.0/893025.0*t17; - const double t353 = t347-t348+t349+t350-t351-t352; - const double t354 = 464.0/297675.0*t3; - const double t355 = 464.0/297675.0*t7; - const double t356 = t354-t355+t320-t321; - const double t357 = 208.0/127575.0*t3; - const double t358 = 208.0/127575.0*t7; - const double t359 = 416.0/127575.0*t10; - const double t360 = 416.0/127575.0*t15; - const double t361 = t357-t358+t359-t350-t360+t352; - const double t362 = 1508.0/297675.0*t3; - const double t363 = 1508.0/297675.0*t7; - const double t364 = 3016.0/297675.0*t10; - const double t365 = 3016.0/297675.0*t15; - const double t366 = -t362+t363-t364+t365; - const double t367 = 102784.0/8037225.0*t3; - const double t368 = 102784.0/8037225.0*t7; - const double t372 = -10208.0/8037225.0*t3+10208.0/8037225.0*t7-t261-t241+t262+t243; - const double t373 = 104192.0/8037225.0*t3; - const double t374 = 104192.0/8037225.0*t7; - const double t375 = t373-t374+t274+t275-t276-t277; - const double t376 = 2816.0/1148175.0*t3; - const double t377 = 2816.0/1148175.0*t7; - const double t378 = t376-t377+t293-t275-t294+t277; - const double t379 = 20416.0/2679075.0*t3; - const double t380 = 20416.0/2679075.0*t7; - const double t381 = -t379+t380-t315+t316; - const double t382 = 1184.0/76545.0*t3; - const double t383 = 1184.0/76545.0*t7; - const double t384 = 9344.0/2679075.0*t12; - const double t385 = 9344.0/2679075.0*t17; - const double t387 = 592.0/178605.0*t3; - const double t388 = 592.0/178605.0*t7; - const double t389 = 2336.0/2679075.0*t12; - const double t390 = 2336.0/2679075.0*t17; - const double t391 = -t387+t388-t247-t389+t249+t390; - const double t394 = 9344.0/8037225.0*t12; - const double t395 = 9344.0/8037225.0*t17; - const double t396 = 1184.0/535815.0*t3-1184.0/535815.0*t7+t254+t394-t256-t395; - const double t397 = 928.0/1148175.0*t3; - const double t398 = 928.0/1148175.0*t7; - const double t401 = -t397+t398-t261-928.0/2679075.0*t12+t262+928.0/2679075.0*t17; - const double t402 = 464.0/2679075.0*t3; - const double t403 = 464.0/2679075.0*t7; - const double t404 = t402-t403+t264+t94-t265-t96; - const double t405 = 512.0/127575.0*t3; - const double t406 = 512.0/127575.0*t7; - const double t407 = 256.0/382725.0*t12; - const double t408 = 256.0/382725.0*t17; - const double t409 = t405-t406+t293+t407-t294-t408; - const double t410 = 512.0/32805.0*t3; - const double t411 = 512.0/32805.0*t7; - const double t412 = 9472.0/2679075.0*t12; - const double t413 = 9472.0/2679075.0*t17; - const double t414 = t410-t411+t274+t412-t276-t413; - const double t417 = 9472.0/8037225.0*t12; - const double t418 = 9472.0/8037225.0*t17; - const double t419 = 512.0/229635.0*t3-512.0/229635.0*t7+t281+t417-t283-t418; - const double t422 = 256.0/1148175.0*t12; - const double t423 = 256.0/1148175.0*t17; - const double t424 = 512.0/893025.0*t3-512.0/893025.0*t7+t288+t422-t289-t423; - const double t425 = 3712.0/382725.0*t3; - const double t426 = 3712.0/382725.0*t7; - const double t427 = 1856.0/893025.0*t12; - const double t428 = 1856.0/893025.0*t17; - const double t429 = -t425+t426-t315-t427+t316+t428; - const double t430 = 256.0/76545.0*t3; - const double t431 = 256.0/76545.0*t7; - const double t432 = 2368.0/2679075.0*t12; - const double t433 = 2368.0/2679075.0*t17; - const double t434 = -t430+t431-t298-t432+t300+t433; - const double t437 = 1856.0/2679075.0*t12; - const double t438 = 1856.0/2679075.0*t17; - const double t439 = -3712.0/2679075.0*t3+3712.0/2679075.0*t7-t305-t437+t306+t438; - const double t440 = 256.0/297675.0*t3; - const double t441 = 256.0/297675.0*t7; - const double t442 = 64.0/382725.0*t12; - const double t443 = 64.0/382725.0*t17; - const double t444 = -t440+t441-t310-t442+t311+t443; - const double t445 = 464.0/893025.0*t12; - const double t446 = 464.0/893025.0*t17; - const double t447 = t313-t314+t320+t445-t321-t446; - const double t450 = 7592.0/893025.0*t12; - const double t451 = 7592.0/893025.0*t17; - const double t453 = 2336.0/893025.0*t12; - const double t454 = 2336.0/893025.0*t17; - const double t455 = -t387+t388-t247-t453+t249+t454; - const double t458 = t402-t403+t264+232.0/893025.0*t12-t265-232.0/893025.0*t17; - const double t459 = 2368.0/893025.0*t12; - const double t460 = 2368.0/893025.0*t17; - const double t461 = -t430+t431-t298-t459+t300+t460; - const double t462 = 64.0/127575.0*t12; - const double t463 = 64.0/127575.0*t17; - const double t464 = -t440+t441-t310-t462+t311+t463; - const double t467 = 7696.0/893025.0*t12; - const double t468 = 7696.0/893025.0*t17; - const double t469 = 416.0/25515.0*t3-416.0/25515.0*t7+t349+t467-t351-t468; - const double t470 = 464.0/297675.0*t12; - const double t471 = 464.0/297675.0*t17; - const double t472 = t313-t314+t320+t470-t321-t471; - const double t475 = 208.0/127575.0*t12; - const double t476 = 208.0/127575.0*t17; - const double t477 = 416.0/99225.0*t3-416.0/99225.0*t7+t359+t475-t360-t476; - const double t480 = 1508.0/297675.0*t12; - const double t481 = 1508.0/297675.0*t17; - const double t482 = -3016.0/297675.0*t3+3016.0/297675.0*t7-t364-t480+t365+t481; - const double t483 = 102784.0/8037225.0*t12; - const double t484 = 102784.0/8037225.0*t17; - const double t488 = -t397+t398-t261-10208.0/8037225.0*t12+t262+10208.0/8037225.0*t17; - const double t489 = 104192.0/8037225.0*t12; - const double t490 = 104192.0/8037225.0*t17; - const double t491 = t410-t411+t274+t489-t276-t490; - const double t492 = 2816.0/1148175.0*t12; - const double t493 = 2816.0/1148175.0*t17; - const double t494 = t405-t406+t293+t492-t294-t493; - const double t495 = 20416.0/2679075.0*t12; - const double t496 = 20416.0/2679075.0*t17; - const double t497 = -t425+t426-t315-t495+t316+t496; - const double t498 = 1184.0/76545.0*t12; - const double t499 = 1184.0/76545.0*t17; - const double t501 = 592.0/178605.0*t12; - const double t502 = 592.0/178605.0*t17; - const double t503 = -t245+t246-t247-t501+t249+t502; - const double t506 = t252-t253+t254+1184.0/535815.0*t12-t256-1184.0/535815.0*t17; - const double t507 = 512.0/127575.0*t12; - const double t508 = 512.0/127575.0*t17; - const double t509 = t291-t292+t293+t507-t294-t508; - const double t512 = t286-t287+t288+512.0/893025.0*t12-t289-512.0/893025.0*t17; - const double t515 = t279-t280+t281+512.0/229635.0*t12-t283-512.0/229635.0*t17; - const double t516 = 512.0/32805.0*t12; - const double t517 = 512.0/32805.0*t17; - const double t518 = t272-t273+t274+t516-t276-t517; - const double t519 = 256.0/297675.0*t12; - const double t520 = 256.0/297675.0*t17; - const double t521 = -t308+t309-t310-t519+t311+t520; - const double t524 = -t303+t304-t305-3712.0/2679075.0*t12+t306+3712.0/2679075.0*t17; - const double t525 = 256.0/76545.0*t12; - const double t526 = 256.0/76545.0*t17; - const double t527 = -t296+t297-t298-t525+t300+t526; - const double t528 = 3712.0/382725.0*t12; - const double t529 = 3712.0/382725.0*t17; - const double t530 = -t313+t314-t315-t528+t316+t529; - const double t531 = t318-t319+t320+t427-t321-t428; - const double t535 = -t330+t331-t247-t501+t249+t502; - const double t536 = -t344+t345-t310-t519+t311+t520; - const double t537 = -t341+t342-t298-t525+t300+t526; - const double t540 = t357-t358+t359+416.0/99225.0*t12-t360-416.0/99225.0*t17; - const double t541 = t354-t355+t320+t427-t321-t428; - const double t544 = t347-t348+t349+416.0/25515.0*t12-t351-416.0/25515.0*t17; - const double t547 = -t362+t363-t364-3016.0/297675.0*t12+t365+3016.0/297675.0*t17; - const double t549 = t376-t377+t293+t507-t294-t508; - const double t550 = t373-t374+t274+t516-t276-t517; - const double t551 = -t379+t380-t315-t528+t316+t529; - const double t553 = -t402+t403-t247-t389+t249+t390; - const double t554 = t267-t268+t254+t394-t256-t395; - const double t555 = 1024.0/1148175.0*t3; - const double t556 = 1024.0/1148175.0*t7; - const double t557 = t555-t556+t274+t412-t276-t413; - const double t558 = -t555+t556+t293+t407-t294-t408; - const double t559 = 1024.0/8037225.0*t3; - const double t560 = 1024.0/8037225.0*t7; - const double t561 = -t559+t560+t288+t422-t289-t423; - const double t562 = t559-t560+t281+t417-t283-t418; - const double t563 = -t315-t427+t316+t428; - const double t564 = 512.0/2679075.0*t3; - const double t565 = 512.0/2679075.0*t7; - const double t566 = t564-t565-t310-t442+t311+t443; - const double t567 = -t305-t437+t306+t438; - const double t568 = -t564+t565-t298-t432+t300+t433; - const double t569 = t320+t445-t321-t446; - const double t571 = -t402+t403-t247-t453+t249+t454; - const double t572 = t564-t565-t310-t462+t311+t463; - const double t573 = -t564+t565-t298-t459+t300+t460; - const double t574 = 832.0/893025.0*t3; - const double t575 = 832.0/893025.0*t7; - const double t576 = -t574+t575+t359+t475-t360-t476; - const double t577 = t320+t470-t321-t471; - const double t578 = t574-t575+t349+t467-t351-t468; - const double t579 = -t364-t480+t365+t481; - const double t581 = -t555+t556+t293+t492-t294-t493; - const double t582 = t555-t556+t274+t489-t276-t490; - const double t583 = -t315-t495+t316+t496; - const double t584 = 8192.0/382725.0*t3; - const double t585 = 8192.0/382725.0*t7; - const double t586 = 16384.0/164025.0*t10; - const double t587 = 8192.0/382725.0*t12; - const double t588 = 16384.0/164025.0*t15; - const double t589 = 8192.0/382725.0*t17; - const double t591 = 8192.0/1148175.0*t3; - const double t592 = 8192.0/1148175.0*t7; - const double t593 = 16384.0/1148175.0*t10; - const double t595 = 16384.0/1148175.0*t15; - const double t597 = t591-t592+t593+8192.0/2679075.0*t12-t595-8192.0/2679075.0*t17; - const double t604 = 8192.0/8037225.0*t3-8192.0/8037225.0*t7+16384.0/8037225.0*t10+ - 8192.0/8037225.0*t12-16384.0/8037225.0*t15-8192.0/8037225.0*t17; - const double t607 = 8192.0/1148175.0*t12; - const double t608 = 8192.0/1148175.0*t17; - const double t609 = 8192.0/2679075.0*t3-8192.0/2679075.0*t7+t593+t607-t595-t608; - const double t610 = 2048.0/382725.0*t3; - const double t611 = 2048.0/382725.0*t7; - const double t612 = 8192.0/382725.0*t10; - const double t613 = 4096.0/893025.0*t12; - const double t614 = 8192.0/382725.0*t15; - const double t615 = 4096.0/893025.0*t17; - const double t616 = -t610+t611-t612-t613+t614+t615; - const double t617 = 4096.0/2679075.0*t3; - const double t618 = 4096.0/2679075.0*t7; - const double t619 = 8192.0/2679075.0*t10; - const double t621 = 8192.0/2679075.0*t15; - const double t623 = -t617+t618-t619-2048.0/2679075.0*t12+t621+2048.0/2679075.0*t17; - const double t626 = 4096.0/2679075.0*t12; - const double t627 = 4096.0/2679075.0*t17; - const double t628 = -2048.0/2679075.0*t3+2048.0/2679075.0*t7-t619-t626+t621+t627; - const double t629 = 4096.0/893025.0*t3; - const double t630 = 4096.0/893025.0*t7; - const double t631 = 2048.0/382725.0*t12; - const double t632 = 2048.0/382725.0*t17; - const double t633 = -t629+t630-t612-t631+t614+t632; - const double t634 = 1024.0/893025.0*t3; - const double t635 = 1024.0/893025.0*t7; - const double t636 = 4096.0/893025.0*t10; - const double t637 = 1024.0/893025.0*t12; - const double t638 = 4096.0/893025.0*t15; - const double t639 = 1024.0/893025.0*t17; - const double t640 = t634-t635+t636+t637-t638-t639; - const double t641 = 90112.0/1148175.0*t3; - const double t642 = 90112.0/1148175.0*t7; - const double t646 = 90112.0/8037225.0*t3-90112.0/8037225.0*t7+t593+t607-t595-t608; - const double t647 = 2048.0/127575.0*t3; - const double t648 = 2048.0/127575.0*t7; - const double t649 = -t647+t648-t612-t613+t614+t615; - const double t650 = 45056.0/2679075.0*t3; - const double t651 = 45056.0/2679075.0*t7; - const double t652 = -t650+t651-t612-t631+t614+t632; - const double t655 = -2048.0/893025.0*t3+2048.0/893025.0*t7-t619-t626+t621+t627; - const double t656 = 1024.0/297675.0*t3; - const double t657 = 1024.0/297675.0*t7; - const double t658 = t656-t657+t636+t637-t638-t639; - const double t659 = 90112.0/1148175.0*t12; - const double t660 = 90112.0/1148175.0*t17; - const double t664 = t591-t592+t593+90112.0/8037225.0*t12-t595-90112.0/8037225.0*t17; - const double t665 = 2048.0/127575.0*t12; - const double t666 = 2048.0/127575.0*t17; - const double t667 = -t650+t651-t612-t665+t614+t666; - const double t668 = 45056.0/2679075.0*t12; - const double t669 = 45056.0/2679075.0*t17; - const double t670 = -t647+t648-t612-t668+t614+t669; - const double t673 = -t617+t618-t619-2048.0/893025.0*t12+t621+2048.0/893025.0*t17; - const double t674 = 1024.0/297675.0*t12; - const double t675 = 1024.0/297675.0*t17; - const double t676 = t656-t657+t636+t674-t638-t675; - const double t678 = -t610+t611-t612-t668+t614+t669; - const double t679 = -t629+t630-t612-t665+t614+t666; - const double t680 = t634-t635+t636+t674-t638-t675; - const double t681 = 6656.0/127575.0*t3; - const double t682 = 6656.0/127575.0*t7; - const double t683 = 13312.0/127575.0*t10; - const double t685 = 13312.0/127575.0*t15; - const double t694 = 6656.0/893025.0*t3-6656.0/893025.0*t7+13312.0/893025.0*t10+6656.0/ - 893025.0*t12-13312.0/893025.0*t15-6656.0/893025.0*t17; - const double t695 = 3328.0/297675.0*t3; - const double t696 = 3328.0/297675.0*t7; - const double t697 = 6656.0/297675.0*t10; - const double t699 = 6656.0/297675.0*t15; - const double t701 = -t695+t696-t697-1664.0/297675.0*t12+t699+1664.0/297675.0*t17; - const double t704 = 6656.0/127575.0*t12; - const double t705 = 6656.0/127575.0*t17; - const double t709 = 3328.0/297675.0*t12; - const double t710 = 3328.0/297675.0*t17; - const double t711 = -1664.0/99225.0*t3+1664.0/99225.0*t7-t697-t709+t699+t710; - const double t717 = -t695+t696-t697-1664.0/99225.0*t12+t699+1664.0/99225.0*t17; - const double t723 = -1664.0/297675.0*t3+1664.0/297675.0*t7-t697-t709+t699+t710; - local_mass_matrix(0,0) = t4-t8+t11+t13-t16-t18; - local_mass_matrix(0,1) = t24; - local_mass_matrix(0,2) = t29; - local_mass_matrix(0,3) = t30; - local_mass_matrix(0,4) = t37; - local_mass_matrix(0,5) = t42; - local_mass_matrix(0,6) = t47; - local_mass_matrix(0,7) = t54; - local_mass_matrix(0,8) = t59; - local_mass_matrix(0,9) = t64; - local_mass_matrix(0,10) = t67; - local_mass_matrix(0,11) = t68; - local_mass_matrix(0,12) = t69; - local_mass_matrix(0,13) = t72; - local_mass_matrix(0,14) = t73; - local_mass_matrix(0,15) = t74; - local_mass_matrix(0,16) = t81; - local_mass_matrix(0,17) = t86; - local_mass_matrix(0,18) = t91; - local_mass_matrix(0,19) = t92; - local_mass_matrix(0,20) = t97; - local_mass_matrix(0,21) = t102; - local_mass_matrix(0,22) = t103; - local_mass_matrix(0,23) = t104; - local_mass_matrix(0,24) = 841.0/893025.0*t105; - local_mass_matrix(1,0) = t24; - local_mass_matrix(1,1) = t106-t107+t11+t13-t16-t18; - local_mass_matrix(1,2) = t111; - local_mass_matrix(1,3) = t29; - local_mass_matrix(1,4) = t114; - local_mass_matrix(1,5) = t117; - local_mass_matrix(1,6) = t120; - local_mass_matrix(1,7) = t123; - local_mass_matrix(1,8) = t126; - local_mass_matrix(1,9) = t129; - local_mass_matrix(1,10) = t132; - local_mass_matrix(1,11) = t135; - local_mass_matrix(1,12) = t138; - local_mass_matrix(1,13) = t54; - local_mass_matrix(1,14) = t59; - local_mass_matrix(1,15) = t64; - local_mass_matrix(1,16) = t141; - local_mass_matrix(1,17) = t144; - local_mass_matrix(1,18) = t147; - local_mass_matrix(1,19) = t150; - local_mass_matrix(1,20) = t153; - local_mass_matrix(1,21) = t156; - local_mass_matrix(1,22) = t159; - local_mass_matrix(1,23) = t162; - local_mass_matrix(1,24) = 841.0/893025.0*t163; - local_mass_matrix(2,0) = t29; - local_mass_matrix(2,1) = t111; - local_mass_matrix(2,2) = t106-t107+t11+t164-t16-t165; - local_mass_matrix(2,3) = t169; - local_mass_matrix(2,4) = t132; - local_mass_matrix(2,5) = t135; - local_mass_matrix(2,6) = t138; - local_mass_matrix(2,7) = t172; - local_mass_matrix(2,8) = t175; - local_mass_matrix(2,9) = t178; - local_mass_matrix(2,10) = t181; - local_mass_matrix(2,11) = t184; - local_mass_matrix(2,12) = t187; - local_mass_matrix(2,13) = t190; - local_mass_matrix(2,14) = t193; - local_mass_matrix(2,15) = t196; - local_mass_matrix(2,16) = t199; - local_mass_matrix(2,17) = t202; - local_mass_matrix(2,18) = t205; - local_mass_matrix(2,19) = t208; - local_mass_matrix(2,20) = t211; - local_mass_matrix(2,21) = t214; - local_mass_matrix(2,22) = t217; - local_mass_matrix(2,23) = t220; - local_mass_matrix(2,24) = 841.0/893025.0*t221; - local_mass_matrix(3,0) = t30; - local_mass_matrix(3,1) = t29; - local_mass_matrix(3,2) = t169; - local_mass_matrix(3,3) = t4-t8+t11+t164-t16-t165; - local_mass_matrix(3,4) = t67; - local_mass_matrix(3,5) = t68; - local_mass_matrix(3,6) = t69; - local_mass_matrix(3,7) = t190; - local_mass_matrix(3,8) = t193; - local_mass_matrix(3,9) = t196; - local_mass_matrix(3,10) = t223; - local_mass_matrix(3,11) = t224; - local_mass_matrix(3,12) = t225; - local_mass_matrix(3,13) = t226; - local_mass_matrix(3,14) = t227; - local_mass_matrix(3,15) = t228; - local_mass_matrix(3,16) = t229; - local_mass_matrix(3,17) = t230; - local_mass_matrix(3,18) = t231; - local_mass_matrix(3,19) = t232; - local_mass_matrix(3,20) = t233; - local_mass_matrix(3,21) = t234; - local_mass_matrix(3,22) = t235; - local_mass_matrix(3,23) = t236; - local_mass_matrix(3,24) = 841.0/893025.0*t237; - local_mass_matrix(4,0) = t37; - local_mass_matrix(4,1) = t114; - local_mass_matrix(4,2) = t132; - local_mass_matrix(4,3) = t67; - local_mass_matrix(4,4) = t238-t239+t240+t241-t242-t243; - local_mass_matrix(4,5) = t251; - local_mass_matrix(4,6) = t258; - local_mass_matrix(4,7) = t141; - local_mass_matrix(4,8) = t162; - local_mass_matrix(4,9) = t150; - local_mass_matrix(4,10) = t263; - local_mass_matrix(4,11) = t266; - local_mass_matrix(4,12) = t271; - local_mass_matrix(4,13) = t81; - local_mass_matrix(4,14) = t104; - local_mass_matrix(4,15) = t92; - local_mass_matrix(4,16) = t278; - local_mass_matrix(4,17) = t285; - local_mass_matrix(4,18) = t290; - local_mass_matrix(4,19) = t295; - local_mass_matrix(4,20) = t302; - local_mass_matrix(4,21) = t307; - local_mass_matrix(4,22) = t312; - local_mass_matrix(4,23) = t317; - local_mass_matrix(4,24) = t322; - local_mass_matrix(5,0) = t42; - local_mass_matrix(5,1) = t117; - local_mass_matrix(5,2) = t135; - local_mass_matrix(5,3) = t68; - local_mass_matrix(5,4) = t251; - local_mass_matrix(5,5) = t323-t324+t325+t326-t327-t328; - local_mass_matrix(5,6) = t332; - local_mass_matrix(5,7) = t153; - local_mass_matrix(5,8) = 841.0/893025.0*t163; - local_mass_matrix(5,9) = t159; - local_mass_matrix(5,10) = t266; - local_mass_matrix(5,11) = t337; - local_mass_matrix(5,12) = t340; - local_mass_matrix(5,13) = t97; - local_mass_matrix(5,14) = 841.0/893025.0*t105; - local_mass_matrix(5,15) = t103; - local_mass_matrix(5,16) = t302; - local_mass_matrix(5,17) = t343; - local_mass_matrix(5,18) = t346; - local_mass_matrix(5,19) = t312; - local_mass_matrix(5,20) = t353; - local_mass_matrix(5,21) = t356; - local_mass_matrix(5,22) = t361; - local_mass_matrix(5,23) = t322; - local_mass_matrix(5,24) = t366; - local_mass_matrix(6,0) = t47; - local_mass_matrix(6,1) = t120; - local_mass_matrix(6,2) = t138; - local_mass_matrix(6,3) = t69; - local_mass_matrix(6,4) = t258; - local_mass_matrix(6,5) = t332; - local_mass_matrix(6,6) = t367-t368+t240+t241-t242-t243; - local_mass_matrix(6,7) = t144; - local_mass_matrix(6,8) = t156; - local_mass_matrix(6,9) = t147; - local_mass_matrix(6,10) = t271; - local_mass_matrix(6,11) = t340; - local_mass_matrix(6,12) = t372; - local_mass_matrix(6,13) = t86; - local_mass_matrix(6,14) = t102; - local_mass_matrix(6,15) = t91; - local_mass_matrix(6,16) = t285; - local_mass_matrix(6,17) = t375; - local_mass_matrix(6,18) = t378; - local_mass_matrix(6,19) = t290; - local_mass_matrix(6,20) = t343; - local_mass_matrix(6,21) = t381; - local_mass_matrix(6,22) = t346; - local_mass_matrix(6,23) = t307; - local_mass_matrix(6,24) = t356; - local_mass_matrix(7,0) = t54; - local_mass_matrix(7,1) = t123; - local_mass_matrix(7,2) = t172; - local_mass_matrix(7,3) = t190; - local_mass_matrix(7,4) = t141; - local_mass_matrix(7,5) = t153; - local_mass_matrix(7,6) = t144; - local_mass_matrix(7,7) = t382-t383+t240+t384-t242-t385; - local_mass_matrix(7,8) = t391; - local_mass_matrix(7,9) = t396; - local_mass_matrix(7,10) = t199; - local_mass_matrix(7,11) = t211; - local_mass_matrix(7,12) = t202; - local_mass_matrix(7,13) = t401; - local_mass_matrix(7,14) = t404; - local_mass_matrix(7,15) = t271; - local_mass_matrix(7,16) = t409; - local_mass_matrix(7,17) = t414; - local_mass_matrix(7,18) = t419; - local_mass_matrix(7,19) = t424; - local_mass_matrix(7,20) = t429; - local_mass_matrix(7,21) = t434; - local_mass_matrix(7,22) = t439; - local_mass_matrix(7,23) = t444; - local_mass_matrix(7,24) = t447; - local_mass_matrix(8,0) = t59; - local_mass_matrix(8,1) = t126; - local_mass_matrix(8,2) = t175; - local_mass_matrix(8,3) = t193; - local_mass_matrix(8,4) = t162; - local_mass_matrix(8,5) = 841.0/893025.0*t163; - local_mass_matrix(8,6) = t156; - local_mass_matrix(8,7) = t391; - local_mass_matrix(8,8) = 962.0/59535.0*t3-962.0/59535.0*t7+t325+t450- - t327-t451; - local_mass_matrix(8,9) = t455; - local_mass_matrix(8,10) = t220; - local_mass_matrix(8,11) = 841.0/893025.0*t221; - local_mass_matrix(8,12) = t214; - local_mass_matrix(8,13) = t404; - local_mass_matrix(8,14) = t337; - local_mass_matrix(8,15) = t458; - local_mass_matrix(8,16) = t444; - local_mass_matrix(8,17) = t434; - local_mass_matrix(8,18) = t461; - local_mass_matrix(8,19) = t464; - local_mass_matrix(8,20) = t447; - local_mass_matrix(8,21) = t469; - local_mass_matrix(8,22) = t472; - local_mass_matrix(8,23) = t477; - local_mass_matrix(8,24) = t482; - local_mass_matrix(9,0) = t64; - local_mass_matrix(9,1) = t129; - local_mass_matrix(9,2) = t178; - local_mass_matrix(9,3) = t196; - local_mass_matrix(9,4) = t150; - local_mass_matrix(9,5) = t159; - local_mass_matrix(9,6) = t147; - local_mass_matrix(9,7) = t396; - local_mass_matrix(9,8) = t455; - local_mass_matrix(9,9) = t382-t383+t240+t483-t242-t484; - local_mass_matrix(9,10) = t208; - local_mass_matrix(9,11) = t217; - local_mass_matrix(9,12) = t205; - local_mass_matrix(9,13) = t271; - local_mass_matrix(9,14) = t458; - local_mass_matrix(9,15) = t488; - local_mass_matrix(9,16) = t424; - local_mass_matrix(9,17) = t419; - local_mass_matrix(9,18) = t491; - local_mass_matrix(9,19) = t494; - local_mass_matrix(9,20) = t439; - local_mass_matrix(9,21) = t461; - local_mass_matrix(9,22) = t497; - local_mass_matrix(9,23) = t464; - local_mass_matrix(9,24) = t472; - local_mass_matrix(10,0) = t67; - local_mass_matrix(10,1) = t132; - local_mass_matrix(10,2) = t181; - local_mass_matrix(10,3) = t223; - local_mass_matrix(10,4) = t263; - local_mass_matrix(10,5) = t266; - local_mass_matrix(10,6) = t271; - local_mass_matrix(10,7) = t199; - local_mass_matrix(10,8) = t220; - local_mass_matrix(10,9) = t208; - local_mass_matrix(10,10) = t238-t239+t240+t498-t242-t499; - local_mass_matrix(10,11) = t503; - local_mass_matrix(10,12) = t506; - local_mass_matrix(10,13) = t229; - local_mass_matrix(10,14) = t236; - local_mass_matrix(10,15) = t232; - local_mass_matrix(10,16) = t509; - local_mass_matrix(10,17) = t512; - local_mass_matrix(10,18) = t515; - local_mass_matrix(10,19) = t518; - local_mass_matrix(10,20) = t521; - local_mass_matrix(10,21) = t524; - local_mass_matrix(10,22) = t527; - local_mass_matrix(10,23) = t530; - local_mass_matrix(10,24) = t531; - local_mass_matrix(11,0) = t68; - local_mass_matrix(11,1) = t135; - local_mass_matrix(11,2) = t184; - local_mass_matrix(11,3) = t224; - local_mass_matrix(11,4) = t266; - local_mass_matrix(11,5) = t337; - local_mass_matrix(11,6) = t340; - local_mass_matrix(11,7) = t211; - local_mass_matrix(11,8) = 841.0/893025.0*t221; - local_mass_matrix(11,9) = t217; - local_mass_matrix(11,10) = t503; - local_mass_matrix(11,11) = t323-t324+t325+962.0/59535.0*t12-t327-962.0/ - 59535.0*t17; - local_mass_matrix(11,12) = t535; - local_mass_matrix(11,13) = t233; - local_mass_matrix(11,14) = 841.0/893025.0*t237; - local_mass_matrix(11,15) = t235; - local_mass_matrix(11,16) = t521; - local_mass_matrix(11,17) = t536; - local_mass_matrix(11,18) = t537; - local_mass_matrix(11,19) = t527; - local_mass_matrix(11,20) = t540; - local_mass_matrix(11,21) = t541; - local_mass_matrix(11,22) = t544; - local_mass_matrix(11,23) = t531; - local_mass_matrix(11,24) = t547; - local_mass_matrix(12,0) = t69; - local_mass_matrix(12,1) = t138; - local_mass_matrix(12,2) = t187; - local_mass_matrix(12,3) = t225; - local_mass_matrix(12,4) = t271; - local_mass_matrix(12,5) = t340; - local_mass_matrix(12,6) = t372; - local_mass_matrix(12,7) = t202; - local_mass_matrix(12,8) = t214; - local_mass_matrix(12,9) = t205; - local_mass_matrix(12,10) = t506; - local_mass_matrix(12,11) = t535; - local_mass_matrix(12,12) = t367-t368+t240+t498-t242-t499; - local_mass_matrix(12,13) = t230; - local_mass_matrix(12,14) = t234; - local_mass_matrix(12,15) = t231; - local_mass_matrix(12,16) = t512; - local_mass_matrix(12,17) = t549; - local_mass_matrix(12,18) = t550; - local_mass_matrix(12,19) = t515; - local_mass_matrix(12,20) = t536; - local_mass_matrix(12,21) = t551; - local_mass_matrix(12,22) = t537; - local_mass_matrix(12,23) = t524; - local_mass_matrix(12,24) = t541; - local_mass_matrix(13,0) = t72; - local_mass_matrix(13,1) = t54; - local_mass_matrix(13,2) = t190; - local_mass_matrix(13,3) = t226; - local_mass_matrix(13,4) = t81; - local_mass_matrix(13,5) = t97; - local_mass_matrix(13,6) = t86; - local_mass_matrix(13,7) = t401; - local_mass_matrix(13,8) = t404; - local_mass_matrix(13,9) = t271; - local_mass_matrix(13,10) = t229; - local_mass_matrix(13,11) = t233; - local_mass_matrix(13,12) = t230; - local_mass_matrix(13,13) = t397-t398+t240+t384-t242-t385; - local_mass_matrix(13,14) = t553; - local_mass_matrix(13,15) = t554; - local_mass_matrix(13,16) = t557; - local_mass_matrix(13,17) = t558; - local_mass_matrix(13,18) = t561; - local_mass_matrix(13,19) = t562; - local_mass_matrix(13,20) = t563; - local_mass_matrix(13,21) = t566; - local_mass_matrix(13,22) = t567; - local_mass_matrix(13,23) = t568; - local_mass_matrix(13,24) = t569; - local_mass_matrix(14,0) = t73; - local_mass_matrix(14,1) = t59; - local_mass_matrix(14,2) = t193; - local_mass_matrix(14,3) = t227; - local_mass_matrix(14,4) = t104; - local_mass_matrix(14,5) = 841.0/893025.0*t105; - local_mass_matrix(14,6) = t102; - local_mass_matrix(14,7) = t404; - local_mass_matrix(14,8) = t337; - local_mass_matrix(14,9) = t458; - local_mass_matrix(14,10) = t236; - local_mass_matrix(14,11) = 841.0/893025.0*t237; - local_mass_matrix(14,12) = t234; - local_mass_matrix(14,13) = t553; - local_mass_matrix(14,14) = t333-t334+t325+t450-t327-t451; - local_mass_matrix(14,15) = t571; - local_mass_matrix(14,16) = t568; - local_mass_matrix(14,17) = t566; - local_mass_matrix(14,18) = t572; - local_mass_matrix(14,19) = t573; - local_mass_matrix(14,20) = t569; - local_mass_matrix(14,21) = t576; - local_mass_matrix(14,22) = t577; - local_mass_matrix(14,23) = t578; - local_mass_matrix(14,24) = t579; - local_mass_matrix(15,0) = t74; - local_mass_matrix(15,1) = t64; - local_mass_matrix(15,2) = t196; - local_mass_matrix(15,3) = t228; - local_mass_matrix(15,4) = t92; - local_mass_matrix(15,5) = t103; - local_mass_matrix(15,6) = t91; - local_mass_matrix(15,7) = t271; - local_mass_matrix(15,8) = t458; - local_mass_matrix(15,9) = t488; - local_mass_matrix(15,10) = t232; - local_mass_matrix(15,11) = t235; - local_mass_matrix(15,12) = t231; - local_mass_matrix(15,13) = t554; - local_mass_matrix(15,14) = t571; - local_mass_matrix(15,15) = t397-t398+t240+t483-t242-t484; - local_mass_matrix(15,16) = t562; - local_mass_matrix(15,17) = t561; - local_mass_matrix(15,18) = t581; - local_mass_matrix(15,19) = t582; - local_mass_matrix(15,20) = t567; - local_mass_matrix(15,21) = t572; - local_mass_matrix(15,22) = t583; - local_mass_matrix(15,23) = t573; - local_mass_matrix(15,24) = t577; - local_mass_matrix(16,0) = t81; - local_mass_matrix(16,1) = t141; - local_mass_matrix(16,2) = t199; - local_mass_matrix(16,3) = t229; - local_mass_matrix(16,4) = t278; - local_mass_matrix(16,5) = t302; - local_mass_matrix(16,6) = t285; - local_mass_matrix(16,7) = t409; - local_mass_matrix(16,8) = t444; - local_mass_matrix(16,9) = t424; - local_mass_matrix(16,10) = t509; - local_mass_matrix(16,11) = t521; - local_mass_matrix(16,12) = t512; - local_mass_matrix(16,13) = t557; - local_mass_matrix(16,14) = t568; - local_mass_matrix(16,15) = t562; - local_mass_matrix(16,16) = t584-t585+t586+t587-t588-t589; - local_mass_matrix(16,17) = t597; - local_mass_matrix(16,18) = t604; - local_mass_matrix(16,19) = t609; - local_mass_matrix(16,20) = t616; - local_mass_matrix(16,21) = t623; - local_mass_matrix(16,22) = t628; - local_mass_matrix(16,23) = t633; - local_mass_matrix(16,24) = t640; - local_mass_matrix(17,0) = t86; - local_mass_matrix(17,1) = t144; - local_mass_matrix(17,2) = t202; - local_mass_matrix(17,3) = t230; - local_mass_matrix(17,4) = t285; - local_mass_matrix(17,5) = t343; - local_mass_matrix(17,6) = t375; - local_mass_matrix(17,7) = t414; - local_mass_matrix(17,8) = t434; - local_mass_matrix(17,9) = t419; - local_mass_matrix(17,10) = t512; - local_mass_matrix(17,11) = t536; - local_mass_matrix(17,12) = t549; - local_mass_matrix(17,13) = t558; - local_mass_matrix(17,14) = t566; - local_mass_matrix(17,15) = t561; - local_mass_matrix(17,16) = t597; - local_mass_matrix(17,17) = t641-t642+t586+t587-t588-t589; - local_mass_matrix(17,18) = t646; - local_mass_matrix(17,19) = t604; - local_mass_matrix(17,20) = t649; - local_mass_matrix(17,21) = t652; - local_mass_matrix(17,22) = t655; - local_mass_matrix(17,23) = t623; - local_mass_matrix(17,24) = t658; - local_mass_matrix(18,0) = t91; - local_mass_matrix(18,1) = t147; - local_mass_matrix(18,2) = t205; - local_mass_matrix(18,3) = t231; - local_mass_matrix(18,4) = t290; - local_mass_matrix(18,5) = t346; - local_mass_matrix(18,6) = t378; - local_mass_matrix(18,7) = t419; - local_mass_matrix(18,8) = t461; - local_mass_matrix(18,9) = t491; - local_mass_matrix(18,10) = t515; - local_mass_matrix(18,11) = t537; - local_mass_matrix(18,12) = t550; - local_mass_matrix(18,13) = t561; - local_mass_matrix(18,14) = t572; - local_mass_matrix(18,15) = t581; - local_mass_matrix(18,16) = t604; - local_mass_matrix(18,17) = t646; - local_mass_matrix(18,18) = t641-t642+t586+t659-t588-t660; - local_mass_matrix(18,19) = t664; - local_mass_matrix(18,20) = t655; - local_mass_matrix(18,21) = t667; - local_mass_matrix(18,22) = t670; - local_mass_matrix(18,23) = t673; - local_mass_matrix(18,24) = t676; - local_mass_matrix(19,0) = t92; - local_mass_matrix(19,1) = t150; - local_mass_matrix(19,2) = t208; - local_mass_matrix(19,3) = t232; - local_mass_matrix(19,4) = t295; - local_mass_matrix(19,5) = t312; - local_mass_matrix(19,6) = t290; - local_mass_matrix(19,7) = t424; - local_mass_matrix(19,8) = t464; - local_mass_matrix(19,9) = t494; - local_mass_matrix(19,10) = t518; - local_mass_matrix(19,11) = t527; - local_mass_matrix(19,12) = t515; - local_mass_matrix(19,13) = t562; - local_mass_matrix(19,14) = t573; - local_mass_matrix(19,15) = t582; - local_mass_matrix(19,16) = t609; - local_mass_matrix(19,17) = t604; - local_mass_matrix(19,18) = t664; - local_mass_matrix(19,19) = t584-t585+t586+t659-t588-t660; - local_mass_matrix(19,20) = t628; - local_mass_matrix(19,21) = t673; - local_mass_matrix(19,22) = t678; - local_mass_matrix(19,23) = t679; - local_mass_matrix(19,24) = t680; - local_mass_matrix(20,0) = t97; - local_mass_matrix(20,1) = t153; - local_mass_matrix(20,2) = t211; - local_mass_matrix(20,3) = t233; - local_mass_matrix(20,4) = t302; - local_mass_matrix(20,5) = t353; - local_mass_matrix(20,6) = t343; - local_mass_matrix(20,7) = t429; - local_mass_matrix(20,8) = t447; - local_mass_matrix(20,9) = t439; - local_mass_matrix(20,10) = t521; - local_mass_matrix(20,11) = t540; - local_mass_matrix(20,12) = t536; - local_mass_matrix(20,13) = t563; - local_mass_matrix(20,14) = t569; - local_mass_matrix(20,15) = t567; - local_mass_matrix(20,16) = t616; - local_mass_matrix(20,17) = t649; - local_mass_matrix(20,18) = t655; - local_mass_matrix(20,19) = t628; - local_mass_matrix(20,20) = t681-t682+t683+6656.0/297675.0*t12-t685 - -6656.0/297675.0*t17; - local_mass_matrix(20,21) = t658; - local_mass_matrix(20,22) = t694; - local_mass_matrix(20,23) = t640; - local_mass_matrix(20,24) = t701; - local_mass_matrix(21,0) = t102; - local_mass_matrix(21,1) = t156; - local_mass_matrix(21,2) = t214; - local_mass_matrix(21,3) = t234; - local_mass_matrix(21,4) = t307; - local_mass_matrix(21,5) = t356; - local_mass_matrix(21,6) = t381; - local_mass_matrix(21,7) = t434; - local_mass_matrix(21,8) = t469; - local_mass_matrix(21,9) = t461; - local_mass_matrix(21,10) = t524; - local_mass_matrix(21,11) = t541; - local_mass_matrix(21,12) = t551; - local_mass_matrix(21,13) = t566; - local_mass_matrix(21,14) = t576; - local_mass_matrix(21,15) = t572; - local_mass_matrix(21,16) = t623; - local_mass_matrix(21,17) = t652; - local_mass_matrix(21,18) = t667; - local_mass_matrix(21,19) = t673; - local_mass_matrix(21,20) = t658; - local_mass_matrix(21,21) = 73216.0/893025.0*t3-73216.0/893025.0*t7+t683+ - t704-t685-t705; - local_mass_matrix(21,22) = t676; - local_mass_matrix(21,23) = t694; - local_mass_matrix(21,24) = t711; - local_mass_matrix(22,0) = t103; - local_mass_matrix(22,1) = t159; - local_mass_matrix(22,2) = t217; - local_mass_matrix(22,3) = t235; - local_mass_matrix(22,4) = t312; - local_mass_matrix(22,5) = t361; - local_mass_matrix(22,6) = t346; - local_mass_matrix(22,7) = t439; - local_mass_matrix(22,8) = t472; - local_mass_matrix(22,9) = t497; - local_mass_matrix(22,10) = t527; - local_mass_matrix(22,11) = t544; - local_mass_matrix(22,12) = t537; - local_mass_matrix(22,13) = t567; - local_mass_matrix(22,14) = t577; - local_mass_matrix(22,15) = t583; - local_mass_matrix(22,16) = t628; - local_mass_matrix(22,17) = t655; - local_mass_matrix(22,18) = t670; - local_mass_matrix(22,19) = t678; - local_mass_matrix(22,20) = t694; - local_mass_matrix(22,21) = t676; - local_mass_matrix(22,22) = t681-t682+t683+73216.0/893025.0*t12-t685 - -73216.0/893025.0*t17; - local_mass_matrix(22,23) = t680; - local_mass_matrix(22,24) = t717; - local_mass_matrix(23,0) = t104; - local_mass_matrix(23,1) = t162; - local_mass_matrix(23,2) = t220; - local_mass_matrix(23,3) = t236; - local_mass_matrix(23,4) = t317; - local_mass_matrix(23,5) = t322; - local_mass_matrix(23,6) = t307; - local_mass_matrix(23,7) = t444; - local_mass_matrix(23,8) = t477; - local_mass_matrix(23,9) = t464; - local_mass_matrix(23,10) = t530; - local_mass_matrix(23,11) = t531; - local_mass_matrix(23,12) = t524; - local_mass_matrix(23,13) = t568; - local_mass_matrix(23,14) = t578; - local_mass_matrix(23,15) = t573; - local_mass_matrix(23,16) = t633; - local_mass_matrix(23,17) = t623; - local_mass_matrix(23,18) = t673; - local_mass_matrix(23,19) = t679; - local_mass_matrix(23,20) = t640; - local_mass_matrix(23,21) = t694; - local_mass_matrix(23,22) = t680; - local_mass_matrix(23,23) = 6656.0/297675.0*t3-6656.0/297675.0*t7+t683+ - t704-t685-t705; - local_mass_matrix(23,24) = t723; - local_mass_matrix(24,0) = 841.0/893025.0*t105; - local_mass_matrix(24,1) = 841.0/893025.0*t163; - local_mass_matrix(24,2) = 841.0/893025.0*t221; - local_mass_matrix(24,3) = 841.0/893025.0*t237; - local_mass_matrix(24,4) = t322; - local_mass_matrix(24,5) = t366; - local_mass_matrix(24,6) = t356; - local_mass_matrix(24,7) = t447; - local_mass_matrix(24,8) = t482; - local_mass_matrix(24,9) = t472; - local_mass_matrix(24,10) = t531; - local_mass_matrix(24,11) = t547; - local_mass_matrix(24,12) = t541; - local_mass_matrix(24,13) = t569; - local_mass_matrix(24,14) = t579; - local_mass_matrix(24,15) = t577; - local_mass_matrix(24,16) = t640; - local_mass_matrix(24,17) = t658; - local_mass_matrix(24,18) = t676; - local_mass_matrix(24,19) = t680; - local_mass_matrix(24,20) = t701; - local_mass_matrix(24,21) = t711; - local_mass_matrix(24,22) = t717; - local_mass_matrix(24,23) = t723; - local_mass_matrix(24,24) = 5408.0/99225.0*t3-5408.0/99225.0*t7+10816.0/ - 99225.0*t10+5408.0/99225.0*t12-10816.0/99225.0*t15-5408.0/99225.0*t17; -}; - - -template <> -void FEQ4<2>::get_unit_support_points (std::vector > &unit_points) const { - Assert (unit_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - dofs_per_cell)); - - unit_points[0] = Point<2>(0,0); - unit_points[1] = Point<2>(1,0); - unit_points[2] = Point<2>(1,1); - unit_points[3] = Point<2>(0,1); - unit_points[4] = Point<2>(1./4,0); - unit_points[5] = Point<2>(2./4,0); - unit_points[6] = Point<2>(3./4,0); - unit_points[7] = Point<2>(1,1./4); - unit_points[8] = Point<2>(1,2./4); - unit_points[9] = Point<2>(1,3./4); - unit_points[10] = Point<2>(1./4,1); - unit_points[11] = Point<2>(2./4,1); - unit_points[12] = Point<2>(3./4,1); - unit_points[13] = Point<2>(0,1./4); - unit_points[14] = Point<2>(0,2./4); - unit_points[15] = Point<2>(0,3./4); - unit_points[16] = Point<2>(1./4,1./4); - unit_points[17] = Point<2>(3./4,1./4); - unit_points[18] = Point<2>(3./4,3./4); - unit_points[19] = Point<2>(1./4,3./4); - unit_points[20] = Point<2>(1./2,1./4); - unit_points[21] = Point<2>(3./4,1./2); - unit_points[22] = Point<2>(1./2,3./4); - unit_points[23] = Point<2>(1./4,1./2); - unit_points[24] = Point<2>(1./2,1./2); -}; - - -template <> -void FEQ4<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell, - std::vector > &support_points) const -{ - Assert (support_points.size() == dofs_per_cell, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - const double x[4] = { cell->vertex(0)(0), - cell->vertex(1)(0), - cell->vertex(2)(0), - cell->vertex(3)(0) }; - const double y[4] = { cell->vertex(0)(1), - cell->vertex(1)(1), - cell->vertex(2)(1), - cell->vertex(3)(1) }; - - const double t1 = 3.0/4.0*x[0]; - const double t2 = x[1]/4.0; - const double t4 = 3.0/4.0*y[0]; - const double t5 = y[1]/4.0; - const double t9 = x[0]/4.0; - const double t10 = 3.0/4.0*x[1]; - const double t12 = y[0]/4.0; - const double t13 = 3.0/4.0*y[1]; - const double t15 = x[2]/4.0; - const double t17 = y[2]/4.0; - const double t21 = 3.0/4.0*x[2]; - const double t23 = 3.0/4.0*y[2]; - const double t25 = 3.0/4.0*x[3]; - const double t27 = 3.0/4.0*y[3]; - const double t31 = x[3]/4.0; - const double t33 = y[3]/4.0; - const double t42 = 3.0/16.0*x[1]; - const double t44 = 3.0/16.0*x[3]; - const double t47 = 3.0/16.0*y[1]; - const double t49 = 3.0/16.0*y[3]; - const double t51 = 3.0/16.0*x[0]; - const double t53 = 3.0/16.0*x[2]; - const double t56 = 3.0/16.0*y[0]; - const double t58 = 3.0/16.0*y[2]; - const double t73 = 3.0/8.0*x[0]; - const double t74 = 3.0/8.0*x[1]; - const double t75 = x[2]/8.0; - const double t76 = x[3]/8.0; - const double t78 = 3.0/8.0*y[0]; - const double t79 = 3.0/8.0*y[1]; - const double t80 = y[2]/8.0; - const double t81 = y[3]/8.0; - const double t83 = x[0]/8.0; - const double t84 = 3.0/8.0*x[2]; - const double t86 = y[0]/8.0; - const double t87 = 3.0/8.0*y[2]; - const double t89 = x[1]/8.0; - const double t90 = 3.0/8.0*x[3]; - const double t92 = y[1]/8.0; - const double t93 = 3.0/8.0*y[3]; - support_points[0](0) = x[0]; - support_points[0](1) = y[0]; - support_points[1](0) = x[1]; - support_points[1](1) = y[1]; - support_points[2](0) = x[2]; - support_points[2](1) = y[2]; - support_points[3](0) = x[3]; - support_points[3](1) = y[3]; - support_points[4](0) = t1+t2; - support_points[4](1) = t4+t5; - support_points[5](0) = x[0]/2.0+x[1]/2.0; - support_points[5](1) = y[0]/2.0+y[1]/2.0; - support_points[6](0) = t9+t10; - support_points[6](1) = t12+t13; - support_points[7](0) = t10+t15; - support_points[7](1) = t13+t17; - support_points[8](0) = x[1]/2.0+x[2]/2.0; - support_points[8](1) = y[1]/2.0+y[2]/2.0; - support_points[9](0) = t2+t21; - support_points[9](1) = t5+t23; - support_points[10](0) = t15+t25; - support_points[10](1) = t17+t27; - support_points[11](0) = x[2]/2.0+x[3]/2.0; - support_points[11](1) = y[2]/2.0+y[3]/2.0; - support_points[12](0) = t21+t31; - support_points[12](1) = t23+t33; - support_points[13](0) = t1+t31; - support_points[13](1) = t4+t33; - support_points[14](0) = x[0]/2.0+x[3]/2.0; - support_points[14](1) = y[0]/2.0+y[3]/2.0; - support_points[15](0) = t9+t25; - support_points[15](1) = t12+t27; - support_points[16](0) = 9.0/16.0*x[0]+t42+x[2]/16.0+t44; - support_points[16](1) = 9.0/16.0*y[0]+t47+y[2]/16.0+t49; - support_points[17](0) = t51+9.0/16.0*x[1]+t53+x[3]/16.0; - support_points[17](1) = t56+9.0/16.0*y[1]+t58+y[3]/16.0; - support_points[18](0) = x[0]/16.0+t42+9.0/16.0*x[2]+t44; - support_points[18](1) = y[0]/16.0+t47+9.0/16.0*y[2]+t49; - support_points[19](0) = t51+x[1]/16.0+t53+9.0/16.0*x[3]; - support_points[19](1) = t56+y[1]/16.0+t58+9.0/16.0*y[3]; - support_points[20](0) = t73+t74+t75+t76; - support_points[20](1) = t78+t79+t80+t81; - support_points[21](0) = t83+t74+t84+t76; - support_points[21](1) = t86+t79+t87+t81; - support_points[22](0) = t83+t89+t84+t90; - support_points[22](1) = t86+t92+t87+t93; - support_points[23](0) = t73+t89+t75+t90; - support_points[23](1) = t78+t92+t80+t93; - support_points[24](0) = x[0]/4.0+x[1]/4.0+x[2]/4.0+x[3]/4.0; - support_points[24](1) = y[0]/4.0+y[1]/4.0+y[2]/4.0+y[3]/4.0; -}; - - -template <> -void FEQ4<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face, - std::vector > &support_points) const { - Assert (support_points.size() == dofs_per_face, - FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), - dofs_per_face)); - - for (unsigned int vertex=0; vertex<2; ++vertex) - support_points[vertex] = face->vertex(vertex); - support_points[2] = (3*support_points[0] + support_points[1]) / 4; - support_points[3] = (support_points[0] + support_points[1]) / 2; - support_points[4] = (support_points[0] + 3*support_points[1]) / 4; -}; - - -#endif - - -#if deal_II_dimension == 3 - -// provide dummy implementations of the functions above. the reason is -// that true implementations would simply be too large (several 10.000 -// lines of code) for today's compilers and computers. - -template <> -FEQ4<3>::FEQ4 () : - FEQ1Mapping<3> (1, 3, 9, 27, 1, - std::vector (1, false)) -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -FEQ4<3>::FEQ4 (const int) : - FEQ1Mapping<3> (0, 0, 0, 64, 1, - std::vector (1, true)) -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ4<3>::initialize_matrices () -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -double -FEQ4<3>::shape_value (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return 0; -}; - - -template <> -Tensor<1,3> -FEQ4<3>::shape_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<1,3>(); -}; - - -template <> -Tensor<2,3> -FEQ4<3>::shape_grad_grad (const unsigned int, - const Point<3> &) const -{ - Assert (false, ExcNotImplemented()); - return Tensor<2,3>(); -}; - - -template <> -void -FEQ4<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, - FullMatrix &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ4<3>::get_unit_support_points (std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ4<3>::get_support_points (const DoFHandler<3>::cell_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -template <> -void FEQ4<3>::get_face_support_points (const DoFHandler<3>::face_iterator &, - std::vector > &) const -{ - Assert (false, ExcNotImplemented()); -}; - - -#endif // deal_II_dimension == 3 - - -// explicit instantiations - -template class FEQ4; - diff --git a/deal.II/deal.II/source/fe/fe_q.cc b/deal.II/deal.II/source/fe/fe_q.cc index e69de29bb2..3a825f65b0 100644 --- a/deal.II/deal.II/source/fe/fe_q.cc +++ b/deal.II/deal.II/source/fe/fe_q.cc @@ -0,0 +1,1121 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static std::vector dummy(1,false); + +// Embedding matrices (produced by tests/fe/embedding with postprocessing + +#if (deal_II_dimension == 1) +#include "mat_q.1" +#endif + +#if (deal_II_dimension == 2) +#include "mat_q.2" +#endif + +#if (deal_II_dimension == 3) +#include "mat_q.3" +#endif + + +template +FE_Q::FE_Q (unsigned int degree) + : + FiniteElement (FiniteElementData(get_dpo_vector(degree),1), dummy), + degree(degree), + renumber(dofs_per_cell, 0), + face_renumber(dofs_per_face, 0), + polynomials(degree+1), + poly(0) +{ + std::vector > > v(degree+1); + for (unsigned int i=0;i<=degree;++i) + { + LagrangeEquidistant p(degree, i); + polynomials[i] = p; + v[i] = &(polynomials[i]); + } + poly = new TensorProductPolynomials (v); + build_renumbering (*this, degree, renumber); + +#if (deal_II_dimension > 1) + build_face_renumbering (FiniteElementData(FE_Q::get_dpo_vector(degree),1), + degree, + face_renumber); +#endif + + Assert (degree <= 10, ExcNotImplemented()); + + if ((dim>1) && (constraint_matrices[degree-1] != 0)) + interface_constraints.fill (constraint_matrices[degree-1]); + else + interface_constraints.reinit(0,0); + + if (embedding0[degree-1] != 0) + { + prolongation[0].fill (embedding0[degree-1]); + prolongation[1].fill (embedding1[degree-1]); + if (dim>1) + { + prolongation[2].fill (embedding2[degree-1]); + prolongation[3].fill (embedding3[degree-1]); + } + if (dim>2) + { + prolongation[4].fill (embedding4[degree-1]); + prolongation[5].fill (embedding5[degree-1]); + prolongation[6].fill (embedding6[degree-1]); + prolongation[7].fill (embedding7[degree-1]); + } + } + else + for (unsigned int i=0; i::children_per_cell;++i) + prolongation[i].reinit(0,0); + + switch (dim) + { + case 1: + switch (degree) + { + case 1: + restriction[0](0,0) = 1; + restriction[1](1,1) = 1; + break; + case 2: + restriction[0](0,0) = 1; + restriction[0](2,1) = 1; + restriction[1](1,1) = 1; + restriction[1](1,1) = 1; + break; + case 3: + restriction[0](0,0) = 1; + restriction[0](2,3) = 1; + restriction[1](1,1) = 1; + restriction[1](3,2) = 1; + break; + case 4: + restriction[0](0,0) = 1; + restriction[0](2,3) = 1; + restriction[0](3,1) = 1; + restriction[1](1,1) = 1; + restriction[1](3,0) = 1; + restriction[1](4,3) = 1; + break; + default: + for (unsigned int i=0; i::children_per_cell;++i) + restriction[i].reinit(0,0); + } + break; + case 2: + switch (degree) + { + case 1: + restriction[0](0,0) = 1; + restriction[1](1,1) = 1; + restriction[2](2,2) = 1; + restriction[3](3,3) = 1; + break; + case 2: + restriction[0](0,0) = 1; + restriction[0](4,1) = 1; + restriction[0](7,3) = 1; + restriction[0](8,2) = 1; + restriction[1](1,1) = 1; + restriction[1](4,0) = 1; + restriction[1](5,2) = 1; + restriction[1](8,3) = 1; + restriction[2](2,2) = 1; + restriction[2](5,1) = 1; + restriction[2](6,3) = 1; + restriction[2](8,0) = 1; + restriction[3](3,3) = 1; + restriction[3](6,2) = 1; + restriction[3](7,0) = 1; + restriction[3](8,1) = 1; + break; + case 3: + restriction[0](0,0) = 1; + restriction[0](4,5) = 1; + restriction[0](10,11) = 1; + restriction[0](12,15) = 1; + restriction[1](1,1) = 1; + restriction[1](5,4) = 1; + restriction[1](6,7) = 1; + restriction[1](13,14) = 1; + restriction[2](2,2) = 1; + restriction[2](7,6) = 1; + restriction[2](9,8) = 1; + restriction[2](15,12) = 1; + restriction[3](3,3) = 1; + restriction[3](8,9) = 1; + restriction[3](11,10) = 1; + restriction[3](14,13) = 1; + break; + case 4: + restriction[0](0,0) = 1; + restriction[0](4,5) = 1; + restriction[0](5,1) = 1; + restriction[0](13,14) = 1; + restriction[0](14,3) = 1; + restriction[0](16,20) = 1; + restriction[0](17,8) = 1; + restriction[0](19,11) = 1; + restriction[0](20,2) = 1; + restriction[1](1,1) = 1; + restriction[1](5,0) = 1; + restriction[1](6,5) = 1; + restriction[1](7,8) = 1; + restriction[1](8,2) = 1; + restriction[1](17,14) = 1; + restriction[1](18,20) = 1; + restriction[1](20,3) = 1; + restriction[1](21,11) = 1; + restriction[2](2,2) = 1; + restriction[2](8,1) = 1; + restriction[2](9,8) = 1; + restriction[2](11,3) = 1; + restriction[2](12,11) = 1; + restriction[2](20,0) = 1; + restriction[2](21,5) = 1; + restriction[2](23,14) = 1; + restriction[2](24,20) = 1; + restriction[3](3,3) = 1; + restriction[3](10,11) = 1; + restriction[3](11,2) = 1; + restriction[3](14,0) = 1; + restriction[3](15,14) = 1; + restriction[3](19,5) = 1; + restriction[3](20,1) = 1; + restriction[3](22,20) = 1; + restriction[3](23,8) = 1; + break; + default: + for (unsigned int i=0; i::children_per_cell;++i) + restriction[i].reinit(0,0); + } + break; + case 3: + switch (degree) + { + case 1: + restriction[0](0,0) = 1; + restriction[1](1,1) = 1; + restriction[2](2,2) = 1; + restriction[3](3,3) = 1; + restriction[4](4,4) = 1; + restriction[5](5,5) = 1; + restriction[6](6,6) = 1; + restriction[7](7,7) = 1; + break; + case 2: + restriction[0](0,0) = 1; + restriction[0](8,1) = 1; + restriction[0](11,3) = 1; + restriction[0](16,4) = 1; + restriction[0](20,2) = 1; + restriction[0](22,5) = 1; + restriction[0](25,7) = 1; + restriction[0](26,6) = 1; + restriction[1](1,1) = 1; + restriction[1](8,0) = 1; + restriction[1](9,2) = 1; + restriction[1](17,5) = 1; + restriction[1](20,3) = 1; + restriction[1](22,4) = 1; + restriction[1](23,6) = 1; + restriction[1](26,7) = 1; + restriction[2](2,2) = 1; + restriction[2](9,1) = 1; + restriction[2](10,3) = 1; + restriction[2](18,6) = 1; + restriction[2](20,0) = 1; + restriction[2](23,5) = 1; + restriction[2](24,7) = 1; + restriction[2](26,4) = 1; + restriction[3](3,3) = 1; + restriction[3](10,2) = 1; + restriction[3](11,0) = 1; + restriction[3](19,7) = 1; + restriction[3](20,1) = 1; + restriction[3](24,6) = 1; + restriction[3](25,4) = 1; + restriction[3](26,5) = 1; + restriction[4](4,4) = 1; + restriction[4](12,5) = 1; + restriction[4](15,7) = 1; + restriction[4](16,0) = 1; + restriction[4](21,6) = 1; + restriction[4](22,1) = 1; + restriction[4](25,3) = 1; + restriction[4](26,2) = 1; + restriction[5](5,5) = 1; + restriction[5](12,4) = 1; + restriction[5](13,6) = 1; + restriction[5](17,1) = 1; + restriction[5](21,7) = 1; + restriction[5](22,0) = 1; + restriction[5](23,2) = 1; + restriction[5](26,3) = 1; + restriction[6](6,6) = 1; + restriction[6](13,5) = 1; + restriction[6](14,7) = 1; + restriction[6](18,2) = 1; + restriction[6](21,4) = 1; + restriction[6](23,1) = 1; + restriction[6](24,3) = 1; + restriction[6](26,0) = 1; + restriction[7](7,7) = 1; + restriction[7](14,6) = 1; + restriction[7](15,4) = 1; + restriction[7](19,3) = 1; + restriction[7](21,5) = 1; + restriction[7](24,2) = 1; + restriction[7](25,0) = 1; + restriction[7](26,1) = 1; + break; + case 3: + restriction[0](0,0) = 1; + restriction[0](8,9) = 1; + restriction[0](14,15) = 1; + restriction[0](24,25) = 1; + restriction[0](32,35) = 1; + restriction[0](40,43) = 1; + restriction[0](52,55) = 1; + restriction[0](56,63) = 1; + restriction[1](1,1) = 1; + restriction[1](9,8) = 1; + restriction[1](10,11) = 1; + restriction[1](26,27) = 1; + restriction[1](33,34) = 1; + restriction[1](41,42) = 1; + restriction[1](44,47) = 1; + restriction[1](57,62) = 1; + restriction[2](2,2) = 1; + restriction[2](11,10) = 1; + restriction[2](13,12) = 1; + restriction[2](28,29) = 1; + restriction[2](35,32) = 1; + restriction[2](46,45) = 1; + restriction[2](49,50) = 1; + restriction[2](61,58) = 1; + restriction[3](3,3) = 1; + restriction[3](12,13) = 1; + restriction[3](15,14) = 1; + restriction[3](30,31) = 1; + restriction[3](34,33) = 1; + restriction[3](48,51) = 1; + restriction[3](54,53) = 1; + restriction[3](60,59) = 1; + restriction[4](4,4) = 1; + restriction[4](16,17) = 1; + restriction[4](22,23) = 1; + restriction[4](25,24) = 1; + restriction[4](36,39) = 1; + restriction[4](42,41) = 1; + restriction[4](53,54) = 1; + restriction[4](58,61) = 1; + restriction[5](5,5) = 1; + restriction[5](17,16) = 1; + restriction[5](18,19) = 1; + restriction[5](27,26) = 1; + restriction[5](37,38) = 1; + restriction[5](43,40) = 1; + restriction[5](45,46) = 1; + restriction[5](59,60) = 1; + restriction[6](6,6) = 1; + restriction[6](19,18) = 1; + restriction[6](21,20) = 1; + restriction[6](29,28) = 1; + restriction[6](39,36) = 1; + restriction[6](47,44) = 1; + restriction[6](51,48) = 1; + restriction[6](63,56) = 1; + restriction[7](7,7) = 1; + restriction[7](20,21) = 1; + restriction[7](23,22) = 1; + restriction[7](31,30) = 1; + restriction[7](38,37) = 1; + restriction[7](50,49) = 1; + restriction[7](55,52) = 1; + restriction[7](62,57) = 1; + break; + case 4: + restriction[0](0,0) = 1; + restriction[0](8,9) = 1; + restriction[0](9,1) = 1; + restriction[0](17,18) = 1; + restriction[0](18,3) = 1; + restriction[0](32,33) = 1; + restriction[0](33,4) = 1; + restriction[0](44,48) = 1; + restriction[0](45,12) = 1; + restriction[0](47,15) = 1; + restriction[0](48,2) = 1; + restriction[0](62,66) = 1; + restriction[0](63,36) = 1; + restriction[0](65,21) = 1; + restriction[0](66,5) = 1; + restriction[0](89,93) = 1; + restriction[0](90,30) = 1; + restriction[0](92,42) = 1; + restriction[0](93,7) = 1; + restriction[0](98,111) = 1; + restriction[0](99,75) = 1; + restriction[0](101,57) = 1; + restriction[0](102,24) = 1; + restriction[0](107,84) = 1; + restriction[0](108,39) = 1; + restriction[0](110,27) = 1; + restriction[0](111,6) = 1; + restriction[1](1,1) = 1; + restriction[1](9,0) = 1; + restriction[1](10,9) = 1; + restriction[1](11,12) = 1; + restriction[1](12,2) = 1; + restriction[1](35,36) = 1; + restriction[1](36,5) = 1; + restriction[1](45,18) = 1; + restriction[1](46,48) = 1; + restriction[1](48,3) = 1; + restriction[1](49,15) = 1; + restriction[1](63,33) = 1; + restriction[1](64,66) = 1; + restriction[1](66,4) = 1; + restriction[1](67,21) = 1; + restriction[1](71,75) = 1; + restriction[1](72,24) = 1; + restriction[1](74,39) = 1; + restriction[1](75,6) = 1; + restriction[1](99,93) = 1; + restriction[1](100,111) = 1; + restriction[1](102,30) = 1; + restriction[1](103,57) = 1; + restriction[1](108,42) = 1; + restriction[1](109,84) = 1; + restriction[1](111,7) = 1; + restriction[1](112,27) = 1; + restriction[2](2,2) = 1; + restriction[2](12,1) = 1; + restriction[2](13,12) = 1; + restriction[2](15,3) = 1; + restriction[2](16,15) = 1; + restriction[2](38,39) = 1; + restriction[2](39,6) = 1; + restriction[2](48,0) = 1; + restriction[2](49,9) = 1; + restriction[2](51,18) = 1; + restriction[2](52,48) = 1; + restriction[2](74,36) = 1; + restriction[2](75,5) = 1; + restriction[2](77,75) = 1; + restriction[2](78,24) = 1; + restriction[2](81,42) = 1; + restriction[2](82,84) = 1; + restriction[2](84,7) = 1; + restriction[2](85,27) = 1; + restriction[2](108,33) = 1; + restriction[2](109,66) = 1; + restriction[2](111,4) = 1; + restriction[2](112,21) = 1; + restriction[2](117,93) = 1; + restriction[2](118,111) = 1; + restriction[2](120,30) = 1; + restriction[2](121,57) = 1; + restriction[3](3,3) = 1; + restriction[3](14,15) = 1; + restriction[3](15,2) = 1; + restriction[3](18,0) = 1; + restriction[3](19,18) = 1; + restriction[3](41,42) = 1; + restriction[3](42,7) = 1; + restriction[3](47,9) = 1; + restriction[3](48,1) = 1; + restriction[3](50,48) = 1; + restriction[3](51,12) = 1; + restriction[3](80,84) = 1; + restriction[3](81,39) = 1; + restriction[3](83,27) = 1; + restriction[3](84,6) = 1; + restriction[3](92,33) = 1; + restriction[3](93,4) = 1; + restriction[3](95,93) = 1; + restriction[3](96,30) = 1; + restriction[3](107,66) = 1; + restriction[3](108,36) = 1; + restriction[3](110,21) = 1; + restriction[3](111,5) = 1; + restriction[3](116,111) = 1; + restriction[3](117,75) = 1; + restriction[3](119,57) = 1; + restriction[3](120,24) = 1; + restriction[4](4,4) = 1; + restriction[4](20,21) = 1; + restriction[4](21,5) = 1; + restriction[4](29,30) = 1; + restriction[4](30,7) = 1; + restriction[4](33,0) = 1; + restriction[4](34,33) = 1; + restriction[4](53,57) = 1; + restriction[4](54,24) = 1; + restriction[4](56,27) = 1; + restriction[4](57,6) = 1; + restriction[4](65,9) = 1; + restriction[4](66,1) = 1; + restriction[4](68,66) = 1; + restriction[4](69,36) = 1; + restriction[4](90,18) = 1; + restriction[4](91,93) = 1; + restriction[4](93,3) = 1; + restriction[4](94,42) = 1; + restriction[4](101,48) = 1; + restriction[4](102,12) = 1; + restriction[4](104,111) = 1; + restriction[4](105,75) = 1; + restriction[4](110,15) = 1; + restriction[4](111,2) = 1; + restriction[4](113,84) = 1; + restriction[4](114,39) = 1; + restriction[5](5,5) = 1; + restriction[5](21,4) = 1; + restriction[5](22,21) = 1; + restriction[5](23,24) = 1; + restriction[5](24,6) = 1; + restriction[5](36,1) = 1; + restriction[5](37,36) = 1; + restriction[5](54,30) = 1; + restriction[5](55,57) = 1; + restriction[5](57,7) = 1; + restriction[5](58,27) = 1; + restriction[5](66,0) = 1; + restriction[5](67,9) = 1; + restriction[5](69,33) = 1; + restriction[5](70,66) = 1; + restriction[5](72,12) = 1; + restriction[5](73,75) = 1; + restriction[5](75,2) = 1; + restriction[5](76,39) = 1; + restriction[5](102,18) = 1; + restriction[5](103,48) = 1; + restriction[5](105,93) = 1; + restriction[5](106,111) = 1; + restriction[5](111,3) = 1; + restriction[5](112,15) = 1; + restriction[5](114,42) = 1; + restriction[5](115,84) = 1; + restriction[6](6,6) = 1; + restriction[6](24,5) = 1; + restriction[6](25,24) = 1; + restriction[6](27,7) = 1; + restriction[6](28,27) = 1; + restriction[6](39,2) = 1; + restriction[6](40,39) = 1; + restriction[6](57,4) = 1; + restriction[6](58,21) = 1; + restriction[6](60,30) = 1; + restriction[6](61,57) = 1; + restriction[6](75,1) = 1; + restriction[6](76,36) = 1; + restriction[6](78,12) = 1; + restriction[6](79,75) = 1; + restriction[6](84,3) = 1; + restriction[6](85,15) = 1; + restriction[6](87,42) = 1; + restriction[6](88,84) = 1; + restriction[6](111,0) = 1; + restriction[6](112,9) = 1; + restriction[6](114,33) = 1; + restriction[6](115,66) = 1; + restriction[6](120,18) = 1; + restriction[6](121,48) = 1; + restriction[6](123,93) = 1; + restriction[6](124,111) = 1; + restriction[7](7,7) = 1; + restriction[7](26,27) = 1; + restriction[7](27,6) = 1; + restriction[7](30,4) = 1; + restriction[7](31,30) = 1; + restriction[7](42,3) = 1; + restriction[7](43,42) = 1; + restriction[7](56,21) = 1; + restriction[7](57,5) = 1; + restriction[7](59,57) = 1; + restriction[7](60,24) = 1; + restriction[7](83,15) = 1; + restriction[7](84,2) = 1; + restriction[7](86,84) = 1; + restriction[7](87,39) = 1; + restriction[7](93,0) = 1; + restriction[7](94,33) = 1; + restriction[7](96,18) = 1; + restriction[7](97,93) = 1; + restriction[7](110,9) = 1; + restriction[7](111,1) = 1; + restriction[7](113,66) = 1; + restriction[7](114,36) = 1; + restriction[7](119,48) = 1; + restriction[7](120,12) = 1; + restriction[7](122,111) = 1; + restriction[7](123,75) = 1; + break; + default: + for (unsigned int i=0; i::children_per_cell;++i) + restriction[i].reinit(0,0); + } + break; + default: + Assert (false,ExcNotImplemented()); + } +} + + +template +FE_Q::~FE_Q () +{ + delete poly; +} + + +template +FiniteElement * +FE_Q::clone() const +{ + return new FE_Q(degree); +} + + +template +void +FE_Q::get_unit_support_points (std::vector > &points) const +{ + compute_support_points (points, degree, renumber); +} + + +template +void +FE_Q::get_unit_face_support_points (std::vector > &points) const +{ + FE_Q::compute_support_points (points, degree, face_renumber); +} + + +#if deal_II_dimension == 1 + +template <> +void +FE_Q<1>::get_unit_face_support_points (std::vector > &points) const +{ + points.resize(0); +} + +#endif +//---------------------------------------------------------------------- +// Auxilliary functions +//---------------------------------------------------------------------- + + +template +void +FE_Q::compute_support_points (std::vector >& support_points, + unsigned int degree, + const std::vector& renumber) +{ + // number of points: (degree+1)^dim + unsigned int n= degree+1; + for (unsigned int i=1;i p; + + unsigned int k=0; + for (unsigned int iz=0;iz <= ((dim>2) ? degree : 0) ; ++iz) + for (unsigned int iy=0;iy <= ((dim>1) ? degree : 0) ; ++iy) + for (unsigned int ix=0;ix<=degree;++ix) + { + p(0) = ix * step; + if (dim>1) + p(1) = iy * step; + if (dim>2) + p(2) = iz * step; + + support_points[renumber[k++]] = p; + } +} + + +template +std::vector +FE_Q::get_dpo_vector(unsigned int deg) +{ + std::vector dpo(dim+1, 1); + for (unsigned int i=1; i +void +FE_Q::build_renumbering (const FiniteElementData &fe_data, + unsigned int degree, + std::vector &renumber) +{ + const unsigned int n = degree+1; + + if (degree > 0) + for (unsigned int i=0;i::vertices_per_cell;++i) + { + unsigned int index = 0; + // Find indices of vertices. + // Unfortunately, somebody + // switched the upper corner + // points of a quad. The same + // person decided to find a very + // creative numbering of the + // vertices of a hexahedron. + // Therefore, this looks quite + // sophisticated. + switch (dim) + { + case 1: + if (i==1) + index += degree; + break; + case 2: + switch (i) + { + case 1: + index += degree; + break; + case 3: + index += n*degree; + break; + case 2: + index += n*degree+degree; + break; + } + break; + case 3: + switch (i) + { + case 1: + index += degree; + break; + case 4: + index += n*degree; + break; + case 5: + index += n*degree+degree; + break; + case 3: + index += n*n*degree; + break; + case 2: + index += n*n*degree + degree; + break; + case 7: + index += n*n*degree + n*degree; + break; + case 6: + index += n*n*degree + n*degree+degree; + break; + } + break; + + default: + Assert(false, ExcNotImplemented()); + } + + renumber[index] = i; + } + else + renumber[0] = 0; + + // Lines and higher + if (degree > 1) + { + for (int i=0;i< (int) GeometryInfo::lines_per_cell;++i) + { + unsigned int index = fe_data.first_line_index + i*fe_data.dofs_per_line; + unsigned int incr = 0; + unsigned int tensorstart = 0; + // This again looks quite + // strange because of the odd + // numbering scheme. + switch (i+100*dim) + { + // lines in x-direction + case 100: + case 200: case 202: + case 300: case 302: case 304: case 306: + incr = 1; + break; + // lines in y-direction + case 201: case 203: + case 308: case 309: case 310: case 311: + incr = n; + break; + // lines in z-direction + case 301: case 303: case 305: case 307: + incr = n*n; + break; + default: + Assert(false, ExcNotImplemented()); + } + switch (i+100*dim) + { + // x=y=z=0 + case 100: + case 200: case 203: + case 300: case 303: case 308: + tensorstart = 0; + break; + // x=1 y=z=0 + case 201: + case 301: case 309: + tensorstart = degree; + break; + // y=1 x=z=0 + case 202: + case 304: case 307: + tensorstart = n*degree; + break; + // x=z=1 y=0 + case 310: + tensorstart = n*n*degree+degree; + break; + // z=1 x=y=0 + case 302: case 311: + tensorstart = n*n*degree; + break; + // x=y=1 z=0 + case 305: + tensorstart = n*degree+degree; + break; + // y=z=1 x=0 + case 306: + tensorstart = n*n*n-n; + break; + default: + Assert(false, ExcNotImplemented()); + } + + for (unsigned int jx = 1; jx::quads_per_cell;++i) + { + unsigned int index = fe_data.first_quad_index+i*fe_data.dofs_per_quad; + unsigned int tensorstart = 0; + unsigned int incx = 0; + unsigned int incy = 0; + switch (i) + { + case 0: + tensorstart = 0; incx = 1; + if (dim==2) + incy = n; + else + incy = n*n; + break; + case 1: + tensorstart = n*degree; incx = 1; incy = n*n; + break; + case 2: + tensorstart = 0; incx = 1; incy = n; + break; + case 3: + tensorstart = degree; incx = n; incy = n*n; + break; + case 4: + tensorstart = n*n*degree; incx = 1; incy = n; + break; + case 5: + tensorstart = 0; incx = n; incy = n*n; + break; + default: + Assert(false, ExcNotImplemented()); + } + + for (unsigned int jy = 1; jy::hexes_per_cell;++i) + { + unsigned int index = fe_data.first_hex_index; + + for (unsigned int jz = 1; jz +void +FE_Q::build_face_renumbering (const FiniteElementData &fe_data, + unsigned int degree, + std::vector& numbering) +{ + FE_Q::build_renumbering (fe_data, degree, numbering); +} + +#if (deal_II_dimension == 1) + +template <> +void +FE_Q<1>::build_face_renumbering (const FiniteElementData<0> &, + unsigned int, + std::vector&) +{} +#endif + + +template +UpdateFlags +FE_Q::update_once (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + + if (flags & update_values) + out |= update_values; + + return out; +} + + +template +UpdateFlags +FE_Q::update_each (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + + if (flags & update_gradients) + out |= update_gradients | update_covariant_transformation; + if (flags & update_second_derivatives) + out |= update_second_derivatives | update_covariant_transformation; + + return out; +} + + +//---------------------------------------------------------------------- +// Data field initialization +//---------------------------------------------------------------------- +template +Mapping::InternalDataBase* +FE_Q::get_data (const UpdateFlags update_flags, + const Mapping& mapping, + const Quadrature &quadrature) const +{ + InternalData* data = new InternalData; + std::vector values(0); + std::vector > grads(0); + std::vector > grad_grads(0); + + data->update_once = update_once(update_flags); + data->update_each = update_each(update_flags); + data->update_flags = data->update_once | data->update_each; + + const UpdateFlags flags(data->update_flags); + + if (flags & update_values) + { + values.resize (dofs_per_cell); + data->shape_values.resize(dofs_per_cell, + std::vector(quadrature.n_quadrature_points)); + } + + if (flags & update_gradients) + { + grads.resize (dofs_per_cell); + data->shape_gradients.resize(dofs_per_cell, + std::vector >(quadrature.n_quadrature_points)); + } + + if (flags & update_second_derivatives) + data->initialize (this, mapping, quadrature); + + if (flags & (update_values | update_gradients)) + for (unsigned int i=0;icompute(quadrature.point(i), values, grads, grad_grads); + for (unsigned int k=0;kshape_values[renumber[k]][i] = values[k]; + if (flags & update_gradients) + data->shape_gradients[renumber[k]][i] = grads[k]; + } + } + return data; +} + + + +//---------------------------------------------------------------------- +// Fill data of FEValues +//---------------------------------------------------------------------- +template +void +FE_Q::fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fedata, + FEValuesData &data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + + const UpdateFlags flags(fe_data.current_update_flags()); + + for (unsigned int k=0;k +void +FE_Q::fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face, + const Quadrature& quadrature, + Mapping::InternalDataBase& mapping_data, + Mapping::InternalDataBase& fedata, + FEValuesData& data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + unsigned int offset = face * quadrature.n_quadrature_points; + + const UpdateFlags flags(fe_data.update_once | fe_data.update_each); + + for (unsigned int k=0;k +void +FE_Q::fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face, + const unsigned int subface, + const Quadrature& quadrature, + Mapping::InternalDataBase& mapping_data, + Mapping::InternalDataBase& fedata, + FEValuesData& data) const +{ + InternalData &fe_data = dynamic_cast (fedata); + unsigned int offset = (face * GeometryInfo::subfaces_per_face + + subface) * quadrature.n_quadrature_points; + + const UpdateFlags flags(fe_data.update_once | fe_data.update_each); + + for (unsigned int k=0;k +unsigned int +FE_Q::memory_consumption () const +{ + Assert (false, ExcNotImplemented ()); + return 0; +} + + +template FE_Q; diff --git a/deal.II/deal.II/source/fe/fe_system.cc b/deal.II/deal.II/source/fe/fe_system.cc index a04b42917e..b5ba860806 100644 --- a/deal.II/deal.II/source/fe/fe_system.cc +++ b/deal.II/deal.II/source/fe/fe_system.cc @@ -13,10 +13,14 @@ #include -#include +#include #include #include #include +#include +#include +#include + // if necessary try to work around a bug in the IBM xlC compiler #ifdef XLC_WORK_AROUND_STD_BUG @@ -36,6 +40,431 @@ FESystem::~FESystem () }; +template +FiniteElement* +FESystem::clone() const +{ + FiniteElement *fe=0; + switch (n_base_elements()) + { + case 1: + fe=new FESystem(base_element(0), + element_multiplicity(0)); + case 2: + fe=new FESystem(base_element(0), + element_multiplicity(0), + base_element(1), + element_multiplicity(1)); + case 3: + fe=new FESystem(base_element(0), + element_multiplicity(0), + base_element(1), + element_multiplicity(1), + base_element(2), + element_multiplicity(2)); + default: + Assert(false, ExcNotImplemented()); + } + return fe; +} + + +template +void FESystem::get_unit_support_points ( + typename std::vector > &unit_support_points) const +{ + unit_support_points.resize(dofs_per_cell); + + typename std::vector > base_unit_support_points (base_element(0).dofs_per_cell); + unsigned int comp = 0; + for (unsigned int base_el=0 ; base_el +void FESystem::get_unit_face_support_points ( + typename std::vector > &unit_support_points) const +{ + unit_support_points.resize(dofs_per_face); + + typename std::vector > base_unit_support_points (base_element(0).dofs_per_cell); + unsigned int comp = 0; + for (unsigned int base_el=0 ; base_el +UpdateFlags +FESystem::update_once (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + for (unsigned int base_no=0; base_no +UpdateFlags +FESystem::update_each (UpdateFlags flags) const +{ + UpdateFlags out = update_default; + for (unsigned int base_no=0; base_no +Mapping::InternalDataBase* +FESystem::get_data (UpdateFlags flags, + const Mapping& mapping, + const Quadrature& quadrature) const +{ + InternalData* data = new InternalData(n_base_elements()); + + data->second_flag = flags & update_second_derivatives; + + // Make sure that this object + // computes 2nd derivatives itself + if (data->second_flag) + { + flags = UpdateFlags (flags ^ update_second_derivatives); + data->initialize (this, mapping, quadrature); + } + + + for (unsigned int base_no=0; base_no::InternalDataBase *base_fe_data_base = + base_element(base_no).get_data(flags, mapping, quadrature); + FiniteElementBase::InternalDataBase *base_fe_data = + dynamic_cast::InternalDataBase *> + (base_fe_data_base); + + data->set_fe_data(base_no, base_fe_data); + data->update_once|=base_fe_data->update_once; + data->update_each|=base_fe_data->update_each; + + // The FEValuesData @p{data} + // given to the + // @p{fill_fe_values} function + // includes the FEValuesDatas + // of the FESystem. Here the + // FEValuesDatas @p{*base_data} + // needs to be created that + // later will be given to the + // @p{fill_fe_values} functions + // of the base + // elements. @p{base_data->initialize} + // cannot be called earlier as + // in the @p{fill_fe_values} + // function called for the + // first cell. This is because + // the initialize function + // needs the update flags as + // argument. + // + // The pointers @p{base_data} + // are stored into the + // FESystem::InternalData + // @p{data}, similar to the + // storing of the + // @p{base_fe_data}s. + FEValuesData *base_data=new FEValuesData(); + data->set_fe_values_data(base_no, base_data); + } + data->update_flags=data->update_once | data->update_each; + Assert(data->update_once==update_once(flags), ExcInternalError()); + Assert(data->update_each==update_each(flags), ExcInternalError()); + return data; +} + + + +template +void +FESystem::fill_fe_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fe_data, + FEValuesData &data) const +{ + const unsigned int minus_1=static_cast (-1); + compute_fill(mapping, cell, minus_1, minus_1, + quadrature, mapping_data, fe_data, data); +} + + +template +void +FESystem::fill_fe_face_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fe_data, + FEValuesData &data) const +{ + const unsigned int minus_1=static_cast (-1); + compute_fill(mapping, cell, face_no, minus_1, + quadrature, mapping_data, fe_data, data); + +} + + + +template +void +FESystem::fill_fe_subface_values (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fe_data, + FEValuesData &data) const +{ + compute_fill(mapping, cell, face_no, sub_no, + quadrature, mapping_data, fe_data, data); +} + + + +template +template +void +FESystem::compute_fill (const Mapping &mapping, + const DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &quadrature, + Mapping::InternalDataBase &mapping_data, + Mapping::InternalDataBase &fedata, + FEValuesData &data) const +{ + InternalData& fe_data = dynamic_cast (fedata); + + // Either dim_1==dim (fill_fe_values) + // or dim_1==dim-1 (fill_fe_(sub)face_values) + Assert(dim_1==dim || dim_1==dim-1, ExcInternalError()); + const UpdateFlags flags(dim_1==dim ? + fe_data.current_update_flags() : + fe_data.update_flags); + + + if (flags & (update_values | update_gradients)) + { + if (fe_data.first_cell) + { + // Initialize the FEValuesDatas + // for the base elements. + // Originally this is the task + // of FEValues::FEValues() but + // the latter initializes + // the FEValuesDatas only of the + // FESystem but not the + // FEValuesDatas needed by the + // base elements. + for (unsigned int base_no=0; base_no::InternalDataBase &base_fe_data= + fe_data.get_fe_data(base_no); + + // compute update flags ... + const UpdateFlags base_update_flags(mapping_data.update_flags + | base_fe_data.update_flags); + + // Initialize the FEValuesDatas + // for the base elements. + FEValuesData &base_data=fe_data.get_fe_values_data(base_no); + const FiniteElement &base_fe=base_element(base_no); + base_data.initialize(quadrature.n_quadrature_points, + base_fe.dofs_per_cell, + base_update_flags); + } + } + + // fill_fe_face_values needs + // argument Quadrature + // for both cases + // dim_1==dim-1 and + // dim_1=dim. Hence the + // following workaround + const Quadrature *cell_quadrature = 0; + const Quadrature *face_quadrature = 0; + + // static cast to the + // common base class of + // quadrature being either + // Quadrature or + // Quadrature: + const Subscriptor* quadrature_base_pointer = &quadrature; + + const unsigned int minus_1=static_cast (-1); + if (face_no==minus_1) + { + Assert(dim_1==dim, ExcDimensionMismatch(dim_1,dim)); + cell_quadrature=dynamic_cast *>(quadrature_base_pointer); + Assert (cell_quadrature != 0, ExcInternalError()); + } + else + { + Assert(dim_1==dim-1, ExcDimensionMismatch(dim_1,dim-1)); + face_quadrature=dynamic_cast *>(quadrature_base_pointer); + Assert (face_quadrature != 0, ExcInternalError()); + } + + + for (unsigned int base_no=0, comp=0; base_no &base_fe=base_element(base_no); + FiniteElementBase::InternalDataBase &base_fe_data= + fe_data.get_fe_data(base_no); + + // Make sure that in the + // case of fill_fe_values + // the data is only copied + // from base_data to data + // if base_data is + // changed. therefore use + // fe_fe_data.current_update_flags() + + // for the case of + // fill_fe_(sub)face_values + // the data needs to be + // copied from base_data to + // data on each face, + // therefore use + // base_fe_data.update_flags. + + // Store these flags into + // base_flags before + // calling + // base_fe.fill_fe_([sub]face_)values + // as the latter changes + // the return value of + // base_fe_data.current_update_flags() + const UpdateFlags base_flags(dim_1==dim ? + base_fe_data.current_update_flags() : + base_fe_data.update_flags); + + FEValuesData &base_data=fe_data.get_fe_values_data(base_no); + + if (face_no==minus_1) + base_fe.fill_fe_values(mapping, cell, + *cell_quadrature, mapping_data, base_fe_data, base_data); + else if (sub_no==minus_1) + base_fe.fill_fe_face_values(mapping, cell, face_no, + *face_quadrature, mapping_data, base_fe_data, base_data); + else + base_fe.fill_fe_subface_values(mapping, cell, face_no, sub_no, + *face_quadrature, mapping_data, base_fe_data, base_data); + + for (unsigned int m=0; m::InternalDataBase &base_fe_data= + fe_data.get_fe_data(base_no); + + // compute update flags ... + UpdateFlags base_flags_each( + dim_1==dim ? + mapping_data.update_each | base_fe_data.update_each : + mapping_data.update_flags | base_fe_data.update_flags); + + if (base_flags_each==update_default) + fe_data.delete_fe_values_data(base_no); + } + } + } + if (fe_data.second_flag) + { + unsigned int offset = 0; + if (face_no != static_cast (-1)) + offset = (sub_no == static_cast (-1)) + ? face_no * quadrature.n_quadrature_points + :(face_no * GeometryInfo::subfaces_per_face + + sub_no) * quadrature.n_quadrature_points; + compute_2nd (mapping, cell, offset, mapping_data, fe_data, data); + } +} + + + template void FESystem::build_cell_table() @@ -478,6 +907,29 @@ void FESystem::initialize () { build_cell_table(); build_face_table(); + + // Check if matrices are void. + + bool do_restriction = true; + bool do_prolongation = true; + + for (unsigned int i=0;i::children_per_cell;++i) + restriction[i].reinit(0,0); + if (!do_prolongation) + for (unsigned int i=0;i::children_per_cell;++i) + prolongation[i].reinit(0,0); + // distribute the matrices of the base // finite elements to the matrices of // this object @@ -490,189 +942,95 @@ void FESystem::initialize () // intermixing of subelements for (unsigned int child=0; child::children_per_cell; ++child) { - restriction[child] (component_to_system_index (component,i), - component_to_system_index (component, j)) - = base_element(component_to_base_table[component]).restrict(child)(i,j); - prolongation[child] (component_to_system_index (component,i), - component_to_system_index (component, j)) - = base_element(component_to_base_table[component]).prolongate(child)(i,j); + if (do_restriction) + restriction[child] (component_to_system_index (component,i), + component_to_system_index (component, j)) + = base_element(component_to_base_table[component]).restrict(child)(i,j); + if (do_prolongation) + prolongation[child] (component_to_system_index (component,i), + component_to_system_index (component, j)) + = base_element(component_to_base_table[component]).prolongate(child)(i,j); }; // now set up the interface constraints. // this is kind'o hairy, so don't try // to do it dimension independent - build_interface_constraints (); -}; - - -#if deal_II_dimension == 1 - -template <> -FiniteElementData<1> -FESystem<1>::multiply_dof_numbers (const FiniteElementData<1> &fe_data, - const unsigned int N) -{ - return FiniteElementData<1> (fe_data.dofs_per_vertex * N, - fe_data.dofs_per_line * N, - fe_data.n_transform_functions(), - fe_data.n_components() * N); -}; - - -template <> -FiniteElementData<1> -FESystem<1>::multiply_dof_numbers (const FiniteElementData<1> &fe1, - const unsigned int N1, - const FiniteElementData<1> &fe2, - const unsigned int N2) -{ - return FiniteElementData<1> (fe1.dofs_per_vertex * N1 + fe2.dofs_per_vertex * N2 , - fe1.dofs_per_line * N1 + fe2.dofs_per_line * N2 , - fe1.n_transform_functions(), - fe1.n_components() * N1 + fe2.n_components() * N2 ); -}; - - -template <> -FiniteElementData<1> -FESystem<1>::multiply_dof_numbers (const FiniteElementData<1> &fe1, - const unsigned int N1, - const FiniteElementData<1> &fe2, - const unsigned int N2, - const FiniteElementData<1> &fe3, - const unsigned int N3) -{ - return FiniteElementData<1> (fe1.dofs_per_vertex * N1 - + fe2.dofs_per_vertex * N2 - + fe3.dofs_per_vertex * N3, - fe1.dofs_per_line * N1 - + fe2.dofs_per_line * N2 - + fe3.dofs_per_line * N3, - fe1.n_transform_functions(), - fe1.n_components() * N1 - + fe2.n_components() * N2 - + fe3.n_components() * N3); -}; - -#endif - - -#if deal_II_dimension == 2 -template <> -FiniteElementData<2> -FESystem<2>::multiply_dof_numbers (const FiniteElementData<2> &fe_data, - const unsigned int N) -{ - return FiniteElementData<2> (fe_data.dofs_per_vertex * N, - fe_data.dofs_per_line * N, - fe_data.dofs_per_quad * N, - fe_data.n_transform_functions(), - fe_data.n_components() * N); + // TODO: there's an assertion thrown for + // dim=3 and for FESystem(FE_Q (3), 2) and for + // FESystem(FE_Q (1), 2, FE_Q (3), 1) + // and for FESystem(FE_Q (4), 2)) + build_interface_constraints (); }; -template <> -FiniteElementData<2> -FESystem<2>::multiply_dof_numbers (const FiniteElementData<2> &fe1, - const unsigned int N1, - const FiniteElementData<2> &fe2, - const unsigned int N2) -{ - return FiniteElementData<2> (fe1.dofs_per_vertex * N1 + fe2.dofs_per_vertex * N2 , - fe1.dofs_per_line * N1 + fe2.dofs_per_line * N2 , - fe1.dofs_per_quad * N1 + fe2.dofs_per_quad * N2 , - fe1.n_transform_functions(), - fe1.n_components() * N1 + fe2.n_components() * N2 ); -}; -template <> -FiniteElementData<2> -FESystem<2>::multiply_dof_numbers (const FiniteElementData<2> &fe1, - const unsigned int N1, - const FiniteElementData<2> &fe2, - const unsigned int N2, - const FiniteElementData<2> &fe3, - const unsigned int N3) +template +FiniteElementData +FESystem::multiply_dof_numbers (const FiniteElementData &fe_data, + const unsigned int N) { - return FiniteElementData<2> (fe1.dofs_per_vertex * N1 - + fe2.dofs_per_vertex * N2 - + fe3.dofs_per_vertex * N3 , - fe1.dofs_per_line * N1 - + fe2.dofs_per_line * N2 - + fe3.dofs_per_line * N3 , - fe1.dofs_per_quad * N1 - + fe2.dofs_per_quad * N2 - + fe3.dofs_per_quad * N3 , - fe1.n_transform_functions(), - fe1.n_components() * N1 - + fe2.n_components() * N2 - + fe3.n_components() * N3 ); + std::vector dpo; + dpo.push_back(fe_data.dofs_per_vertex * N); + dpo.push_back(fe_data.dofs_per_line * N); + if (dim>1) dpo.push_back(fe_data.dofs_per_quad * N); + if (dim>2) dpo.push_back(fe_data.dofs_per_hex * N); + + return FiniteElementData (dpo, fe_data.n_components() * N); }; -#endif - -#if deal_II_dimension == 3 -template <> -FiniteElementData<3> -FESystem<3>::multiply_dof_numbers (const FiniteElementData<3> &fe_data, - const unsigned int N) +template +FiniteElementData +FESystem::multiply_dof_numbers (const FiniteElementData &fe1, + const unsigned int N1, + const FiniteElementData &fe2, + const unsigned int N2) { - return FiniteElementData<3> (fe_data.dofs_per_vertex * N, - fe_data.dofs_per_line * N, - fe_data.dofs_per_quad * N, - fe_data.dofs_per_hex * N, - fe_data.n_transform_functions(), - fe_data.n_components() * N); + std::vector dpo; + dpo.push_back(fe1.dofs_per_vertex * N1 + fe2.dofs_per_vertex * N2); + dpo.push_back(fe1.dofs_per_line * N1 + fe2.dofs_per_line * N2); + if (dim>1) dpo.push_back(fe1.dofs_per_quad * N1 + fe2.dofs_per_quad * N2); + if (dim>2) dpo.push_back(fe1.dofs_per_hex * N1 + fe2.dofs_per_hex * N2); + + return FiniteElementData (dpo, + fe1.n_components() * N1 + + fe2.n_components() * N2); }; -template <> -FiniteElementData<3> -FESystem<3>::multiply_dof_numbers (const FiniteElementData<3> &fe1, - const unsigned int N1, - const FiniteElementData<3> &fe2, - const unsigned int N2) -{ - return FiniteElementData<3> (fe1.dofs_per_vertex * N1 + fe2.dofs_per_vertex * N2 , - fe1.dofs_per_line * N1 + fe2.dofs_per_line * N2 , - fe1.dofs_per_quad * N1 + fe2.dofs_per_quad * N2 , - fe1.dofs_per_hex * N1 + fe2.dofs_per_hex * N2 , - fe1.n_transform_functions(), - fe1.n_components() * N1 + fe2.n_components() * N2 ); -}; -template <> -FiniteElementData<3> -FESystem<3>::multiply_dof_numbers (const FiniteElementData<3> &fe1, - const unsigned int N1, - const FiniteElementData<3> &fe2, - const unsigned int N2, - const FiniteElementData<3> &fe3, - const unsigned int N3) +template +FiniteElementData +FESystem::multiply_dof_numbers (const FiniteElementData &fe1, + const unsigned int N1, + const FiniteElementData &fe2, + const unsigned int N2, + const FiniteElementData &fe3, + const unsigned int N3) { - return FiniteElementData<3> (fe1.dofs_per_vertex * N1 - + fe2.dofs_per_vertex * N2 - + fe3.dofs_per_vertex * N3 , - fe1.dofs_per_line * N1 - + fe2.dofs_per_line * N2 - + fe3.dofs_per_line * N3 , - fe1.dofs_per_quad * N1 - + fe2.dofs_per_quad * N2 - + fe3.dofs_per_quad * N3 , - fe1.dofs_per_hex * N1 - + fe2.dofs_per_hex * N2 - + fe3.dofs_per_hex * N3 , - fe1.n_transform_functions(), - fe1.n_components() * N1 - + fe2.n_components() * N2 - + fe3.n_components() * N3 ); + std::vector dpo; + dpo.push_back(fe1.dofs_per_vertex * N1 + + fe2.dofs_per_vertex * N2 + + fe3.dofs_per_vertex * N3); + dpo.push_back(fe1.dofs_per_line * N1 + + fe2.dofs_per_line * N2 + + fe3.dofs_per_line * N3); + if (dim>1) dpo.push_back(fe1.dofs_per_quad * N1 + + fe2.dofs_per_quad * N2 + + fe3.dofs_per_quad * N3); + if (dim>2) dpo.push_back(fe1.dofs_per_hex * N1 + + fe2.dofs_per_hex * N2 + + fe3.dofs_per_hex * N3); + + return FiniteElementData (dpo, + fe1.n_components() * N1 + + fe2.n_components() * N2 + + fe3.n_components() * N3); }; -#endif template @@ -730,370 +1088,45 @@ FESystem::compute_restriction_is_additive_flags (const FiniteElement & template -double -FESystem::shape_value (const unsigned int i, - const Point &p) const -{ - Assert((i comp = system_to_component_index(i); - - return base_element(component_to_base_table[comp.first]) - .shape_value(comp.second, p); -}; - - -template -Tensor<1,dim> -FESystem::shape_grad (const unsigned int i, - const Point &p) const -{ - Assert((i comp = system_to_component_index(i); - - return base_element(component_to_base_table[comp.first]) - .shape_grad(comp.second, p); -}; - - -template -Tensor<2,dim> -FESystem::shape_grad_grad (const unsigned int i, - const Point &p) const -{ - Assert((i comp = system_to_component_index(i); - - return base_element(component_to_base_table[comp.first]) - .shape_grad_grad(comp.second, p); -}; - - -template -void FESystem::get_unit_support_points ( - typename std::vector > &unit_support_points) const -{ - Assert(unit_support_points.size() == dofs_per_cell, - typename FiniteElementBase:: - ExcWrongFieldDimension (unit_support_points.size(), - dofs_per_cell)); - - std::vector > base_unit_support_points (base_element(0).dofs_per_cell); - unsigned int component = 0; - for (unsigned int base_el=0 ; base_el > > base_us_points(n_base_elements()); -// for (unsigned int base_el=0 ; base_el -void FESystem::get_support_points (const typename DoFHandler::cell_iterator &cell, - typename std::vector > &support_points) const -{ - Assert(support_points.size() == dofs_per_cell, - typename FiniteElementBase:: - ExcWrongFieldDimension (support_points.size(), - dofs_per_cell)); - - std::vector > base_support_points (base_element(0).dofs_per_cell); - unsigned int component = 0; - for (unsigned int base_el=0 ; base_el -void FESystem::get_face_support_points (const typename DoFHandler::face_iterator & face, - typename std::vector > & support_points) const -{ - Assert (support_points.size() == dofs_per_face, - typename FiniteElementBase:: - ExcWrongFieldDimension (support_points.size(), - dofs_per_face)); - - std::vector > base_support_points (base_element(0).dofs_per_face); - unsigned int comp = 0; - for (unsigned int base=0 ; base -void FESystem::get_local_mass_matrix (const typename DoFHandler::cell_iterator &cell, - FullMatrix &local_mass_matrix) const -{ - Assert (local_mass_matrix.n() == dofs_per_cell, - typename FiniteElementBase:: - ExcWrongFieldDimension(local_mass_matrix.n(), - dofs_per_cell)); - Assert (local_mass_matrix.m() == dofs_per_cell, - typename FiniteElementBase:: - ExcWrongFieldDimension(local_mass_matrix.m(), - dofs_per_cell)); - - // track which component we are - // presently working with, since we - // only have the number of the base - // element and the number within - // its multiplicity - unsigned int component = 0; - for (unsigned int base_el=0; base_el base_mass_matrix (base_element_dofs_per_cell, - base_element_dofs_per_cell); - base_element(base_el).get_local_mass_matrix (cell, base_mass_matrix); - - // now distribute it to the mass matrix - // of this object - const unsigned int el_multiplicity=element_multiplicity(base_el); - for (unsigned int n=0; n -Point FESystem::transform_unit_to_real_cell ( - const typename DoFHandler::cell_iterator &cell, - const Point &p) const -{ - return base_elements[0].first->transform_unit_to_real_cell(cell, p); -}; - - -template -Point FESystem::transform_real_to_unit_cell ( - const typename DoFHandler::cell_iterator &cell, - const Point &p) const -{ - return base_elements[0].first->transform_real_to_unit_cell(cell, p); -}; - - -template -double FESystem::shape_value_transform (const unsigned int i, - const Point &p) const -{ - return base_elements[0].first->shape_value_transform(i,p); -}; - - -template -Tensor<1,dim> FESystem::shape_grad_transform (const unsigned int i, - const Point &p) const -{ - return base_elements[0].first->shape_grad_transform (i, p); -}; - - -template -void FESystem::get_face_jacobians (const typename DoFHandler::face_iterator &face, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const -{ - base_elements[0].first->get_face_jacobians (face, unit_points, - face_jacobi_determinants); -}; - - -template -void FESystem::get_subface_jacobians (const typename DoFHandler::face_iterator &face, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector &face_jacobi_determinants) const +unsigned int +FESystem::memory_consumption () const { - base_elements[0].first->get_subface_jacobians (face, subface_no, unit_points, - face_jacobi_determinants); + // neglect size of data stored in + // @p{base_elements} due to some + // problems with teh + // compiler. should be neglectable + // after all, considering the size + // of the data of the subelements + unsigned int mem = (FiniteElement::memory_consumption () + + sizeof (base_elements)); + for (unsigned int i=0; i -void FESystem::get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const -{ - base_elements[0].first->get_normal_vectors (cell, face_no, unit_points, - normal_vectors); -}; +FESystem::InternalData::InternalData(const unsigned int n_base_elements): + base_fe_datas(n_base_elements), + base_fe_values_datas(n_base_elements) +{} -template -void FESystem::get_normal_vectors (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no, - const unsigned int subface_no, - const typename std::vector > &unit_points, - typename std::vector > &normal_vectors) const -{ - base_elements[0].first->get_normal_vectors (cell, face_no, subface_no, unit_points, - normal_vectors); -}; - template -void -FESystem::fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grad_transform) const +FESystem::InternalData::~InternalData() { - // if we are to compute the support - // points, then we need to get them - // from each base element. the - // following variable is used as - // temporary - std::vector > supp(compute_support_points ? - base_elements[0].first->dofs_per_cell : - 0); - - base_elements[0].first->fill_fe_values (cell, unit_points, jacobians, compute_jacobians, - jacobians_grad, compute_jacobians_grad, - supp, compute_support_points, - q_points, compute_q_points, - shape_values_transform, shape_grad_transform); + for (unsigned int i=0; idofs_per_cell); - base_elements[base].first->fill_fe_values (cell, unit_points, jacobians, false, - jacobians_grad, false, - supp, true, - q_points, false, - shape_values_transform, shape_grad_transform); - - for (unsigned int m=0 ; m < element_multiplicity(base) ; ++ m) - { - for (unsigned int i=0 ; i < base_element(base).dofs_per_cell ; ++i) - support_points[component_to_system_index(component,i)] = supp[i]; - ++component; - } - } - } + for (unsigned int i=0; i -unsigned int -FESystem::memory_consumption () const -{ - // neglect size of data stored in - // @p{base_elements} due to some - // problems with teh - // compiler. should be neglectable - // after all, considering the size - // of the data of the subelements - unsigned int mem = (FiniteElement::memory_consumption () + - sizeof (base_elements)); - for (unsigned int i=0; i #include #include -#include +#include +#include #include #include #include #include +#include #include #include @@ -52,10 +54,18 @@ void FETools::get_interpolation_matrix(const FiniteElement &fe1, fe2.get_unit_support_points (fe2_support_points); Quadrature fe2_support_points_quadrature(fe2_support_points, phantom_weights); - - FEValues fe_values( - fe1, fe2_support_points_quadrature, update_values); + // This is a bad workaround as we + // can't ask the FEs for their shape + // values any more. + // TODO: do this better. + Triangulation tria; + DoFHandler dof_handler(tria); + GridGenerator::hyper_cube(tria); + dof_handler.distribute_dofs(fe1); + MappingQ1 mapping_q1; + FEValues fe_values(mapping_q1, fe1, fe2_support_points_quadrature, update_values); + fe_values.reinit(dof_handler.begin_active()); for (unsigned int i=0; i +#include #include #include #include @@ -23,62 +24,93 @@ #include #include +#include // if necessary try to work around a bug in the IBM xlC compiler #ifdef XLC_WORK_AROUND_STD_BUG using namespace std; #endif +static MappingQ1 mapping_q1; + +template +void +FEValuesData::initialize (const unsigned int n_quadrature_points, + unsigned int n_shapes, + const UpdateFlags flags) +{ + if (flags & update_values) + shape_values.reinit(n_shapes, n_quadrature_points); + + if (flags & update_gradients) + { + shape_gradients.resize(n_shapes); + for (unsigned int i=0;i FEValuesBase::FEValuesBase (const unsigned int n_q_points, - const unsigned int n_support_points, const unsigned int dofs_per_cell, - const unsigned int n_transform_functions, - const unsigned int n_values_arrays, - const UpdateFlags update_flags, + const unsigned int, + const UpdateFlags flags, + const Mapping &mapping, const FiniteElement &fe) : n_quadrature_points (n_q_points), dofs_per_cell (dofs_per_cell), - n_transform_functions (n_transform_functions), - shape_values (n_values_arrays, FullMatrix(dofs_per_cell, n_q_points)), - shape_gradients (dofs_per_cell, std::vector >(n_q_points)), - shape_2nd_derivatives (dofs_per_cell, std::vector >(n_q_points)), - weights (n_q_points, 0), - JxW_values (n_q_points, 0), - quadrature_points (n_q_points, Point()), - support_points (n_support_points, Point()), - jacobi_matrices (n_q_points, Tensor<2,dim>()), - jacobi_matrices_grad (n_q_points, Tensor<3,dim>()), - shape_values_transform (n_values_arrays, - FullMatrix(n_transform_functions, - n_quadrature_points)), - selected_dataset (0), - update_flags (update_flags), - fe(&fe) -{}; - + mapping(&mapping), + fe(&fe), + mapping_data(0), + fe_data(0) +{ + update_flags = flags; +} template -double FEValuesBase::shape_value (const unsigned int i, - const unsigned int j) const +FEValuesBase::~FEValuesBase () { - Assert (update_flags & update_values, ExcAccessToUninitializedField()); - Assert (selected_dataset::InternalDataBase *tmp1=fe_data; + fe_data=0; + delete tmp1; + } + + if (mapping_data) + { + Mapping::InternalDataBase *tmp1=mapping_data; + mapping_data=0; + delete tmp1; + } +} template @@ -86,13 +118,11 @@ template void FEValuesBase::get_function_values (const InputVector &fe_function, typename std::vector &values) const { + Assert (update_flags & update_values, ExcAccessToUninitializedField()); Assert (fe->n_components() == 1, ExcWrongNoOfComponents()); - Assert (selected_dataset::get_function_values (const InputVector &fe_function, for (unsigned int point=0; point template void FEValuesBase::get_function_values (const InputVector &fe_function, @@ -122,8 +151,6 @@ void FEValuesBase::get_function_values (const InputVector &fe_functio { Assert (n_quadrature_points == values.size(), ExcWrongVectorSize(values.size(), n_quadrature_points)); - Assert (selected_datasetn_components(), ExcWrongNoOfComponents()); @@ -146,37 +173,67 @@ void FEValuesBase::get_function_values (const InputVector &fe_functio for (unsigned int point=0; pointsystem_to_component_index(shape_func).first) - += (dof_values(shape_func) * shape_values[selected_dataset](shape_func, point)); + += (dof_values(shape_func) * shape_values(shape_func, point)); }; template -const Tensor<1,dim> & -FEValuesBase::shape_grad (const unsigned int i, - const unsigned int j) const +const typename FEValuesData::ShapeVector & +FEValuesBase::get_shape_values () const +{ + Assert (update_flags & update_values, ExcAccessToUninitializedField()); + return shape_values; +}; + + +template +const typename FEValuesData::GradientVector & +FEValuesBase::get_shape_grads () const { - Assert (i +const typename std::vector > > & +FEValuesBase::get_shape_2nd_derivatives () const +{ + Assert (update_flags & update_second_derivatives, ExcAccessToUninitializedField()); + return shape_2nd_derivatives; }; +template +const typename std::vector > & +FEValuesBase::get_quadrature_points () const +{ + Assert (update_flags & update_q_points, ExcAccessToUninitializedField()); + return quadrature_points; +}; + + +template +const std::vector & +FEValuesBase::get_JxW_values () const +{ + Assert (update_flags & update_JxW_values, ExcAccessToUninitializedField()); + return JxW_values; +} + template template void FEValuesBase::get_function_grads (const InputVector &fe_function, typename std::vector > &gradients) const { + Assert (update_flags & update_gradients, ExcAccessToUninitializedField()); + Assert (fe->n_components() == 1, ExcWrongNoOfComponents()); Assert (gradients.size() == n_quadrature_points, ExcWrongVectorSize(gradients.size(), n_quadrature_points)); - Assert (update_flags & update_gradients, ExcAccessToUninitializedField()); // get function values of dofs // on this cell @@ -209,8 +266,6 @@ void FEValuesBase::get_function_grads (const InputVector &fe_ { Assert (n_quadrature_points == gradients.size(), ExcWrongNoOfComponents()); - Assert (selected_datasetn_components(), ExcWrongVectorSize(gradients[i].size(), fe->n_components())); @@ -241,23 +296,6 @@ void FEValuesBase::get_function_grads (const InputVector &fe_ }; - -template -const Tensor<2,dim> & -FEValuesBase::shape_2nd_derivative (const unsigned int i, - const unsigned int j) const -{ - Assert (i template void FEValuesBase::get_function_2nd_derivatives (const InputVector &fe_function, @@ -278,7 +316,7 @@ void FEValuesBase::get_function_2nd_derivatives (const InputVector &fe present_cell->get_interpolated_dof_values(fe_function, dof_values); // initialize with zero - fill_n (second_derivatives.begin(), n_quadrature_points, Tensor<2,dim>()); + std::fill_n (second_derivatives.begin(), n_quadrature_points, Tensor<2,dim>()); // add up contributions of trial // functions @@ -292,7 +330,6 @@ void FEValuesBase::get_function_2nd_derivatives (const InputVector &fe }; - template template void @@ -302,8 +339,6 @@ get_function_2nd_derivatives (const InputVector &fe_function, { Assert (n_quadrature_points == second_derivs.size(), ExcWrongNoOfComponents()); - Assert (selected_datasetn_components(), ExcWrongVectorSize(second_derivs[i].size(), fe->n_components())); @@ -339,31 +374,20 @@ template const Point & FEValuesBase::quadrature_point (const unsigned int i) const { - Assert (i -const Point & -FEValuesBase::support_point (const unsigned int i) const -{ - Assert (i double FEValuesBase::JxW (const unsigned int i) const { - Assert (i::memory_consumption () const return (MemoryConsumption::memory_consumption (shape_values) + MemoryConsumption::memory_consumption (shape_gradients) + MemoryConsumption::memory_consumption (shape_2nd_derivatives) + - MemoryConsumption::memory_consumption (weights) + MemoryConsumption::memory_consumption (JxW_values) + MemoryConsumption::memory_consumption (quadrature_points) + - MemoryConsumption::memory_consumption (support_points) + - MemoryConsumption::memory_consumption (jacobi_matrices) + - MemoryConsumption::memory_consumption (jacobi_matrices_grad) + - MemoryConsumption::memory_consumption (shape_values_transform) + - MemoryConsumption::memory_consumption (selected_dataset) + - MemoryConsumption::memory_consumption (jacobi_matrices) + sizeof(update_flags) + MemoryConsumption::memory_consumption (present_cell) + MemoryConsumption::memory_consumption (fe)); @@ -395,141 +412,95 @@ FEValuesBase::memory_consumption () const /*------------------------------- FEValues -------------------------------*/ template -FEValues::FEValues (const FiniteElement &fe, - const Quadrature &quadrature, +FEValues::FEValues (const Mapping &mapping, + const FiniteElement &fe, + const Quadrature &q, const UpdateFlags update_flags) : - FEValuesBase (quadrature.n_quadrature_points, - fe.dofs_per_cell, + FEValuesBase (q.n_quadrature_points, fe.dofs_per_cell, - fe.transform_functions, 1, update_flags, + mapping, fe), - unit_shape_gradients(fe.dofs_per_cell, - std::vector >(quadrature.n_quadrature_points)), - unit_shape_2nd_derivatives(fe.dofs_per_cell, - std::vector >(quadrature.n_quadrature_points)), - unit_shape_gradients_transform(fe.n_transform_functions(), - std::vector >(quadrature.n_quadrature_points)), - unit_quadrature_points(quadrature.get_points()) + quadrature (q) { Assert ((update_flags & update_normal_vectors) == false, typename FEValuesBase::ExcInvalidUpdateFlag()); - for (unsigned int i=0; iupdate_once | mapping_data->update_each; + allflags |= fe_data->update_once | fe_data->update_each; + + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + allflags); }; +template +FEValues::FEValues (const FiniteElement &fe, + const Quadrature &q, + const UpdateFlags update_flags) + : + FEValuesBase (q.n_quadrature_points, + fe.dofs_per_cell, + 1, + update_flags, + mapping_q1, + fe), + quadrature (q) +{ + Assert ((update_flags & update_normal_vectors) == false, + FEValuesBase::ExcInvalidUpdateFlag()); + + UpdateFlags flags = mapping_q1.update_once (update_flags); + flags |= mapping_q1.update_each (update_flags); + flags |= fe.update_once (update_flags); + flags |= fe.update_each (update_flags); + + mapping_data = mapping_q1.get_data(flags, quadrature); + fe_data = fe.get_data(flags, mapping_q1, quadrature); + + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + flags); +} + template void FEValues::reinit (const typename DoFHandler::cell_iterator &cell) { - present_cell = cell; - // assert that the finite elements // passed to the constructor and // used by the DoFHandler used by // this cell, are the same - Assert (static_cast&>(*fe) - == + Assert (static_cast&>(*fe) == static_cast&>(cell->get_dof_handler().get_fe()), typename FEValuesBase::ExcFEDontMatch()); + + present_cell = cell; + + get_mapping().fill_fe_values(cell, + quadrature, + *mapping_data, + quadrature_points, + JxW_values); - // fill jacobi matrices and real - // quadrature points - if ((update_flags & update_jacobians) || - (update_flags & update_JxW_values) || - (update_flags & update_q_points) || - (update_flags & update_gradients) || - (update_flags & update_second_derivatives) || - (update_flags & update_support_points)) - fe->fill_fe_values (cell, - unit_quadrature_points, - jacobi_matrices, - update_flags & (update_jacobians | - update_JxW_values | - update_gradients | - update_second_derivatives), - jacobi_matrices_grad, - update_flags & update_second_derivatives, - support_points, - update_flags & update_support_points, - quadrature_points, - update_flags & update_q_points, - shape_values_transform[0], unit_shape_gradients_transform); - - // compute gradients on real element if - // requested - if (update_flags & update_gradients) - for (unsigned int i=0; idofs_per_cell; ++i) - for (unsigned int j=0; j tmp1, tmp2; - if (update_flags & update_second_derivatives) - for (unsigned int i=0; idofs_per_cell; ++i) - for (unsigned int j=0; j unsigned int FEValues::memory_consumption () const { - return (FEValuesBase::memory_consumption () + - MemoryConsumption::memory_consumption (unit_shape_gradients) + - MemoryConsumption::memory_consumption (unit_shape_2nd_derivatives) + - MemoryConsumption::memory_consumption (unit_shape_gradients_transform) + - MemoryConsumption::memory_consumption (unit_quadrature_points)); + return FEValuesBase::memory_consumption (); }; @@ -550,65 +517,40 @@ FEValues::memory_consumption () const template FEFaceValuesBase::FEFaceValuesBase (const unsigned int n_q_points, - const unsigned int n_support_points, const unsigned int dofs_per_cell, - const unsigned int n_transform_functions, const unsigned int n_faces_or_subfaces, - const UpdateFlags update_flags, - const FiniteElement &fe) - : - FEValuesBase (n_q_points, - n_support_points, - dofs_per_cell, - n_transform_functions, - n_faces_or_subfaces, - update_flags, - fe), - unit_shape_gradients (n_faces_or_subfaces, - std::vector > >(dofs_per_cell, - std::vector >(n_q_points))), - unit_shape_2nd_derivatives(n_faces_or_subfaces, - std::vector > >(dofs_per_cell, - std::vector >(n_q_points))), - unit_shape_gradients_transform (n_faces_or_subfaces, - std::vector > >(n_transform_functions, - std::vector >(n_q_points))), - unit_face_quadrature_points (n_q_points, Point()), - unit_quadrature_points (n_faces_or_subfaces, - std::vector >(n_q_points, Point())), - face_jacobi_determinants (n_q_points, 0), - normal_vectors (n_q_points) + const UpdateFlags update_flags, + const Mapping &mapping, + const FiniteElement &fe, + const Quadrature& quadrature) + : + FEValuesBase (n_q_points, + dofs_per_cell, + n_faces_or_subfaces, + update_flags, + mapping, + fe), + quadrature(quadrature) {}; - template -const Point & -FEFaceValuesBase::normal_vector (const unsigned int i) const +const std::vector > & +FEFaceValuesBase::get_normal_vectors () const { - Assert (i::ExcAccessToUninitializedField()); - - return normal_vectors[i]; + return normal_vectors; }; - - template -unsigned int -FEFaceValuesBase::memory_consumption () const +const std::vector > & +FEFaceValuesBase::get_boundary_forms () const { - return (FEValuesBase::memory_consumption () + - MemoryConsumption::memory_consumption (unit_shape_gradients) + - MemoryConsumption::memory_consumption (unit_shape_2nd_derivatives) + - MemoryConsumption::memory_consumption (unit_shape_gradients_transform) + - MemoryConsumption::memory_consumption (unit_face_quadrature_points) + - MemoryConsumption::memory_consumption (unit_quadrature_points) + - MemoryConsumption::memory_consumption (face_jacobi_determinants) + - MemoryConsumption::memory_consumption (normal_vectors) + - MemoryConsumption::memory_consumption (present_face)); + Assert (update_flags & update_boundary_forms, + FEValuesBase::ExcAccessToUninitializedField()); + return boundary_forms; }; @@ -616,233 +558,151 @@ FEFaceValuesBase::memory_consumption () const template -FEFaceValues::FEFaceValues (const FiniteElement &fe, +FEFaceValues::FEFaceValues (const Mapping &mapping, + const FiniteElement &fe, const Quadrature &quadrature, const UpdateFlags update_flags) : FEFaceValuesBase (quadrature.n_quadrature_points, - fe.dofs_per_face, fe.dofs_per_cell, - fe.n_transform_functions(), GeometryInfo::faces_per_cell, update_flags, - fe) + mapping, + fe, quadrature) { - unit_face_quadrature_points = quadrature.get_points(); - weights = quadrature.get_weights (); - - // set up an array of the unit points - // on the given face, but in coordinates - // of the space with @p{dim} dimensions. - // the points are still on the unit - // cell, not on the real cell. - for (unsigned int face=0; face::faces_per_cell; ++face) - QProjector::project_to_face (quadrature, face, unit_quadrature_points[face]); - - for (unsigned int i=0; i::faces_per_cell; ++face) - { - shape_values[face](i,j) - = fe.shape_value(i, unit_quadrature_points[face][j]); - unit_shape_gradients[face][i][j] - = fe.shape_grad(i, unit_quadrature_points[face][j]); - if (update_flags & update_second_derivatives) - unit_shape_2nd_derivatives[face][i][j] - = fe.shape_grad_grad(i, unit_quadrature_points[face][j]); - }; - - for (unsigned int i=0; i::faces_per_cell; ++face) - { - shape_values_transform[face] (i,j) - = fe.shape_value_transform (i, unit_quadrature_points[face][j]); - unit_shape_gradients_transform[face][i][j] - = fe.shape_grad_transform(i, unit_quadrature_points[face][j]); - }; + UpdateFlags flags = mapping.update_once (update_flags); + flags |= mapping.update_each (update_flags); + flags |= fe.update_once (update_flags); + flags |= fe.update_each (update_flags); + + mapping_data = mapping.get_face_data(flags, quadrature); + fe_data = fe.get_face_data(flags, mapping, quadrature); + + UpdateFlags allflags = mapping_data->update_once | mapping_data->update_each; + allflags |= fe_data->update_once | fe_data->update_each; + + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + allflags); }; + template -void FEFaceValues::reinit (const typename DoFHandler::cell_iterator &cell, - const unsigned int face_no) +FEFaceValues::FEFaceValues (const FiniteElement &fe, + const Quadrature &quadrature, + const UpdateFlags update_flags) + : + FEFaceValuesBase (quadrature.n_quadrature_points, + fe.dofs_per_cell, + GeometryInfo::faces_per_cell, + update_flags, + mapping_q1, + fe, quadrature) { - present_cell = cell; - present_face = cell->face(face_no); - selected_dataset = face_no; + UpdateFlags flags = mapping_q1.update_once (update_flags); + flags |= mapping_q1.update_each (update_flags); + flags |= fe.update_once (update_flags); + flags |= fe.update_each (update_flags); + + mapping_data = mapping_q1.get_face_data(flags, quadrature); + fe_data = fe.get_face_data(flags, mapping_q1, quadrature); + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + flags); +}; + + + +template +void FEFaceValues::reinit (const typename + DoFHandler::cell_iterator &cell, + const unsigned int face_no) +{ // assert that the finite elements // passed to the constructor and // used by the DoFHandler used by // this cell, are the same - Assert (static_cast&>(*fe) - == + Assert (static_cast&>(*fe) == static_cast&>(cell->get_dof_handler().get_fe()), typename FEValuesBase::ExcFEDontMatch()); - Assert (face_no < GeometryInfo::faces_per_cell, - ExcIndexRange (face_no, 0, GeometryInfo::faces_per_cell)); - - // fill jacobi matrices and real - // quadrature points - if ((update_flags & update_jacobians) || - (update_flags & update_JxW_values) || - (update_flags & update_q_points) || - (update_flags & update_gradients) || - (update_flags & update_second_derivatives) || - (update_flags & update_support_points) || - (update_flags & update_normal_vectors) || - (update_flags & update_JxW_values)) - fe->fill_fe_face_values (cell, - face_no, - unit_face_quadrature_points, - unit_quadrature_points[face_no], - jacobi_matrices, - update_flags & (update_jacobians | - update_gradients | - update_JxW_values | - update_second_derivatives), - jacobi_matrices_grad, - update_flags & update_second_derivatives, - support_points, - update_flags & update_support_points, - quadrature_points, - update_flags & update_q_points, - face_jacobi_determinants, - update_flags & update_JxW_values, - normal_vectors, - update_flags & update_normal_vectors, - shape_values_transform[face_no], - unit_shape_gradients_transform[face_no]); - - // compute gradients on real element if - // requested - if (update_flags & update_gradients) - for (unsigned int i=0; idofs_per_cell; ++i) - { - fill_n (shape_gradients[i].begin(), - n_quadrature_points, - Tensor<1,dim>()); - for (unsigned int j=0; jface(face_no); - Tensor<2,dim> tmp1, tmp2; - if (update_flags & update_second_derivatives) - for (unsigned int i=0; idofs_per_cell; ++i) - for (unsigned int j=0; j +FESubfaceValues::FESubfaceValues (const Mapping &mapping, + const FiniteElement &fe, + const Quadrature &quadrature, + const UpdateFlags update_flags) + : + FEFaceValuesBase (quadrature.n_quadrature_points, + fe.dofs_per_cell, + GeometryInfo::faces_per_cell * GeometryInfo::subfaces_per_face, + update_flags, + mapping, + fe, quadrature) +{ + UpdateFlags flags = mapping.update_once (update_flags); + flags |= mapping.update_each (update_flags); + flags |= fe.update_once (update_flags); + flags |= fe.update_each (update_flags); + + mapping_data = mapping.get_subface_data(flags, quadrature); + fe_data = fe.get_subface_data(flags, mapping, quadrature); + + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + flags); +} + + + template FESubfaceValues::FESubfaceValues (const FiniteElement &fe, const Quadrature &quadrature, const UpdateFlags update_flags) : FEFaceValuesBase (quadrature.n_quadrature_points, - 0, fe.dofs_per_cell, - fe.n_transform_functions(), GeometryInfo::faces_per_cell * GeometryInfo::subfaces_per_face, update_flags, - fe) + mapping_q1, + fe, quadrature) { - Assert ((update_flags & update_support_points) == false, - typename FEValuesBase::ExcInvalidUpdateFlag()); - - unit_face_quadrature_points = quadrature.get_points(); - weights = quadrature.get_weights (); - - // set up an array of the unit points - // on the given face, but in coordinates - // of the space with @p{dim} dimensions. - // the points are still on the unit - // cell, not on the real cell. - for (unsigned int face=0; face::faces_per_cell; ++face) - for (unsigned int subface=0; subface::subfaces_per_face; ++subface) - QProjector::project_to_subface (quadrature, - face, subface, - unit_quadrature_points[face*(1<<(dim-1))+subface]); - - for (unsigned int i=0; i::faces_per_cell; ++face) - for (unsigned int subface=0; subface::subfaces_per_face; ++subface) - { - shape_values[face*GeometryInfo::subfaces_per_face+subface](i,j) - = fe.shape_value(i, unit_quadrature_points[face * - GeometryInfo:: - subfaces_per_face+subface][j]); - unit_shape_gradients[face*GeometryInfo::subfaces_per_face+subface][i][j] - = fe.shape_grad(i, unit_quadrature_points[face * - GeometryInfo:: - subfaces_per_face+subface][j]); - if (update_flags & update_second_derivatives) - unit_shape_2nd_derivatives[face*GeometryInfo::subfaces_per_face+subface][i][j] - = fe.shape_grad_grad(i, unit_quadrature_points[face * - GeometryInfo:: - subfaces_per_face+subface][j]); - }; - for (unsigned int i=0; i::faces_per_cell; ++face) - for (unsigned int subface=0; subface::subfaces_per_face; ++subface) - { - shape_values_transform[face*GeometryInfo::subfaces_per_face+subface] (i,j) - = fe.shape_value_transform (i, unit_quadrature_points[face * - GeometryInfo:: - subfaces_per_face + - subface][j]); - unit_shape_gradients_transform[face * - GeometryInfo::subfaces_per_face + - subface][i][j] - = fe.shape_grad_transform(i, unit_quadrature_points[face * - GeometryInfo:: - subfaces_per_face + - subface][j]); - }; -}; + UpdateFlags flags = mapping_q1.update_once (update_flags); + flags |= mapping_q1.update_each (update_flags); + flags |= fe.update_once (update_flags); + flags |= fe.update_each (update_flags); + + mapping_data = mapping_q1.get_subface_data(flags, quadrature); + fe_data = fe.get_subface_data(flags, mapping_q1, quadrature); + + FEValuesData::initialize(n_quadrature_points, + dofs_per_cell, + flags); +} @@ -851,113 +711,39 @@ void FESubfaceValues::reinit (const typename DoFHandler::cell_iterator const unsigned int face_no, const unsigned int subface_no) { - Assert (face_no < GeometryInfo::faces_per_cell, - ExcIndexRange (face_no, 0, GeometryInfo::faces_per_cell)); - Assert (subface_no < GeometryInfo::subfaces_per_face, - ExcIndexRange (subface_no, 0, GeometryInfo::subfaces_per_face)); - Assert (cell->face(face_no)->at_boundary() == false, - ExcReinitCalledWithBoundaryFace()); - Assert (cell->face(face_no)->has_children()== true, - ExcFaceHasNoSubfaces()); - - present_cell = cell; - present_face = cell->face(face_no)->child(subface_no); - selected_dataset = face_no*(1<<(dim-1)) + subface_no; - // assert that the finite elements // passed to the constructor and // used by the DoFHandler used by // this cell, are the same - Assert (static_cast&>(*fe) - == + Assert (static_cast&>(*fe) == static_cast&>(cell->get_dof_handler().get_fe()), typename FEValuesBase::ExcFEDontMatch()); - - // fill jacobi matrices and real - // quadrature points - if ((update_flags & update_jacobians) || - (update_flags & update_JxW_values) || - (update_flags & update_q_points) || - (update_flags & update_gradients) || - (update_flags & update_second_derivatives) || - (update_flags & update_normal_vectors) || - (update_flags & update_JxW_values)) - fe->fill_fe_subface_values (cell, - face_no, - subface_no, - unit_face_quadrature_points, - unit_quadrature_points[selected_dataset], - jacobi_matrices, - update_flags & (update_jacobians | - update_gradients | - update_JxW_values| - update_second_derivatives), - jacobi_matrices_grad, - update_flags & update_second_derivatives, - quadrature_points, - update_flags & update_q_points, - face_jacobi_determinants, - update_flags & update_JxW_values, - normal_vectors, - update_flags & update_normal_vectors, - shape_values_transform[selected_dataset], - unit_shape_gradients_transform[selected_dataset]); - - // compute gradients on real element if - // requested - if (update_flags & update_gradients) - for (unsigned int i=0; idofs_per_cell; ++i) - { - fill_n (shape_gradients[i].begin(), - n_quadrature_points, - Tensor<1,dim>()); - for (unsigned int j=0; j::faces_per_cell, + ExcIndexRange (face_no, 0, GeometryInfo::faces_per_cell)); + Assert (subface_no < GeometryInfo::subfaces_per_face, + ExcIndexRange (subface_no, 0, GeometryInfo::subfaces_per_face)); - Tensor<2,dim> tmp1, tmp2; - if (update_flags & update_second_derivatives) - for (unsigned int i=0; idofs_per_cell; ++i) - for (unsigned int j=0; jface(face_no)->at_boundary() == false, + // ExcReinitCalledWithBoundaryFace()); + + present_cell = cell; + present_face = cell->face(face_no); + + get_mapping().fill_fe_subface_values(cell, face_no, subface_no, + quadrature, + *mapping_data, + quadrature_points, + JxW_values, + boundary_forms, + normal_vectors); + + get_fe().fill_fe_subface_values(get_mapping(), + cell, face_no, subface_no, + quadrature, + *mapping_data, + *fe_data, + *this); }; diff --git a/deal.II/deal.II/source/fe/mapping.cc b/deal.II/deal.II/source/fe/mapping.cc index e69de29bb2..8452ebf17e 100644 --- a/deal.II/deal.II/source/fe/mapping.cc +++ b/deal.II/deal.II/source/fe/mapping.cc @@ -0,0 +1,79 @@ +//------------------------------------------------------------------------ +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//------------------------------------------------------------------------ + +#include +#include + + +#if (deal_II_dimension == 1) + +template<> +const unsigned int Mapping::normal_directions[2] = +{ + 1, 0 +}; + +#endif + +#if (deal_II_dimension == 2) + +template<> +const unsigned int Mapping::normal_directions[4] = +{ + 2, 0, 3, 1 +}; + +#endif + +#if (deal_II_dimension == 3) + +template<> +const unsigned int Mapping::normal_directions[6] = +{ + 3, 2, 5, 0, 4, 1 +}; + +#endif + + +template +Mapping::~Mapping () +{} + + +/*------------------------------ InternalData ------------------------------*/ + + +template +Mapping::InternalDataBase::~InternalDataBase () +{} + + +template +Mapping::InternalDataBase::InternalDataBase (): + update_flags(update_default), + update_once(update_default), + update_each(update_default), + first_cell(true) +{} + + + +/*------------------------------ InternalData ------------------------------*/ + + + +template class Mapping; + + + diff --git a/deal.II/deal.II/source/fe/mapping_cartesian.cc b/deal.II/deal.II/source/fe/mapping_cartesian.cc index e69de29bb2..49fad8d038 100644 --- a/deal.II/deal.II/source/fe/mapping_cartesian.cc +++ b/deal.II/deal.II/source/fe/mapping_cartesian.cc @@ -0,0 +1,567 @@ +//----------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//----------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + + + +template +MappingCartesian::InternalData::InternalData (const Quadrature& q) + : + length (dim, 0.), + quadrature_points (q.get_points ()) +{} + + + +template +UpdateFlags +MappingCartesian::update_once (const UpdateFlags) const +{ + return update_default; +} + +template +UpdateFlags +MappingCartesian::update_each (const UpdateFlags in) const +{ + UpdateFlags out = in; + if (out & update_boundary_forms) + out |= update_normal_vectors; + + return out; +} + + +template +Mapping::InternalDataBase* +MappingCartesian::get_data (const UpdateFlags flags, + const Quadrature& q) const +{ + Assert (flags & update_normal_vectors == 0, ExcNotImplemented()); + InternalData* data = new InternalData (q); + return data; +} + + +template +Mapping::InternalDataBase* +MappingCartesian::get_face_data (const UpdateFlags, + const Quadrature& quadrature) const +{ + QProjector q (quadrature, false); + InternalData* data = new InternalData (q); + return data; +} + + + +template +Mapping::InternalDataBase* +MappingCartesian::get_subface_data (const UpdateFlags, + const Quadrature& quadrature) const +{ + QProjector q (quadrature, true); + InternalData* data = new InternalData (q); + return data; +} + + + + +template +void +MappingCartesian::compute_fill (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + InternalData& data, + std::vector > &quadrature_points, + std::vector >& normal_vectors) const +{ + const UpdateFlags update_flags(data.current_update_flags()); + + const unsigned int npts = quadrature_points.size (); + unsigned int offset = 0; + bool onface = false; + + if (face_no == static_cast (-1)) + { + Assert (sub_no == static_cast (-1), ExcInternalError()); + } else { + onface = true; + // Add 1 on both sides of + // assertion to avoid compiler + // warning about testing + // unsigned int < 0 in 1d. + Assert (face_no+1 < GeometryInfo::faces_per_cell+1, + ExcIndexRange (face_no, 0, GeometryInfo::faces_per_cell)); + if (sub_no == static_cast (-1)) + offset = face_no * quadrature_points.size(); + else + { + Assert (sub_no+1 < GeometryInfo::subfaces_per_face+1, + ExcIndexRange (sub_no, 0, GeometryInfo::subfaces_per_face)); + offset = (face_no * GeometryInfo::subfaces_per_face + sub_no) + * quadrature_points.size(); + } + } + + // Compute start point and sizes along axes. + // Strange vertex numbering makes this complicated again. + + Point start = cell->vertex (0); + + switch (dim) + { + case 1: + data.length[0] = cell->vertex(1)(0) - start(0); + break; + case 2: + data.length[0] = cell->vertex(1)(0) - start(0); + data.length[1] = cell->vertex(3)(1) - start(1); + break; + case 3: + data.length[0] = cell->vertex(1)(0) - start(0); + data.length[1] = cell->vertex(4)(1) - start(1); + data.length[2] = cell->vertex(3)(2) - start(2); + break; + default: + Assert(false, ExcNotImplemented()); + } + + + if (update_flags & update_q_points) + { + Assert (quadrature_points.size() == npts, + ExcDimensionMismatch(quadrature_points.size(), npts)); + for (unsigned int i=0;i p = start; + for (unsigned int d=0;d n; + switch (100*dim+face_no) + { + // 2D + case 200: + n (1) = -1.; + break; + case 201: + n (0) = 1.; + break; + case 202: + n (1) = 1.; + break; + case 203: + n (0) = 1.; + break; + // 3D + case 300: + n (1) = -1.; + break; + case 301: + n (1) = 1.; + break; + case 302: + n (2) = -1.; + break; + case 303: + n (0) = 1.; + break; + case 304: + n (2) = 1.; + break; + case 305: + n (0) = -1.; + break; + default: + Assert (false, ExcInternalError()); + } + for (unsigned int i=0;i +void +MappingCartesian::fill_fe_values (const DoFHandler::cell_iterator& cell, + const Quadrature& q, + Mapping::InternalDataBase& mapping_data, + std::vector >& quadrature_points, + std::vector& JxW_values) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + typename std::vector > dummy; + + compute_fill (cell, static_cast (-1), static_cast (-1), + data, + quadrature_points, + dummy); + + if (data.current_update_flags() & update_JxW_values) + { + double J = data.length[0]; + for (unsigned int d=1;d +void +MappingCartesian::fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + compute_fill (cell, face_no, static_cast (-1), + data, + quadrature_points, + normal_vectors); + + double J = 1.; + for (unsigned int d=0;d +void +MappingCartesian::fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + compute_fill (cell, face_no, sub_no, + data, + quadrature_points, + normal_vectors); + + double J = 1.; + for (unsigned int d=0;d::subfaces_per_face; + } + + if (data.current_update_flags() & update_boundary_forms) + { + for (unsigned int i=0; i +void +MappingCartesian<1>::fill_fe_face_values (const DoFHandler<1>::cell_iterator &, + const unsigned, + const Quadrature<0>&, + Mapping<1>::InternalDataBase&, + std::vector >&, + std::vector&, + std::vector >&, + std::vector >&) const +{ + Assert(false, ExcNotImplemented()); +} + + +template <> +void +MappingCartesian<1>::fill_fe_subface_values (const DoFHandler<1>::cell_iterator &, + const unsigned, + const unsigned, + const Quadrature<0>&, + Mapping<1>::InternalDataBase&, + std::vector >&, + std::vector&, + std::vector >&, + std::vector >&) const +{ + Assert(false, ExcNotImplemented()); +} +#endif + + +template +void +MappingCartesian::transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + covariant_transformation(dst, src, mapping_data, src_offset); +} + + +template +void +MappingCartesian::transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + covariant_transformation(dst, src, mapping_data, src_offset); +} + +template +void +MappingCartesian::transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + contravariant_transformation(dst, src, mapping_data, src_offset); +} + + +template +void +MappingCartesian::transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + contravariant_transformation(dst, src, mapping_data, src_offset); +} + + + +template +Point MappingCartesian::transform_unit_to_real_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p, + const typename Mapping::InternalDataBase *const m_data) const +{ + // If m_data!=0 use this + // InternalData. + // + // Otherwise use the get_data + // function to create an + // InternalData with data vectors + // already of the right size; And + // compute shape values and mapping + // support points. + // + // Let, at the end, mdata be a + // pointer to the given or the new + // created InternalData + const InternalData *mdata; + if (m_data==0) + { + static Point dummy_p; + static Quadrature dummy_quadrature(dummy_p); + mdata=dynamic_cast (get_data(update_default, + dummy_quadrature)); + } + else + mdata = dynamic_cast (m_data); + Assert(mdata!=0, ExcInternalError()); + + // use now the InternalData, that + // mdata is pointing to, to compute + // the point in real space. + Point p_real = cell->vertex(0); + for (unsigned int d=0;dlength[d]*p(d); + return p_real; +} + + + +template +Point MappingCartesian::transform_real_to_unit_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p) const +{ + const Point& start = cell->vertex (0); + Point real = p; + real -= start; + + switch (dim) + { + case 1: + real(0) /= cell->vertex(1)(0) - start(0); + break; + case 2: + real(0) /= cell->vertex(1)(0) - start(0); + real(1) /= cell->vertex(3)(1) - start(1); + break; + case 3: + real(0) /= cell->vertex(1)(0) - start(0); + real(1) /= cell->vertex(4)(1) - start(1); + real(2) /= cell->vertex(3)(2) - start(2); + break; + default: + Assert(false, ExcNotImplemented()); + } + return real; +} + + + +template +template +inline +void +MappingCartesian::contravariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + Assert(tensor_::dimension==dim && tensor_::rank==1, ExcInvalidData()); + const InternalData* data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + const InternalData &data=*data_ptr; + + Assert (data.update_flags & update_contravariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); + + typename std::vector::const_iterator vec = src.begin() + src_offset; + typename std::vector::iterator result = dst.begin(); + typename std::vector::const_iterator end = dst.end(); + + while (result!=end) + { + for (unsigned int d=0;d +template +inline +void +MappingCartesian::covariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + Assert(tensor_::dimension==dim && tensor_::rank==1, ExcInvalidData()); + const InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + const InternalData &data=*data_ptr; + + Assert (data.update_flags & update_covariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); + + typename std::vector::const_iterator vec = src.begin() + src_offset; + typename std::vector::iterator result = dst.begin(); + typename std::vector::const_iterator end = dst.end(); + + while (result!=end) + { + for (unsigned int d=0;d; + +template void MappingCartesian::contravariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingCartesian::contravariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingCartesian::covariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingCartesian::covariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + diff --git a/deal.II/deal.II/source/fe/mapping_q.cc b/deal.II/deal.II/source/fe/mapping_q.cc index e69de29bb2..1ce7839043 100644 --- a/deal.II/deal.II/source/fe/mapping_q.cc +++ b/deal.II/deal.II/source/fe/mapping_q.cc @@ -0,0 +1,1185 @@ +//---------------------------- mapping_q.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- mapping_q.cc --------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + + +template +MappingQ::InternalData::InternalData (unsigned int n_shape_functions): + MappingQ1::InternalData(n_shape_functions), + use_mapping_q1_on_current_cell(false), + mapping_q1_data(1 << dim) +{ + is_mapping_q1_data=false; +} + + +#if deal_II_dimension == 1 + +template<> +MappingQ<1>::MappingQ (unsigned int): + laplace_on_quad_vector(0), + laplace_on_hex_vector(0), + degree(1), + n_inner(0), + n_outer(0), + polynomials(0), + tensor_pols(0), + n_shape_functions(2), + renumber(0), + alternative_normals_computation(false), + use_mapping_q_on_all_cells(false) +{} + + +template<> +MappingQ<1>::~MappingQ () +{} + +#endif + + + +template static +number power(number x, unsigned int y) +{ + number value=1; + for (unsigned int i=0; i +MappingQ::MappingQ (unsigned int p): + laplace_on_quad_vector(0), + laplace_on_hex_vector(0), + degree(p), + n_inner(power(degree-1, dim)), + n_outer((dim==2) ? 4+4*(degree-1) + :8+12*(degree-1)+6*(degree-1)*(degree-1)), + polynomials(p+1), + tensor_pols(0), + n_shape_functions(0), + renumber(0), + alternative_normals_computation(false), + use_mapping_q_on_all_cells(false) +{ + // Construct the tensor product + // polynomials used as shape + // functions for the Qp mapping of + // cells at the boundary. + std::vector > > pol_pointers(p+1); + for (unsigned int i=0; i<=p; ++i) + { + LagrangeEquidistant lagrange_pol(p, i); + polynomials[i] = lagrange_pol; + pol_pointers[i] = &(polynomials[i]); + } + tensor_pols = new TensorProductPolynomials (pol_pointers); + n_shape_functions=tensor_pols->n_tensor_product_polynomials(); + Assert(n_inner+n_outer==n_shape_functions, ExcInternalError()); + + // build the renumbering of the + // shape functions of the Qp + // mapping. + renumber.resize(n_shape_functions,0); + std::vector dpo(dim+1, 1); + for (unsigned int i=1; i fe_data(dpo, 1); + FE_Q::build_renumbering (fe_data, p, renumber); + + // build laplace_on_quad_vector + if (degree>1) + { + set_laplace_on_quad_vector(laplace_on_quad_vector); + if (dim==3) + set_laplace_on_hex_vector(laplace_on_hex_vector); + } +} + + +template +MappingQ::~MappingQ () +{ + delete tensor_pols; +} + + + +#if deal_II_dimension == 1 + +template<> +void +MappingQ<1>::compute_shapes_virtual (const std::vector > &unit_points, + MappingQ1<1>::InternalData &data) const +{ + MappingQ1<1>::compute_shapes_virtual(unit_points, data); +} + +#endif + + + +template +void +MappingQ::compute_shapes_virtual (const std::vector > &unit_points, + MappingQ1::InternalData &data) const +{ + + const unsigned int n_points=unit_points.size(); + std::vector values; + std::vector > grads; + if (data.shape_values.size()!=0) + { + Assert(data.shape_values.size()==n_shape_functions*n_points, + ExcInternalError()); + values.resize(n_shape_functions); + } + if (data.shape_derivatives.size()!=0) + { + Assert(data.shape_derivatives.size()==n_shape_functions*n_points, + ExcInternalError()); + grads.resize(n_shape_functions); + } + + // dummy variable of size 0 + std::vector > grad2; + + + if (data.shape_values.size()!=0 || data.shape_derivatives.size()!=0) + for (unsigned int point=0; pointcompute(unit_points[point], values, grads, grad2); + + if (data.shape_values.size()!=0) + for (unsigned int i=0; i +UpdateFlags +MappingQ::update_each (const UpdateFlags in) const +{ + UpdateFlags out=MappingQ1::update_each(in); + + if (in & update_normal_vectors) + if (alternative_normals_computation) + out |= update_covariant_transformation; + + return out; +} + + +template +Mapping::InternalDataBase* +MappingQ::get_data (const UpdateFlags update_flags, + const Quadrature &quadrature) const +{ + InternalData *data = new InternalData(n_shape_functions); + compute_data (update_flags, quadrature, + quadrature.n_quadrature_points, *data); + if (!use_mapping_q_on_all_cells) + compute_data (update_flags, quadrature, + quadrature.n_quadrature_points, data->mapping_q1_data); + return data; +} + + + +template +Mapping::InternalDataBase* +MappingQ::get_face_data (const UpdateFlags update_flags, + const Quadrature& quadrature) const +{ + InternalData *data = new InternalData(n_shape_functions); + QProjector q (quadrature, false); + compute_face_data (update_flags, q, + quadrature.n_quadrature_points, *data); + if (!use_mapping_q_on_all_cells) + MappingQ1::compute_face_data (update_flags, q, + quadrature.n_quadrature_points, + data->mapping_q1_data); + + return data; +} + + + +template +Mapping::InternalDataBase* +MappingQ::get_subface_data (const UpdateFlags update_flags, + const Quadrature& quadrature) const +{ + InternalData *data = new InternalData(n_shape_functions); + QProjector q (quadrature, true); + compute_face_data (update_flags, q, + quadrature.n_quadrature_points, *data); + if (!use_mapping_q_on_all_cells) + MappingQ1::compute_face_data (update_flags, q, + quadrature.n_quadrature_points, + data->mapping_q1_data); + + return data; +} + + + +template +void +MappingQ::compute_face_data (UpdateFlags update_flags, + const Quadrature& q, + const unsigned int n_original_q_points, + MappingQ1::InternalData& mapping_q1_data) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_q1_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + MappingQ1::compute_face_data(update_flags, q, + n_original_q_points, data); + +#if (deal_II_dimension>1) + if ((data.update_flags & update_normal_vectors) + && alternative_normals_computation) + { + const unsigned int nfaces = GeometryInfo::faces_per_cell; + data.unit_normals.resize(nfaces); + std::vector > n(nfaces); + if (dim==2) + { + n[0][1]=-1; + n[1][0]=1; + n[2][1]=1; + n[3][0]=-1; + } + else if (dim==3) + { + n[0][1]=-1; + n[1][1]=1; + n[2][2]=-1; + n[3][0]=1; + n[4][2]=1; + n[5][0]=-1; + } + else + Assert(false, ExcNotImplemented()); + + for (unsigned int i=0; i +void +MappingQ::fill_fe_values (const DoFHandler::cell_iterator &cell, + const Quadrature &q, + Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + data.use_mapping_q1_on_current_cell=!(use_mapping_q_on_all_cells + || cell->has_boundary_lines()); + + if (data.use_mapping_q1_on_current_cell) + MappingQ1::fill_fe_values(cell, q, data.mapping_q1_data, + quadrature_points, JxW_values); + else + MappingQ1::fill_fe_values(cell, q, data, + quadrature_points, JxW_values); +} + + +template +void +MappingQ::fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &exterior_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + data.use_mapping_q1_on_current_cell=!(use_mapping_q_on_all_cells + || cell->has_boundary_lines()); + + const unsigned int npts=q.n_quadrature_points; + const unsigned int offset=face_no*npts; + + if (data.use_mapping_q1_on_current_cell) + MappingQ1::compute_fill_face (cell, face_no, false, + npts, offset, q.get_weights(), + data.mapping_q1_data, + quadrature_points, JxW_values, + exterior_forms, normal_vectors); + else + compute_fill_face (cell, face_no, false, + npts, offset, q.get_weights(), + data, + quadrature_points, JxW_values, + exterior_forms, normal_vectors); +} + + +template +void +MappingQ::fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &exterior_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + data.use_mapping_q1_on_current_cell=!(use_mapping_q_on_all_cells + || cell->has_boundary_lines()); + + const unsigned int npts=q.n_quadrature_points; + const unsigned int offset= + (face_no*GeometryInfo::subfaces_per_face + sub_no)*npts; + + if (data.use_mapping_q1_on_current_cell) + MappingQ1::compute_fill_face (cell, face_no, true, + npts, offset, q.get_weights(), + data.mapping_q1_data, + quadrature_points, JxW_values, + exterior_forms, normal_vectors); + else + compute_fill_face (cell, face_no, true, + npts, offset, q.get_weights(), + data, + quadrature_points, JxW_values, + exterior_forms, normal_vectors); +} + + +#if deal_II_dimension==1 + +template <> +void +MappingQ<1>::set_laplace_on_quad_vector(std::vector > &) const +{ + Assert(false, ExcInternalError()); +} + +#else + +template +void +MappingQ::set_laplace_on_quad_vector(std::vector > &loqvs) const +{ + Assert(degree>1, ExcInternalError()); + const unsigned int n_inner_2d=(degree-1)*(degree-1); + const unsigned int n_outer_2d=4+4*(degree-1); + + double const *loqv_ptr=0; + if (degree==2) + { + static const double loqv2[1*8] + ={1/16., 1/16., 1/16., 1/16., 3/16., 3/16., 3/16., 3/16.}; + loqv_ptr=&loqv2[0]; + } + else if (degree==3) + { + static double loqv3[4*12] + ={80/1053., 1/81., 11/1053., 1/81., 25/117., 44/351., + 7/117., 16/351., 7/117., 16/351., 25/117., 44/351., + 1/81., 80/1053., 1/81., 11/1053., 44/351., 25/117., + 25/117., 44/351., 16/351., 7/117., 7/117., 16/351., + 1/81., 11/1053., 1/81., 80/1053., 7/117., 16/351., + 16/351., 7/117., 25/117., 44/351., 44/351., 25/117., + 11/1053., 1/81., 80/1053., 1/81., 16/351., 7/117., + 44/351., 25/117., 44/351., 25/117., 16/351., 7/117.}; + + loqv_ptr=&loqv3[0]; + } + + if (loqv_ptr!=0) + { + loqvs.resize(n_inner_2d); + for (unsigned int unit_point=0; unit_point &loqv=loqvs[unit_point]; + for (unsigned int k=0; k +UpdateFlags +MappingQ1::update_each (const UpdateFlags in) const +{ + // Select flags of concern for the + // transformation. + UpdateFlags out = UpdateFlags(in & (update_q_points + | update_covariant_transformation + | update_contravariant_transformation + | update_JxW_values + | update_boundary_forms + | update_normal_vectors)); + + // cerr << "Mapping-each " << hex << in << ' ' << out; + + if (in & update_normal_vectors) + out |= update_boundary_forms; + + if (in & (update_covariant_transformation + | update_JxW_values + | update_boundary_forms + | update_normal_vectors)) + out |= update_contravariant_transformation; + + // cerr << " " << hex << out << dec << endl; + + return out; +} + + +template +void +MappingQ1::compute_data (const UpdateFlags update_flags, + const Quadrature& q, + const unsigned int n_original_q_points, + InternalData& data) const +{ + const unsigned int npts = q.n_quadrature_points; + + data.update_once = update_once(update_flags); + data.update_each = update_each(update_flags); + data.update_flags = data.update_once | data.update_each; + + const UpdateFlags flags(data.update_flags); + + // cerr << "Data: " << hex << flags << dec << endl; + + if (flags & update_transformation_values) + data.shape_values.resize(data.n_shape_functions * npts); + + if (flags & update_transformation_gradients) + data.shape_derivatives.resize(data.n_shape_functions * npts); + + if (flags & update_covariant_transformation) + data.covariant.resize(n_original_q_points); + + if (flags & update_contravariant_transformation) + data.contravariant.resize(n_original_q_points); + + compute_shapes (q.get_points(), data); +} + + +template +Mapping::InternalDataBase* +MappingQ1::get_data (const UpdateFlags update_flags, + const Quadrature& q) const +{ + InternalData* data = new InternalData(n_shape_functions); + compute_data (update_flags, q, q.n_quadrature_points, *data); + return data; +} + + +template +void +MappingQ1::compute_face_data (UpdateFlags update_flags, + const Quadrature& q, + const unsigned int n_original_q_points, + InternalData& data) const +{ + if (update_flags & update_JxW_values) + update_flags |= update_boundary_forms; + + compute_data (update_flags, q, n_original_q_points, data); + +#if (deal_II_dimension>1) + if (data.update_flags & update_boundary_forms) + { + data.aux.resize(dim-1); + for (unsigned int i=0;i::faces_per_cell; + data.unit_tangentials.resize(nfaces*(dim-1)); + for (unsigned int i=0;i tangential; + tangential[(nindex+1)%dim] = (normal_directions[i]%2) ? -1 : 1; + data.unit_tangentials[i].resize(n_original_q_points); + fill (data.unit_tangentials[i].begin(), + data.unit_tangentials[i].end(), + tangential); + + if (dim>2) + { + // Second tangential + // has a non-zero in + // component (i-1)%dim, + // if normal is + // non-zero in + // i. Creates a + // right-handed system. + Tensor<1,dim> tangential; + tangential[(nindex-1)%dim] = 1.; + data.unit_tangentials[i+nfaces].resize(n_original_q_points); + fill (data.unit_tangentials[i+nfaces].begin(), + data.unit_tangentials[i+nfaces].end(), + tangential); + } + } + } +#endif +} + + + +template +Mapping::InternalDataBase* +MappingQ1::get_face_data (const UpdateFlags update_flags, + const Quadrature& quadrature) const +{ + InternalData* data = new InternalData(n_shape_functions); + QProjector q (quadrature, false); + compute_face_data (update_flags, q, quadrature.n_quadrature_points, *data); + + return data; +} + + + +template +Mapping::InternalDataBase* +MappingQ1::get_subface_data (const UpdateFlags update_flags, + const Quadrature& quadrature) const +{ + InternalData* data = new InternalData(n_shape_functions); + QProjector q (quadrature, true); + compute_face_data (update_flags, q, quadrature.n_quadrature_points, *data); + + return data; +} + + + + +template +void +MappingQ1::compute_fill (const typename DoFHandler::cell_iterator &cell, + const unsigned int npts, + const unsigned int offset, + InternalData &data, + std::vector > &quadrature_points) const +{ + const UpdateFlags update_flags(data.current_update_flags()); + + if (update_flags & update_q_points) + { + Assert (quadrature_points.size() == npts, + ExcDimensionMismatch(quadrature_points.size(), npts)); + fill(quadrature_points.begin(), + quadrature_points.end(), + Point()); + } + + if (update_flags & update_covariant_transformation) + { + Assert (data.covariant.size() == npts, + ExcDimensionMismatch(data.covariant.size(), npts)); + } + + if (update_flags & update_contravariant_transformation) + { + Assert (data.contravariant.size() == npts, + ExcDimensionMismatch(data.contravariant.size(), npts)); + fill(data.contravariant.begin(), + data.contravariant.end(), + Tensor<2,dim>()); + } + + if (update_flags & update_jacobian_grads) + { + Assert(false, ExcNotImplemented()); +// Assert (covariant_grads.size () == npts, +// ExcDimensionMismatch(covariant_grads.size(), npts)); + } + + std::vector > &a=data.mapping_support_points; + + // store all Lagrangian + // support points in a + if (a.size()==0 + || (&cell->get_triangulation() != + &data.cell_of_current_support_points->get_triangulation()) + || (cell!=data.cell_of_current_support_points)) + { + compute_mapping_support_points(cell, a); + data.cell_of_current_support_points=cell; + } + + for (unsigned int point=0; point +void +MappingQ1::compute_mapping_support_points( + const typename Triangulation::cell_iterator &cell, + std::vector > &a) const +{ + a.resize(GeometryInfo::vertices_per_cell); + + for (unsigned int i=0; i::vertices_per_cell; ++i) + a[i] = cell->vertex(vertex_mapping[i]); +} + + + +template +void +MappingQ1::fill_fe_values (const DoFHandler::cell_iterator &cell, + const Quadrature &q, + Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + const unsigned int npts=q.n_quadrature_points; + + compute_fill (cell, + npts, + 0, + data, + quadrature_points); + + + const UpdateFlags update_flags(data.current_update_flags()); + const std::vector &weights=q.get_weights(); + + // Multiply quadrature weights + // by Jaconian determinants + //TODO: compute Jacobi determinants directly, if co/contravariant is not needed + if (update_flags & update_JxW_values) + { + Assert (JxW_values.size() == npts, + ExcDimensionMismatch(JxW_values.size(), npts)); + for (unsigned int point=0; point +void +MappingQ1::compute_fill_face (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const bool is_subface, + const unsigned int npts, + const unsigned int offset, + const std::vector &weights, + InternalData &data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_forms, + std::vector > &normal_vectors) const +{ + compute_fill (cell, + npts, + offset, + data, + quadrature_points); + + const UpdateFlags update_flags(data.current_update_flags()); + + if (update_flags & update_boundary_forms) + { + Assert (boundary_forms.size()==npts, + ExcDimensionMismatch(boundary_forms.size(), npts)); + if (update_flags & update_normal_vectors) + Assert (normal_vectors.size()==npts, + ExcDimensionMismatch(normal_vectors.size(), npts)); + if (update_flags & update_JxW_values) + Assert (JxW_values.size() == npts, + ExcDimensionMismatch(JxW_values.size(), npts)); + + + transform_contravariant(data.aux[0], + data.unit_tangentials[face_no], + data, 0); + + typename std::vector >::iterator + result = boundary_forms.begin(); + typename std::vector >::const_iterator + end = boundary_forms.end(); + typename std::vector >::const_iterator + tang1 = data.aux[0].begin(); + + switch (dim) + { + case 2: + { + for (; result != end; ++result, ++tang1) + cross_product (*result, *tang1); + break; + }; + + case 3: + { + transform_contravariant(data.aux[1], + data.unit_tangentials[ + face_no+GeometryInfo::faces_per_cell], + data, 0); + typename std::vector >::const_iterator + tang2 = data.aux[1].begin(); + for (;result != end; ++result, ++tang1, ++tang2) + cross_product (*result, *tang1, *tang2); + break; + }; + + default: + Assert(false, ExcNotImplemented()); + } + + if (update_flags & (update_normal_vectors + | update_JxW_values)) + for (unsigned int i=0;i::subfaces_per_face; + } + if (update_flags & update_normal_vectors) + { + normal_vectors[i] = boundary_forms[i]; + normal_vectors[i] /= f; + } + } + } +} + + +template +void +MappingQ1::fill_fe_face_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + const unsigned int npts=q.n_quadrature_points; + const unsigned int offset=face_no*npts; + + compute_fill_face (cell, face_no, false, + npts, + offset, + q.get_weights(), + data, + quadrature_points, + JxW_values, + boundary_forms, + normal_vectors); +} + + +template +void +MappingQ1::fill_fe_subface_values (const typename DoFHandler::cell_iterator &cell, + const unsigned int face_no, + const unsigned int sub_no, + const Quadrature &q, + typename Mapping::InternalDataBase &mapping_data, + std::vector > &quadrature_points, + std::vector &JxW_values, + std::vector > &boundary_forms, + std::vector > &normal_vectors) const +{ + InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + InternalData &data=*data_ptr; + + const unsigned int npts=q.n_quadrature_points; + const unsigned int offset= + (face_no*GeometryInfo::subfaces_per_face + sub_no)*npts; + + compute_fill_face (cell, face_no, true, + npts, + offset, + q.get_weights(), + data, + quadrature_points, + JxW_values, + boundary_forms, + normal_vectors); +} + + +#if (deal_II_dimension == 1) + +template <> +void +MappingQ1<1>::compute_fill_face (const DoFHandler<1>::cell_iterator &, + const unsigned int, + const bool, + const unsigned int, + const unsigned int, + const std::vector &, + InternalData &, + std::vector > &, + std::vector &, + std::vector > &, + std::vector > &) const +{ + Assert(false, ExcNotImplemented()); +} + + +template <> +void +MappingQ1<1>::fill_fe_face_values (const DoFHandler<1>::cell_iterator &, + const unsigned, + const Quadrature<0>&, + Mapping<1>::InternalDataBase&, + std::vector >&, + std::vector&, + std::vector >&, + std::vector >&) const +{ + Assert(false, ExcNotImplemented()); +} + + +template <> +void +MappingQ1<1>::fill_fe_subface_values (const DoFHandler<1>::cell_iterator &, + const unsigned, + const unsigned, + const Quadrature<0>&, + Mapping<1>::InternalDataBase&, + std::vector >&, + std::vector&, + std::vector >&, + std::vector >&) const +{ + Assert(false, ExcNotImplemented()); +} +#endif + + +template +void +MappingQ1::transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + covariant_transformation(dst, src, mapping_data, src_offset); +} + + +template +void +MappingQ1::transform_covariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + covariant_transformation(dst, src, mapping_data, src_offset); +} + +template +void +MappingQ1::transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + contravariant_transformation(dst, src, mapping_data, src_offset); +} + + +template +void +MappingQ1::transform_contravariant (std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + contravariant_transformation(dst, src, mapping_data, src_offset); +} + + + +template +Point MappingQ1::transform_unit_to_real_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p, + const typename Mapping::InternalDataBase *const m_data) const +{ + // If m_data!=0 use this + // InternalData. + // + // Otherwise use the get_data + // function to create an + // InternalData with data vectors + // already of the right size; And + // compute shape values and mapping + // support points. + // + // Let, at the end, mdata be a + // pointer to the given or the new + // created InternalData + const InternalData *mdata; + InternalData *mdata_local=0; + if (m_data==0) + { + static Point dummy_p; + static Quadrature dummy_quadrature(dummy_p); + mdata_local=dynamic_cast (get_data(update_transformation_values, + dummy_quadrature)); + Assert(mdata_local!=0, ExcInternalError()); + + compute_shapes(std::vector > (1, p), *mdata_local); + + compute_mapping_support_points(cell, mdata_local->mapping_support_points); + + mdata=mdata_local; + } + else + mdata = dynamic_cast (m_data); + Assert(mdata!=0, ExcInternalError()); + + // use now the InternalData, that + // mdata is pointing to, to compute + // the point in real space. + Point p_real; + for (unsigned int i=0; imapping_support_points.size(); ++i) + p_real+=mdata->mapping_support_points[i] * mdata->shape(0,i); + + if (m_data==0) + delete mdata_local; + return p_real; +} + + + +template +Point MappingQ1::transform_real_to_unit_cell ( + const typename Triangulation::cell_iterator cell, + const Point &p) const +{ + // Use the get_data + // function to create an + // InternalData with data vectors + // already of the right size. + static Point dummy_p; + static Quadrature dummy_quadrature(dummy_p); + Quadrature dummy_q(Point()); + InternalData *mdata= + dynamic_cast (get_data(update_transformation_values + | update_transformation_gradients, + dummy_quadrature)); + Assert(mdata!=0, ExcInternalError()); + + // compute the mapping support + // points + std::vector > &points=mdata->mapping_support_points; + compute_mapping_support_points(cell, points); + + // Newton iteration to solve + // f(x)=p(x)-p=0 + // x_{n+1}=x_n-[f'(x)]^{-1}f(x) + + // Let the start value be the + // center of the unit cell + // (p_unit stands for x) + Point p_unit; + for (unsigned int i=0; i > (1, p_unit), *mdata); + + // f(x) + Point p_real(transform_unit_to_real_cell(cell, p_unit, mdata)); + Point f = p_real-p; + + const double eps=1e-15*cell->diameter(); + unsigned int loop=0; + while (f.square()>eps*eps && loop++<10) + { + // f'(x) + Tensor<2,dim> df; + for (unsigned int k=0; kn_shape_functions; ++k) + { + const Tensor<1,dim> &grad_transform=mdata->derivative(0,k); + const Point &point=points[k]; + + for (unsigned int i=0; i d; + Tensor<2,dim> df_1; + + df_1 = invert(df); + contract (d, df_1, f); + + // update of p_unit + p_unit -= d; + // shape values and derivatives + // at new p_unit point + compute_shapes(std::vector > (1, p_unit), *mdata); + + // f(x) + p_real=transform_unit_to_real_cell(cell, p_unit, mdata); + f = p_real-p; + } + + return p_unit; +} + + + +template +template +inline +void +MappingQ1::contravariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + Assert(tensor_::dimension==dim && tensor_::rank==1, ExcInvalidData()); + const InternalData* data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + const InternalData &data=*data_ptr; + + Assert (data.update_flags & update_contravariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); + + Assert (src.size() + src_offset >= data.contravariant.size(), + ExcDimensionMismatch(src.size(), data.contravariant.size())); + Assert (dst.size() == data.contravariant.size(), + ExcDimensionMismatch(dst.size(), data.contravariant.size())); + + typename std::vector::const_iterator vec = src.begin()+src_offset; + typename std::vector >::const_iterator tensor = data.contravariant.begin(); + typename std::vector::iterator result = dst.begin(); + typename std::vector::const_iterator end = dst.end(); + + while (result!=end) + { + contract (*(result++), *(tensor++), *(vec++)); + } +} + + +template +template +inline +void +MappingQ1::covariant_transformation (std::vector &dst, + const std::vector &src, + const Mapping::InternalDataBase &mapping_data, + const unsigned int src_offset) const +{ + Assert(tensor_::dimension==dim && tensor_::rank==1, ExcInvalidData()); + const InternalData *data_ptr = dynamic_cast (&mapping_data); + Assert(data_ptr!=0, ExcInternalError()); + const InternalData &data=*data_ptr; + + Assert (data.update_flags & update_covariant_transformation, + typename FEValuesBase::ExcAccessToUninitializedField()); + + Assert (src.size() + src_offset >= data.contravariant.size(), + ExcDimensionMismatch(src.size() + src_offset, data.contravariant.size())); + Assert (dst.size() == data.contravariant.size(), + ExcDimensionMismatch(dst.size() + src_offset, data.contravariant.size())); + + typename std::vector::const_iterator vec = src.begin() + src_offset; + typename std::vector >::const_iterator tensor = data.covariant.begin(); + typename std::vector::iterator result = dst.begin(); + typename std::vector::const_iterator end = dst.end(); + + while (result!=end) + { + contract (*(result++), *(vec++), *(tensor++)); + } +} + + + +//----------------------------------------------------------------------// + +template class MappingQ1; + +template void MappingQ1::contravariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingQ1::contravariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingQ1::covariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + +template void MappingQ1::covariant_transformation ( + std::vector > &dst, + const std::vector > &src, + const Mapping::InternalDataBase& internal, + const unsigned int src_offset) const; + diff --git a/deal.II/deal.II/source/fe/mat_dgq.1 b/deal.II/deal.II/source/fe/mat_dgq.1 index e69de29bb2..2470f44980 100644 --- a/deal.II/deal.II/source/fe/mat_dgq.1 +++ b/deal.II/deal.II/source/fe/mat_dgq.1 @@ -0,0 +1,141 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + +static double dgq0_into_dgq0_refined[] = +{ + 1., 1. +}; + +static double dgq1_into_dgq1_refined[] = +{ + 1., 0., + 13.5/27., 13.5/27., +}; + +static double dgq2_into_dgq2_refined[] = +{ + 1., 0., 0., + 10.125/27., 20.25/27., -3.375/27., + 0., 1., 0., +}; + +static double dgq3_into_dgq3_refined[] = +{ + 1., 0., 0., 0., + 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., + 0., 1., 0., 0., + -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., +}; + +static double dgq4_into_dgq4_refined[] = +{ + 1., 0., 0., 0., 0., + 7.3828125/27., 29.53125/27., -14.765625/27., 5.90625/27., -1.0546875/27., + 0., 1., 0., 0., 0., + -1.0546875/27., 12.65625/27., 18.984375/27., -4.21875/27., 0.6328125/27., + 0., -2.91892343e-13/27., 1., 0., 0., +}; + +static double * embedding[] = +{ + dgq0_into_dgq0_refined, + dgq1_into_dgq1_refined, + dgq2_into_dgq2_refined, + dgq3_into_dgq3_refined, + dgq4_into_dgq4_refined, + 0,0,0,0,0,0 +}; + + +static double dgq0_refined_onto_dgq0[] = +{ + 0.5, +}; + +static double dgq1_refined_onto_dgq1[] = +{ + 0.75, 0.5, + -0.25, 0, +}; + +static double dgq2_refined_onto_dgq2[] = +{ + 0.6875, 0.75, -0.1875, + -0.09375, 0.375, 0.21875, + 0.1875, -0.25, -0.1875, +}; +static double dgq3_refined_onto_dgq3[] = +{ + 0.6875, 0.9375, -0.75, -0.0625, + -0.055555556, 0.24305556, 0.61805556, 0.12268519, + 0.034722222, -0.11805556, 0.069444444, 0.085648148, + -0.125, 0.1875, 0.1875, -0.0625, +}; + +static double dgq4_refined_onto_dgq4[] = +{ + 0.72569444, 0.97222222, -1.0416667, 0.13888889, 0.017361111, + -0.068223741, 0.30056424, 0.52115885, 0.28103299, 0.031873915, + 0.01953125, -0.052083333, -0.078125, 0.46875, 0.14192708, + -0.0074598524, 0.036675347, -0.030924479, -0.066189236, 0.0014919705, + 0.086805556, -0.13888889, -0.20833333, 0.36111111, 0.086805556, +}; + +static double dgq5_refined_onto_dgq5[] = +{ + 0.76529948, 0.96028646, -1.2858073, 0.42317708, 0.18717448, 0.10611979, + -0.064940104, 0.29386458, 0.53121354, 0.25160417, 0.056143229, -0.012855417, + 0.036778646, -0.14359896, 0.12031771, 0.22294792, 0.53740365, 0.10436104, + -0.0056692708, 0.022895833, 0.012755208, -0.16279167, 0.17783073, 0.076769167, + -0.0047838542, 0.0020989583, 0.018526042, 0.016885417, -0.070075521, -0.017681042, + -0.071940104, 0.16276042, 0.081380208, -0.32552083, -0.040690104, 0.037760417, +}; + +static double dgq6_refined_onto_dgq6[] = +{ + 0.79257813, 0.984375, -1.6734375, 1.09375, -0.17226562, 0.196875, -0.065625, + -0.056868389, 0.26796875, 0.56824544, 0.18953832, 0.14839681, -0.089322917, -0.019566816, + 0.03079829, -0.109375, 0.018229167, 0.41571502, 0.32044271, 0.328125, 0.038888889, + -0.01965332, 0.0984375, -0.16918945, 0.109375, -0.1307373, 0.4921875, 0.11958008, + -0.0025543338, -0.003125, 0.025520833, 0.0084619342, -0.081119792, -0.0072916667, 0.017283951, + 0.010613285, -0.02734375, 0.00079752604, 0.016814558, 0.058162435, -0.04921875, -0.018216508, + 0.062890625, -0.196875, 0.0984375, 0.13125, 0.12304687, -0.309375, -0.065625, +}; + +static double dgq7_refined_onto_dgq7[] = +{ + 0.81508102, 1.0095262, -2.1220573, 2.1159252, -1.1456019, 0.72957682, -0.50176794, -0.037400897, + -0.048702752, 0.24752223, 0.56041891, 0.24320734, 0.11116474, -0.063333627, -0.094508404, -0.012366406, + 0.028512974, -0.11272486, 0.058287533, 0.34450213, 0.37238149, 0.28423557, 0.10277054, 0.00045127394, + -0.01556376, 0.056866734, 0.0023941134, -0.26908091, 0.36033153, 0.082017998, 0.54686868, 0.092819904, + 0.0063367825, -0.046119071, 0.12266792, -0.15184748, 0.13891781, -0.23206465, 0.23358346, 0.071870952, + 0.0077008445, -0.01866856, -0.01883456, 0.072907425, -0.023311084, -0.0010966409, -0.086150953, -0.010963118, + -0.012439378, 0.040990099, -0.017439155, -0.050376157, 0.0042995099, 0.054999345, 0.038394855, -0.001831157, + -0.050934606, 0.18647931, -0.15057292, -0.1043873, -0.016304977, 0.28934245, 0.015028935, -0.031932147, +}; + +static double * projection_matrices[] = +{ + dgq0_refined_onto_dgq0, + dgq1_refined_onto_dgq1, + dgq2_refined_onto_dgq2, + dgq3_refined_onto_dgq3, + dgq4_refined_onto_dgq4, + dgq5_refined_onto_dgq5, + dgq6_refined_onto_dgq6, + dgq7_refined_onto_dgq7, + 0,0,0,0,0,0,0 +}; + diff --git a/deal.II/deal.II/source/fe/mat_dgq.2 b/deal.II/deal.II/source/fe/mat_dgq.2 index e69de29bb2..c9b378dca7 100644 --- a/deal.II/deal.II/source/fe/mat_dgq.2 +++ b/deal.II/deal.II/source/fe/mat_dgq.2 @@ -0,0 +1,350 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + +static double dgq0_into_dgq0_refined[] = +{ + 1., 1., 1., 1. +}; + +static double dgq1_into_dgq1_refined[] = +{ + 1., 0., 0., 0., + 13.5/27., 13.5/27., 0., 0., + 13.5/27., 0., 13.5/27., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., +}; + +static double dgq2_into_dgq2_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., + 10.125/27., 20.25/27., -3.375/27., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., + 10.125/27., 0., 0., 20.25/27., 0., 0., -3.375/27., 0., 0., + 3.796875/27., 7.59375/27., -1.265625/27., 7.59375/27., 15.1875/27., -2.53125/27., -1.265625/27., -2.53125/27., 0.421875/27., + 0., 10.125/27., 0., 0., 20.25/27., 0., 0., -3.375/27., 0., + 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 10.125/27., 20.25/27., -3.375/27., 0., 0., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., +}; + +static double dgq3_into_dgq3_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., + 2.63671875/27., 7.91015625/27., -2.63671875/27., 0.52734375/27., 7.91015625/27., 23.73046875/27., -7.91015625/27., 1.58203125/27., -2.63671875/27., -7.91015625/27., 2.63671875/27., -0.52734375/27., 0.52734375/27., 1.58203125/27., -0.52734375/27., 0.10546875/27., + 0., 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., + -0.52734375/27., 4.74609375/27., 4.74609375/27., -0.52734375/27., -1.58203125/27., 14.23828125/27., 14.23828125/27., -1.58203125/27., 0.52734375/27., -4.74609375/27., -4.74609375/27., 0.52734375/27., -0.10546875/27., 0.94921875/27., 0.94921875/27., -0.10546875/27., + 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., + -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., + 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., + 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., +}; + +static double dgq4_into_dgq4_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 7.3828125/27., 29.53125/27., -14.765625/27., 5.90625/27., -1.0546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.0546875/27., 12.65625/27., 18.984375/27., -4.21875/27., 0.6328125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -3.037621421e-13/27., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 7.3828125/27., 0., 0., 0., 0., 29.53125/27., 0., 0., 0., 0., -14.765625/27., 0., 0., 0., 0., 5.90625/27., 0., 0., 0., 0., -1.0546875/27., 0., 0., 0., 0., + 2.018737793/27., 8.074951172/27., -4.037475586/27., 1.614990234/27., -0.2883911133/27., 8.074951172/27., 32.29980469/27., -16.14990234/27., 6.459960937/27., -1.153564453/27., -4.037475586/27., -16.14990234/27., 8.074951172/27., -3.229980469/27., 0.5767822266/27., 1.614990234/27., 6.459960937/27., -3.229980469/27., 1.291992187/27., -0.2307128906/27., -0.2883911133/27., -1.153564453/27., 0.5767822266/27., -0.2307128906/27., 0.04119873047/27., + 0., 7.3828125/27., 0., 0., 0., 0., 29.53125/27., 0., 0., 0., 0., -14.765625/27., 0., 0., 0., 0., 5.90625/27., 0., 0., 0., 0., -1.0546875/27., 0., 0., 0., + -0.2883911133/27., 3.460693359/27., 5.191040039/27., -1.153564453/27., 0.173034668/27., -1.153564453/27., 13.84277344/27., 20.76416016/27., -4.614257813/27., 0.6921386719/27., 0.5767822266/27., -6.921386719/27., -10.38208008/27., 2.307128906/27., -0.3460693359/27., -0.2307128906/27., 2.768554687/27., 4.152832031/27., -0.9228515625/27., 0.1384277344/27., 0.04119873047/27., -0.4943847656/27., -0.7415771484/27., 0.1647949219/27., -0.02471923828/27., + 0., 0., 7.3828125/27., 0., 0., 0., -3.181519325e-13/27., 29.53125/27., 0., 0., 0., 1.601013025e-13/27., -14.765625/27., 0., 0., 0., 0., 5.90625/27., 0., 0., 0., 0., -1.0546875/27., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 7.3828125/27., 29.53125/27., -14.765625/27., 5.90625/27., -1.0546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -1.0546875/27., 12.65625/27., 18.984375/27., -4.21875/27., 0.6328125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., -2.837901725e-13/27., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.0546875/27., 0., 0., 0., 0., 12.65625/27., 0., 0., 0., 0., 18.984375/27., 0., 0., 0., 0., -4.21875/27., 0., 0., 0., 0., 0.6328125/27., 0., 0., 0., 0., + -0.2883911133/27., -1.153564453/27., 0.5767822266/27., -0.2307128906/27., 0.04119873047/27., 3.460693359/27., 13.84277344/27., -6.921386719/27., 2.768554687/27., -0.4943847656/27., 5.191040039/27., 20.76416016/27., -10.38208008/27., 4.152832031/27., -0.7415771484/27., -1.153564453/27., -4.614257813/27., 2.307128906/27., -0.9228515625/27., 0.1647949219/27., 0.173034668/27., 0.6921386719/27., -0.3460693359/27., 0.1384277344/27., -0.02471923828/27., + 0., -1.0546875/27., 0., 0., 0., 0., 12.65625/27., 0., 0., 0., 0., 18.984375/27., 0., 0., 0., 0., -4.21875/27., 0., 0., 0., 0., 0.6328125/27., 0., 0., 0., + 0.04119873047/27., -0.4943847656/27., -0.7415771484/27., 0.1647949219/27., -0.02471923828/27., -0.4943847656/27., 5.932617187/27., 8.898925781/27., -1.977539062/27., 0.2966308594/27., -0.7415771484/27., 8.898925781/27., 13.34838867/27., -2.966308594/27., 0.4449462891/27., 0.1647949219/27., -1.977539062/27., -2.966308594/27., 0.6591796875/27., -0.09887695313/27., -0.02471923828/27., 0.2966308594/27., 0.4449462891/27., -0.09887695313/27., 0.01483154297/27., + 0., 0., -1.0546875/27., 0., 0., 0., -1.40925221e-13/27., 12.65625/27., 0., 0., 0., -2.083871924e-13/27., 18.984375/27., 0., 0., 0., 0., -4.21875/27., 0., 0., 0., 0., 0.6328125/27., 0., 0., + 0., 0., 0., 0., 0., -3.037621421e-13/27., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., -3.181519325e-13/27., 1.601013025e-13/27., 0., 0., 7.3828125/27., 29.53125/27., -14.765625/27., 5.90625/27., -1.0546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., -2.837901725e-13/27., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., -1.40925221e-13/27., -2.083871924e-13/27., 0., 0., -1.0546875/27., 12.65625/27., 18.984375/27., -4.21875/27., 0.6328125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., -2.96327173e-13/27., 0., 0., 0., -2.96327173e-13/27., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., +}; + +static double * embedding[] = +{ + dgq0_into_dgq0_refined, + dgq1_into_dgq1_refined, + dgq2_into_dgq2_refined, + dgq3_into_dgq3_refined, + dgq4_into_dgq4_refined, + 0,0,0,0,0,0,0 +}; + +static double dgq0_refined_onto_dgq0[] = +{ + 0.25, +}; + +static double dgq1_refined_onto_dgq1[] = +{ + 0.5625, 0.375, 0.375, 0.25, + -0.1875, 0, -0.125, 0, + -0.1875, -0.125, 0, 0, + 0.0625, 0, 0, 0, +}; + +static double dgq2_refined_onto_dgq2[] = +{ + 0.47265625, 0.515625, -0.12890625, 0.515625, 0.5625, -0.140625, -0.12890625, -0.140625, 0.03515625, + -0.064453125, 0.2578125, 0.15039063, -0.0703125, 0.28125, 0.1640625, 0.017578125, -0.0703125, -0.041015625, + 0.12890625, -0.171875, -0.12890625, 0.140625, -0.1875, -0.140625, -0.03515625, 0.046875, 0.03515625, + -0.064453125, -0.0703125, 0.017578125, 0.2578125, 0.28125, -0.0703125, 0.15039063, 0.1640625, -0.041015625, + 0.0087890625, -0.03515625, -0.020507812, -0.03515625, 0.140625, 0.08203125, -0.020507813, 0.08203125, 0.047851562, + -0.017578125, 0.0234375, 0.017578125, 0.0703125, -0.09375, -0.0703125, 0.041015625, -0.0546875, -0.041015625, + 0.12890625, 0.140625, -0.03515625, -0.171875, -0.1875, 0.046875, -0.12890625, -0.140625, 0.03515625, + -0.017578125, 0.0703125, 0.041015625, 0.0234375, -0.09375, -0.0546875, 0.017578125, -0.0703125, -0.041015625, + 0.03515625, -0.046875, -0.03515625, -0.046875, 0.0625, 0.046875, -0.03515625, 0.046875, 0.03515625, +}; + +static double dgq3_refined_onto_dgq3[] = +{ + 0.47265625, 0.64453125, -0.515625, -0.04296875, 0.64453125, 0.87890625, -0.703125, -0.05859375, -0.515625, -0.703125, 0.5625, 0.046875, -0.04296875, -0.05859375, 0.046875, 0.00390625, + -0.038194444, 0.16710069, 0.42491319, 0.084346065, -0.052083333, 0.22786458, 0.57942708, 0.11501736, 0.041666667, -0.18229167, -0.46354167, -0.092013889, 0.0034722222, -0.015190972, -0.038628472, -0.0076678241, + 0.023871528, -0.081163194, 0.047743056, 0.058883102, 0.032552083, -0.11067708, 0.065104167, 0.080295139, -0.026041667, 0.088541667, -0.052083333, -0.064236111, -0.0021701389, 0.0073784722, -0.0043402778, -0.0053530093, + -0.0859375, 0.12890625, 0.12890625, -0.04296875, -0.1171875, 0.17578125, 0.17578125, -0.05859375, 0.09375, -0.140625, -0.140625, 0.046875, 0.0078125, -0.01171875, -0.01171875, 0.00390625, + -0.038194444, -0.052083333, 0.041666667, 0.0034722222, 0.16710069, 0.22786458, -0.18229167, -0.015190972, 0.42491319, 0.57942708, -0.46354167, -0.038628472, 0.084346065, 0.11501736, -0.092013889, -0.0076678241, + 0.0030864198, -0.013503086, -0.03433642, -0.0068158436, -0.013503086, 0.059076003, 0.15022184, 0.029819316, -0.03433642, 0.15022184, 0.38199267, 0.07582626, -0.0068158436, 0.029819316, 0.07582626, 0.015051655, + -0.0019290123, 0.006558642, -0.0038580247, -0.0047582305, 0.008439429, -0.028694059, 0.016878858, 0.020817258, 0.021460262, -0.072964892, 0.042920525, 0.052935314, 0.0042599023, -0.014483668, 0.0085198045, 0.010507759, + 0.0069444444, -0.010416667, -0.010416667, 0.0034722222, -0.030381944, 0.045572917, 0.045572917, -0.015190972, -0.077256944, 0.11588542, 0.11588542, -0.038628472, -0.015335648, 0.023003472, 0.023003472, -0.0076678241, + 0.023871528, 0.032552083, -0.026041667, -0.0021701389, -0.081163194, -0.11067708, 0.088541667, 0.0073784722, 0.047743056, 0.065104167, -0.052083333, -0.0043402778, 0.058883102, 0.080295139, -0.064236111, -0.0053530093, + -0.0019290123, 0.008439429, 0.021460262, 0.0042599023, 0.006558642, -0.028694059, -0.072964892, -0.014483668, -0.0038580247, 0.016878858, 0.042920525, 0.0085198045, -0.0047582305, 0.020817258, 0.052935314, 0.010507759, + 0.0012056327, -0.0040991512, 0.0024112654, 0.002973894, -0.0040991512, 0.013937114, -0.0081983025, -0.01011124, 0.0024112654, -0.0081983025, 0.0048225309, 0.0059477881, 0.002973894, -0.01011124, 0.0059477881, 0.0073356053, + -0.0043402778, 0.0065104167, 0.0065104167, -0.0021701389, 0.014756944, -0.022135417, -0.022135417, 0.0073784722, -0.0086805556, 0.013020833, 0.013020833, -0.0043402778, -0.010706019, 0.016059028, 0.016059028, -0.0053530093, + -0.0859375, -0.1171875, 0.09375, 0.0078125, 0.12890625, 0.17578125, -0.140625, -0.01171875, 0.12890625, 0.17578125, -0.140625, -0.01171875, -0.04296875, -0.05859375, 0.046875, 0.00390625, + 0.0069444444, -0.030381944, -0.077256944, -0.015335648, -0.010416667, 0.045572917, 0.11588542, 0.023003472, -0.010416667, 0.045572917, 0.11588542, 0.023003472, 0.0034722222, -0.015190972, -0.038628472, -0.0076678241, + -0.0043402778, 0.014756944, -0.0086805556, -0.010706019, 0.0065104167, -0.022135417, 0.013020833, 0.016059028, 0.0065104167, -0.022135417, 0.013020833, 0.016059028, -0.0021701389, 0.0073784722, -0.0043402778, -0.0053530093, + 0.015625, -0.0234375, -0.0234375, 0.0078125, -0.0234375, 0.03515625, 0.03515625, -0.01171875, -0.0234375, 0.03515625, 0.03515625, -0.01171875, 0.0078125, -0.01171875, -0.01171875, 0.00390625, +}; + +static double dgq4_refined_onto_dgq4[] = +{ + 0.52663243, 0.70553627, -0.75593171, 0.1007909, 0.012598862, 0.70553627, 0.94521605, -1.0127315, 0.13503086, 0.016878858, -0.75593171, -1.0127315, 1.0850694, -0.14467593, -0.018084491, 0.1007909, 0.13503086, -0.14467593, 0.019290123, 0.0024112654, 0.012598862, 0.016878858, -0.018084491, 0.0024112654, 0.00030140818, + -0.04950959, 0.2181178, 0.37820209, 0.20394408, 0.023130723, -0.066328637, 0.29221523, 0.50668222, 0.27322651, 0.030988528, 0.071066397, -0.31308775, -0.54287381, -0.29274269, -0.033201995, -0.0094755196, 0.041745033, 0.072383174, 0.039032359, 0.0044269326, -0.00118444, 0.0052181291, 0.0090478968, 0.0048790449, 0.00055336658, + 0.01417372, -0.037796586, -0.056694878, 0.34016927, 0.1029957, 0.018988715, -0.050636574, -0.075954861, 0.45572917, 0.13798466, -0.020345052, 0.054253472, 0.081380208, -0.48828125, -0.14784071, 0.0027126736, -0.0072337963, -0.010850694, 0.065104167, 0.019712095, 0.0003390842, -0.00090422454, -0.0013563368, 0.0081380208, 0.0024640119, + -0.0054135735, 0.026615096, -0.022441723, -0.048033161, 0.0010827147, -0.0072526343, 0.035656588, -0.030065466, -0.064350646, 0.0014505269, 0.0077706796, -0.038203487, 0.032212999, 0.068947121, -0.0015541359, -0.0010360906, 0.0050937982, -0.0042950666, -0.0091929495, 0.00020721812, -0.00012951133, 0.00063672478, -0.00053688332, -0.0011491187, 2.5902265e-05, + 0.062994309, -0.1007909, -0.15118634, 0.26205633, 0.062994309, 0.08439429, -0.13503086, -0.2025463, 0.35108025, 0.08439429, -0.090422454, 0.14467593, 0.21701389, -0.37615741, -0.090422454, 0.012056327, -0.019290123, -0.028935185, 0.050154321, 0.012056327, 0.0015070409, -0.0024112654, -0.0036168981, 0.0062692901, 0.0015070409, + -0.04950959, -0.066328637, 0.071066397, -0.0094755196, -0.00118444, 0.2181178, 0.29221523, -0.31308775, 0.041745033, 0.0052181291, 0.37820209, 0.50668222, -0.54287381, 0.072383174, 0.0090478968, 0.20394408, 0.27322651, -0.29274269, 0.039032359, 0.0048790449, 0.023130723, 0.030988528, -0.033201995, 0.0044269326, 0.00055336658, + 0.0046544789, -0.020505617, -0.035555407, -0.019173122, -0.0021745577, -0.020505617, 0.09033886, 0.15664171, 0.084468465, 0.0095801589, -0.035555407, 0.15664171, 0.27160655, 0.14646283, 0.016611373, -0.019173122, 0.084468465, 0.14646283, 0.078979539, 0.0089576215, -0.0021745577, 0.0095801589, 0.016611373, 0.0089576215, 0.0010159465, + -0.0013324949, 0.0035533199, 0.0053299798, -0.031979879, -0.0096827966, 0.0058703952, -0.015654387, -0.023481581, 0.14088949, 0.042658205, 0.010178884, -0.02714369, -0.040715535, 0.24429321, 0.073966556, 0.0054889255, -0.014637135, -0.021955702, 0.13173421, 0.039886192, 0.0006225374, -0.0016600997, -0.0024901496, 0.014940898, 0.0045237718, + 0.00050893904, -0.0025021294, 0.0021097837, 0.0045156773, -0.00010178781, -0.0022421648, 0.011023298, -0.0092947925, -0.019894117, 0.00044843297, -0.0038877681, 0.019113682, -0.016116566, -0.034495106, 0.00077755363, -0.0020964646, 0.010306982, -0.0086907987, -0.018601359, 0.00041929292, -0.0002377747, 0.0011689869, -0.00098568422, -0.0021097101, 4.755494e-05, + -0.0059221998, 0.0094755196, 0.014213279, -0.024636351, -0.0059221998, 0.026090645, -0.041745033, -0.062617549, 0.10853709, 0.026090645, 0.045239484, -0.072383174, -0.10857476, 0.18819625, 0.045239484, 0.024395224, -0.039032359, -0.058548539, 0.10148413, 0.024395224, 0.0027668329, -0.0044269326, -0.0066403989, 0.011510025, 0.0027668329, + 0.01417372, 0.018988715, -0.020345052, 0.0027126736, 0.0003390842, -0.037796586, -0.050636574, 0.054253472, -0.0072337963, -0.00090422454, -0.056694878, -0.075954861, 0.081380208, -0.010850694, -0.0013563368, 0.34016927, 0.45572917, -0.48828125, 0.065104167, 0.0081380208, 0.1029957, 0.13798466, -0.14784071, 0.019712095, 0.0024640119, + -0.0013324949, 0.0058703952, 0.010178884, 0.0054889255, 0.0006225374, 0.0035533199, -0.015654387, -0.02714369, -0.014637135, -0.0016600997, 0.0053299798, -0.023481581, -0.040715535, -0.021955702, -0.0024901496, -0.031979879, 0.14088949, 0.24429321, 0.13173421, 0.014940898, -0.0096827966, 0.042658205, 0.073966556, 0.039886192, 0.0045237718, + 0.00038146973, -0.0010172526, -0.0015258789, 0.0091552734, 0.0027720133, -0.0010172526, 0.0027126736, 0.0040690104, -0.024414062, -0.0073920356, -0.0015258789, 0.0040690104, 0.0061035156, -0.036621094, -0.011088053, 0.0091552734, -0.024414062, -0.036621094, 0.21972656, 0.06652832, 0.0027720133, -0.0073920356, -0.011088053, 0.06652832, 0.020143297, + -0.00014570024, 0.00071631538, -0.00060399373, -0.0012927585, 2.9140049e-05, 0.00038853398, -0.0019101743, 0.00161065, 0.003447356, -7.7706796e-05, 0.00058280097, -0.0028652615, 0.0024159749, 0.0051710341, -0.00011656019, -0.0034968058, 0.017191569, -0.01449585, -0.031026204, 0.00069936117, -0.0010587551, 0.0052052251, -0.0043890211, -0.0093940452, 0.00021175102, + 0.001695421, -0.0027126736, -0.0040690104, 0.0070529514, 0.001695421, -0.0045211227, 0.0072337963, 0.010850694, -0.01880787, -0.0045211227, -0.006781684, 0.010850694, 0.016276042, -0.028211806, -0.006781684, 0.040690104, -0.065104167, -0.09765625, 0.16927083, 0.040690104, 0.012320059, -0.019712095, -0.029568142, 0.051251447, 0.012320059, + -0.0054135735, -0.0072526343, 0.0077706796, -0.0010360906, -0.00012951133, 0.026615096, 0.035656588, -0.038203487, 0.0050937982, 0.00063672478, -0.022441723, -0.030065466, 0.032212999, -0.0042950666, -0.00053688332, -0.048033161, -0.064350646, 0.068947121, -0.0091929495, -0.0011491187, 0.0010827147, 0.0014505269, -0.0015541359, 0.00020721812, 2.5902265e-05, + 0.00050893904, -0.0022421648, -0.0038877681, -0.0020964646, -0.0002377747, -0.0025021294, 0.011023298, 0.019113682, 0.010306982, 0.0011689869, 0.0021097837, -0.0092947925, -0.016116566, -0.0086907987, -0.00098568422, 0.0045156773, -0.019894117, -0.034495106, -0.018601359, -0.0021097101, -0.00010178781, 0.00044843297, 0.00077755363, 0.00041929292, 4.755494e-05, + -0.00014570024, 0.00038853398, 0.00058280097, -0.0034968058, -0.0010587551, 0.00071631538, -0.0019101743, -0.0028652615, 0.017191569, 0.0052052251, -0.00060399373, 0.00161065, 0.0024159749, -0.01449585, -0.0043890211, -0.0012927585, 0.003447356, 0.0051710341, -0.031026204, -0.0093940452, 2.9140049e-05, -7.7706796e-05, -0.00011656019, 0.00069936117, 0.00021175102, + 5.5649398e-05, -0.00027359268, 0.00023069205, 0.00049376193, -1.112988e-05, -0.00027359268, 0.0013450811, -0.001134166, -0.0024275132, 5.4718536e-05, 0.00023069205, -0.001134166, 0.00095632341, 0.0020468677, -4.613841e-05, 0.00049376193, -0.0024275132, 0.0020468677, 0.004381015, -9.8752387e-05, -1.112988e-05, 5.4718536e-05, -4.613841e-05, -9.8752387e-05, 2.2259759e-06, + -0.00064755663, 0.0010360906, 0.0015541359, -0.0026938356, -0.00064755663, 0.0031836239, -0.0050937982, -0.0076406973, 0.013243875, 0.0031836239, -0.0026844166, 0.0042950666, 0.0064425998, -0.011167173, -0.0026844166, -0.0057455934, 0.0091929495, 0.013789424, -0.023901669, -0.0057455934, 0.00012951133, -0.00020721812, -0.00031082718, 0.00053876712, 0.00012951133, + 0.062994309, 0.08439429, -0.090422454, 0.012056327, 0.0015070409, -0.1007909, -0.13503086, 0.14467593, -0.019290123, -0.0024112654, -0.15118634, -0.2025463, 0.21701389, -0.028935185, -0.0036168981, 0.26205633, 0.35108025, -0.37615741, 0.050154321, 0.0062692901, 0.062994309, 0.08439429, -0.090422454, 0.012056327, 0.0015070409, + -0.0059221998, 0.026090645, 0.045239484, 0.024395224, 0.0027668329, 0.0094755196, -0.041745033, -0.072383174, -0.039032359, -0.0044269326, 0.014213279, -0.062617549, -0.10857476, -0.058548539, -0.0066403989, -0.024636351, 0.10853709, 0.18819625, 0.10148413, 0.011510025, -0.0059221998, 0.026090645, 0.045239484, 0.024395224, 0.0027668329, + 0.001695421, -0.0045211227, -0.006781684, 0.040690104, 0.012320059, -0.0027126736, 0.0072337963, 0.010850694, -0.065104167, -0.019712095, -0.0040690104, 0.010850694, 0.016276042, -0.09765625, -0.029568142, 0.0070529514, -0.01880787, -0.028211806, 0.16927083, 0.051251447, 0.001695421, -0.0045211227, -0.006781684, 0.040690104, 0.012320059, + -0.00064755663, 0.0031836239, -0.0026844166, -0.0057455934, 0.00012951133, 0.0010360906, -0.0050937982, 0.0042950666, 0.0091929495, -0.00020721812, 0.0015541359, -0.0076406973, 0.0064425998, 0.013789424, -0.00031082718, -0.0026938356, 0.013243875, -0.011167173, -0.023901669, 0.00053876712, -0.00064755663, 0.0031836239, -0.0026844166, -0.0057455934, 0.00012951133, + 0.0075352045, -0.012056327, -0.018084491, 0.031346451, 0.0075352045, -0.012056327, 0.019290123, 0.028935185, -0.050154321, -0.012056327, -0.018084491, 0.028935185, 0.043402778, -0.075231481, -0.018084491, 0.031346451, -0.050154321, -0.075231481, 0.13040123, 0.031346451, 0.0075352045, -0.012056327, -0.018084491, 0.031346451, 0.0075352045, +}; + +static double dgq5_refined_onto_dgq5[] = +{ + 0.58568329, 0.73490673, -0.98402765, 0.3238572, 0.14324453, 0.081213421, 0.73490673, 0.92215008, -1.2347433, 0.40637122, 0.17974112, 0.1019054, -0.98402765, -1.2347433, 1.6533004, -0.54412418, -0.24067031, -0.1364496, 0.3238572, 0.40637122, -0.54412418, 0.17907884, 0.07920795, 0.044907464, 0.14324453, 0.17974112, -0.24067031, 0.07920795, 0.035034286, 0.019862917, 0.081213421, 0.1019054, -0.1364496, 0.044907464, 0.019862917, 0.01126141, + -0.049698628, 0.22489441, 0.40653745, 0.19255254, 0.042966384, -0.0098382437, -0.062361103, 0.28219418, 0.51011717, 0.24161207, 0.053913583, -0.012344883, 0.083500459, -0.37785322, -0.68303825, -0.32351447, -0.072189373, 0.016529588, -0.027481164, 0.12435676, 0.2247974, 0.10647312, 0.023758528, -0.0054401177, -0.01215513, 0.05500395, 0.099429618, 0.047093879, 0.01050858, -0.0024062059, -0.0068914303, 0.031184848, 0.05637227, 0.026700182, 0.0059579078, -0.0013642141, + 0.028146679, -0.10989621, 0.09207908, 0.17062192, 0.41127473, 0.079867451, 0.035318036, -0.13789614, 0.11553947, 0.21409387, 0.51606144, 0.1002165, -0.047290251, 0.18464059, -0.15470539, -0.28666806, -0.69099753, -0.13418819, 0.01556388, -0.060767788, 0.050915697, 0.094346449, 0.22741691, 0.044163201, 0.0068840239, -0.02687806, 0.022520404, 0.04173016, 0.10058825, 0.019533724, 0.0039029422, -0.015238692, 0.01276809, 0.023659186, 0.057029163, 0.011074772, + -0.00433869, 0.017522169, 0.0097615543, -0.12458438, 0.13609376, 0.058751403, -0.005444124, 0.021986559, 0.012248654, -0.15632663, 0.17076844, 0.073720391, 0.0072895898, -0.029439629, -0.01640074, 0.20931871, -0.22865605, -0.098710354, -0.0023991055, 0.009688992, 0.0053977119, -0.068889703, 0.075253889, 0.032486952, -0.0010611428, 0.0042855157, 0.0023874495, -0.030470445, 0.033285374, 0.014369229, -0.00060162184, 0.0024297011, 0.0013535801, -0.017275418, 0.01887136, 0.008146728, + -0.0036610811, 0.0016063317, 0.01417797, 0.012922401, -0.05362876, -0.013531292, -0.0045938704, 0.0020156013, 0.017790307, 0.016214837, -0.067292574, -0.016978865, 0.0061511146, -0.0026988559, -0.023820919, -0.021711392, 0.090103616, 0.022734412, -0.0020244175, 0.00088823107, 0.0078397963, 0.0071455214, -0.029654355, -0.0074822116, -0.00089541541, 0.00039287143, 0.0034676022, 0.0031605191, -0.013116349, -0.0033094398, -0.00050766161, 0.00022274102, 0.0019659797, 0.0017918769, -0.0074363997, -0.0018763085, + -0.055055724, 0.12456046, 0.062280231, -0.24912092, -0.031140116, 0.028898027, -0.069083108, 0.15629662, 0.078148312, -0.31259325, -0.039074156, 0.036260817, 0.092501111, -0.20927853, -0.10463927, 0.41855706, 0.052319633, -0.048552619, -0.030443403, 0.068876478, 0.034438239, -0.13775296, -0.01721912, 0.015979343, -0.013465352, 0.030464596, 0.015232298, -0.060929192, -0.0076161491, 0.0070677863, -0.0076342689, 0.017272102, 0.0086360508, -0.034544203, -0.0043180254, 0.0040071275, + -0.049698628, -0.062361103, 0.083500459, -0.027481164, -0.01215513, -0.0068914303, 0.22489441, 0.28219418, -0.37785322, 0.12435676, 0.05500395, 0.031184848, 0.40653745, 0.51011717, -0.68303825, 0.2247974, 0.099429618, 0.05637227, 0.19255254, 0.24161207, -0.32351447, 0.10647312, 0.047093879, 0.026700182, 0.042966384, 0.053913583, -0.072189373, 0.023758528, 0.01050858, 0.0059579078, -0.0098382437, -0.012344883, 0.016529588, -0.0054401177, -0.0024062059, -0.0013642141, + 0.0042172171, -0.019083597, -0.034497063, -0.016339201, -0.0036459472, 0.0008348321, -0.019083597, 0.086356393, 0.15610485, 0.073937554, 0.016498507, -0.0037777517, -0.034497063, 0.15610485, 0.28218783, 0.13365554, 0.029824044, -0.0068289714, -0.016339201, 0.073937554, 0.13365554, 0.063304657, 0.01412587, -0.0032344764, -0.0036459472, 0.016498507, 0.029824044, 0.01412587, 0.0031520622, -0.0007217446, 0.0008348321, -0.0037777517, -0.0068289714, -0.0032344764, -0.0007217446, 0.00016526174, + -0.0023884091, 0.0093253313, -0.0078134445, -0.014478261, -0.034899049, -0.0067772169, 0.010807941, -0.042198648, 0.035357113, 0.065516497, 0.1579239, 0.030668014, 0.019537315, -0.076281711, 0.063914396, 0.11843295, 0.28547609, 0.055437999, 0.0092536605, -0.036130096, 0.030272437, 0.056094625, 0.135213, 0.026257673, 0.0020648719, -0.0080621092, 0.0067550247, 0.012517016, 0.030171576, 0.0058591659, -0.00047280482, 0.0018460244, -0.0015467343, -0.0028660884, -0.0069085478, -0.0013416047, + 0.00036816304, -0.0014868578, -0.00082832456, 0.010571708, -0.011548346, -0.0049853977, -0.0016659979, 0.0067282745, 0.003748304, -0.047838705, 0.052258153, 0.022559739, -0.0030115934, 0.012162577, 0.0067757394, -0.086477138, 0.094466091, 0.040780821, -0.0014264122, 0.0057606871, 0.0032092636, -0.040959062, 0.044742952, 0.019315442, -0.00031829117, 0.001285446, 0.00071611858, -0.0091396498, 0.0099839914, 0.0043100689, 7.2880839e-05, -0.00029433548, -0.00016397352, 0.0020927547, -0.0022860881, -0.00098689962, + 0.00031066399, -0.00013630657, -0.0012030831, -0.0010965407, 0.0045507116, 0.0011482087, -0.0014058053, 0.00061680952, 0.0054441475, 0.0049620259, -0.020592714, -0.0051958319, -0.0025412481, 0.0011149951, 0.0098412842, 0.008969762, -0.037225066, -0.0093924088, -0.0012036376, 0.00052810666, 0.0046612293, 0.0042484412, -0.017631293, -0.0044486238, -0.00026858102, 0.0001178423, 0.0010401118, 0.00094800182, -0.003934266, -0.00099267077, 6.1498439e-05, -2.6982984e-05, -0.00023815998, -0.00021706907, 0.00090085002, 0.00022729716, + 0.0046717979, -0.010569678, -0.0052848392, 0.021139357, 0.0026424196, -0.0024521654, -0.021140649, 0.047829522, 0.023914761, -0.095659044, -0.011957381, 0.011096449, -0.038215558, 0.086460537, 0.043230269, -0.17292107, -0.021615134, 0.020058845, -0.01810043, 0.040951199, 0.0204756, -0.081902398, -0.0102378, 0.0095006782, -0.0040389498, 0.0091378954, 0.0045689477, -0.018275791, -0.0022844738, 0.0021199917, 0.00092482001, -0.002092353, -0.0010461765, 0.0041847059, 0.00052308824, -0.00048542589, + 0.028146679, 0.035318036, -0.047290251, 0.01556388, 0.0068840239, 0.0039029422, -0.10989621, -0.13789614, 0.18464059, -0.060767788, -0.02687806, -0.015238692, 0.09207908, 0.11553947, -0.15470539, 0.050915697, 0.022520404, 0.01276809, 0.17062192, 0.21409387, -0.28666806, 0.094346449, 0.04173016, 0.023659186, 0.41127473, 0.51606144, -0.69099753, 0.22741691, 0.10058825, 0.057029163, 0.079867451, 0.1002165, -0.13418819, 0.044163201, 0.019533724, 0.011074772, + -0.0023884091, 0.010807941, 0.019537315, 0.0092536605, 0.0020648719, -0.00047280482, 0.0093253313, -0.042198648, -0.076281711, -0.036130096, -0.0080621092, 0.0018460244, -0.0078134445, 0.035357113, 0.063914396, 0.030272437, 0.0067550247, -0.0015467343, -0.014478261, 0.065516497, 0.11843295, 0.056094625, 0.012517016, -0.0028660884, -0.034899049, 0.1579239, 0.28547609, 0.135213, 0.030171576, -0.0069085478, -0.0067772169, 0.030668014, 0.055437999, 0.026257673, 0.0058591659, -0.0013416047, + 0.0013526688, -0.0052813752, 0.0044251224, 0.0081997225, 0.019764978, 0.0038382578, -0.0052813752, 0.020620661, -0.017277498, -0.032015089, -0.077170604, -0.014986137, 0.0044251224, -0.017277498, 0.014476351, 0.026824582, 0.064659175, 0.012556481, 0.0081997225, -0.032015089, 0.026824582, 0.049705774, 0.11981302, 0.023267077, 0.019764978, -0.077170604, 0.064659175, 0.11981302, 0.28880268, 0.056084004, 0.0038382578, -0.014986137, 0.012556481, 0.023267077, 0.056084004, 0.010891227, + -0.0002085081, 0.00084207775, 0.00046911929, -0.0059872571, 0.0065403734, 0.002823466, 0.00081410139, -0.0032878178, -0.0018316346, 0.023376714, -0.025536307, -0.011023972, -0.00068211367, 0.0027547742, 0.0015346774, -0.01958672, 0.021396186, 0.0092366902, -0.0012639521, 0.0051045783, 0.0028437471, -0.036294063, 0.039646991, 0.017115526, -0.0030466868, 0.012304304, 0.0068546955, -0.087484835, 0.095566882, 0.04125603, -0.00059165101, 0.002389433, 0.0013311468, -0.016989108, 0.0185586, 0.0080117102, + -0.00017594368, 7.7196845e-05, 0.00068136273, 0.00062102276, -0.0025772828, -0.00065028477, 0.00068695648, -0.00030140823, -0.0026603203, -0.0024247282, 0.010062772, 0.0025389792, -0.00057558237, 0.00025254186, 0.0022290109, 0.0020316146, -0.0084313261, -0.0021273424, -0.0010665503, 0.00046795839, 0.0041303424, 0.0037645685, -0.015623191, -0.0039419514, -0.0025708607, 0.0011279879, 0.0099559623, 0.0090742845, -0.03765884, -0.0095018563, -0.000499248, 0.00021904948, 0.001933397, 0.0017621797, -0.0073131543, -0.0018452119, + -0.0026458596, 0.0059861077, 0.0029930539, -0.011972215, -0.0014965269, 0.001388777, 0.010330524, -0.023372226, -0.011686113, 0.046744453, 0.0058430566, -0.0054223565, -0.0086556685, 0.01958296, 0.0097914802, -0.039165921, -0.0048957401, 0.0045432468, -0.016038896, 0.036287096, 0.018143548, -0.072574192, -0.009071774, 0.0084186062, -0.038660874, 0.087468041, 0.043734021, -0.17493608, -0.02186701, 0.020292586, -0.0075077442, 0.016985847, 0.0084929233, -0.033971693, -0.0042464617, 0.0039407164, + -0.00433869, -0.005444124, 0.0072895898, -0.0023991055, -0.0010611428, -0.00060162184, 0.017522169, 0.021986559, -0.029439629, 0.009688992, 0.0042855157, 0.0024297011, 0.0097615543, 0.012248654, -0.01640074, 0.0053977119, 0.0023874495, 0.0013535801, -0.12458438, -0.15632663, 0.20931871, -0.068889703, -0.030470445, -0.017275418, 0.13609376, 0.17076844, -0.22865605, 0.075253889, 0.033285374, 0.01887136, 0.058751403, 0.073720391, -0.098710354, 0.032486952, 0.014369229, 0.008146728, + 0.00036816304, -0.0016659979, -0.0030115934, -0.0014264122, -0.00031829117, 7.2880839e-05, -0.0014868578, 0.0067282745, 0.012162577, 0.0057606871, 0.001285446, -0.00029433548, -0.00082832456, 0.003748304, 0.0067757394, 0.0032092636, 0.00071611858, -0.00016397352, 0.010571708, -0.047838705, -0.086477138, -0.040959062, -0.0091396498, 0.0020927547, -0.011548346, 0.052258153, 0.094466091, 0.044742952, 0.0099839914, -0.0022860881, -0.0049853977, 0.022559739, 0.040780821, 0.019315442, 0.0043100689, -0.00098689962, + -0.0002085081, 0.00081410139, -0.00068211367, -0.0012639521, -0.0030466868, -0.00059165101, 0.00084207775, -0.0032878178, 0.0027547742, 0.0051045783, 0.012304304, 0.002389433, 0.00046911929, -0.0018316346, 0.0015346774, 0.0028437471, 0.0068546955, 0.0013311468, -0.0059872571, 0.023376714, -0.01958672, -0.036294063, -0.087484835, -0.016989108, 0.0065403734, -0.025536307, 0.021396186, 0.039646991, 0.095566882, 0.0185586, 0.002823466, -0.011023972, 0.0092366902, 0.017115526, 0.04125603, 0.0080117102, + 3.2140632e-05, -0.00012980268, -7.2312731e-05, 0.00092291005, -0.0010081706, -0.0004352252, -0.00012980268, 0.00052421918, 0.00029204112, -0.0037272509, 0.0040715827, 0.001757694, -7.2312731e-05, 0.00029204112, 0.00016269534, -0.0020764416, 0.002268268, 0.00097920671, 0.00092291005, -0.0037272509, -0.0020764416, 0.026501127, -0.028949361, -0.012497381, -0.0010081706, 0.0040715827, 0.002268268, -0.028949361, 0.031623768, 0.013651917, -0.0004352252, 0.001757694, 0.00097920671, -0.012497381, 0.013651917, 0.005893505, + 2.7120965e-05, -1.1899563e-05, -0.00010502915, -9.5728e-05, 0.00039727711, 0.00010023861, -0.00010953033, 4.80574e-05, 0.00042416916, 0.00038660569, -0.0016044374, -0.00040482218, -6.1019057e-05, 2.6772651e-05, 0.00023630352, 0.00021537701, -0.00089382787, -0.00022552537, 0.00077877159, -0.00034169293, -0.0030158852, -0.0027488051, 0.011407711, 0.0028783262, -0.00085071627, 0.00037325929, 0.0032944995, 0.003002746, -0.012461581, -0.0031442325, -0.0003672525, 0.00016113528, 0.0014222288, 0.0012962794, -0.0053796393, -0.0013573588, + 0.00040784793, -0.00092273288, -0.00046136644, 0.0018454658, 0.00023068322, -0.00021407403, -0.0016471286, 0.0037265354, 0.0018632677, -0.0074530707, -0.00093163384, 0.00086455621, -0.00091761102, 0.002076043, 0.0010380215, -0.004152086, -0.00051901076, 0.00048164198, 0.011711249, -0.026496039, -0.01324802, 0.052992079, 0.0066240099, -0.0061470812, -0.012793161, 0.028943804, 0.014471902, -0.057887607, -0.0072359509, 0.0067149624, -0.0055227818, 0.012494982, 0.0062474908, -0.024989963, -0.0031237454, 0.0028988357, + -0.0036610811, -0.0045938704, 0.0061511146, -0.0020244175, -0.00089541541, -0.00050766161, 0.0016063317, 0.0020156013, -0.0026988559, 0.00088823107, 0.00039287143, 0.00022274102, 0.01417797, 0.017790307, -0.023820919, 0.0078397963, 0.0034676022, 0.0019659797, 0.012922401, 0.016214837, -0.021711392, 0.0071455214, 0.0031605191, 0.0017918769, -0.05362876, -0.067292574, 0.090103616, -0.029654355, -0.013116349, -0.0074363997, -0.013531292, -0.016978865, 0.022734412, -0.0074822116, -0.0033094398, -0.0018763085, + 0.00031066399, -0.0014058053, -0.0025412481, -0.0012036376, -0.00026858102, 6.1498439e-05, -0.00013630657, 0.00061680952, 0.0011149951, 0.00052810666, 0.0001178423, -2.6982984e-05, -0.0012030831, 0.0054441475, 0.0098412842, 0.0046612293, 0.0010401118, -0.00023815998, -0.0010965407, 0.0049620259, 0.008969762, 0.0042484412, 0.00094800182, -0.00021706907, 0.0045507116, -0.020592714, -0.037225066, -0.017631293, -0.003934266, 0.00090085002, 0.0011482087, -0.0051958319, -0.0093924088, -0.0044486238, -0.00099267077, 0.00022729716, + -0.00017594368, 0.00068695648, -0.00057558237, -0.0010665503, -0.0025708607, -0.000499248, 7.7196845e-05, -0.00030140823, 0.00025254186, 0.00046795839, 0.0011279879, 0.00021904948, 0.00068136273, -0.0026603203, 0.0022290109, 0.0041303424, 0.0099559623, 0.001933397, 0.00062102276, -0.0024247282, 0.0020316146, 0.0037645685, 0.0090742845, 0.0017621797, -0.0025772828, 0.010062772, -0.0084313261, -0.015623191, -0.03765884, -0.0073131543, -0.00065028477, 0.0025389792, -0.0021273424, -0.0039419514, -0.0095018563, -0.0018452119, + 2.7120965e-05, -0.00010953033, -6.1019057e-05, 0.00077877159, -0.00085071627, -0.0003672525, -1.1899563e-05, 4.80574e-05, 2.6772651e-05, -0.00034169293, 0.00037325929, 0.00016113528, -0.00010502915, 0.00042416916, 0.00023630352, -0.0030158852, 0.0032944995, 0.0014222288, -9.5728e-05, 0.00038660569, 0.00021537701, -0.0027488051, 0.003002746, 0.0012962794, 0.00039727711, -0.0016044374, -0.00089382787, 0.011407711, -0.012461581, -0.0053796393, 0.00010023861, -0.00040482218, -0.00022552537, 0.0028783262, -0.0031442325, -0.0013573588, + 2.2885261e-05, -1.0041111e-05, -8.8625882e-05, -8.0777371e-05, 0.00033523107, 8.4583525e-05, -1.0041111e-05, 4.4056261e-06, 3.888539e-05, 3.5441786e-05, -0.0001470856, -3.711177e-05, -8.8625882e-05, 3.888539e-05, 0.00034321422, 0.00031281993, -0.001298222, -0.00032755971, -8.0777371e-05, 3.5441786e-05, 0.00031281993, 0.0002851173, -0.0011832544, -0.00029855176, 0.00033523107, -0.0001470856, -0.001298222, -0.0011832544, 0.0049105786, 0.0012390082, 8.4583525e-05, -3.711177e-05, -0.00032755971, -0.00029855176, 0.0012390082, 0.00031261923, + 0.00034415097, -0.0007786221, -0.00038931105, 0.0015572442, 0.00019465552, -0.00018064033, -0.00015099928, 0.00034162733, 0.00017081367, -0.00068325467, -8.5406833e-05, 7.9257541e-05, -0.0013327654, 0.0030153063, 0.0015076531, -0.0060306125, -0.00075382657, 0.00069955105, -0.0012147386, 0.0027482775, 0.0013741387, -0.0054965549, -0.00068706936, 0.00063760037, 0.0050412403, -0.011405521, -0.0057027605, 0.022811042, 0.0028513802, -0.0026460809, 0.001271976, -0.0028777737, -0.0014388869, 0.0057555474, 0.00071944343, -0.0006676435, + -0.055055724, -0.069083108, 0.092501111, -0.030443403, -0.013465352, -0.0076342689, 0.12456046, 0.15629662, -0.20927853, 0.068876478, 0.030464596, 0.017272102, 0.062280231, 0.078148312, -0.10463927, 0.034438239, 0.015232298, 0.0086360508, -0.24912092, -0.31259325, 0.41855706, -0.13775296, -0.060929192, -0.034544203, -0.031140116, -0.039074156, 0.052319633, -0.01721912, -0.0076161491, -0.0043180254, 0.028898027, 0.036260817, -0.048552619, 0.015979343, 0.0070677863, 0.0040071275, + 0.0046717979, -0.021140649, -0.038215558, -0.01810043, -0.0040389498, 0.00092482001, -0.010569678, 0.047829522, 0.086460537, 0.040951199, 0.0091378954, -0.002092353, -0.0052848392, 0.023914761, 0.043230269, 0.0204756, 0.0045689477, -0.0010461765, 0.021139357, -0.095659044, -0.17292107, -0.081902398, -0.018275791, 0.0041847059, 0.0026424196, -0.011957381, -0.021615134, -0.0102378, -0.0022844738, 0.00052308824, -0.0024521654, 0.011096449, 0.020058845, 0.0095006782, 0.0021199917, -0.00048542589, + -0.0026458596, 0.010330524, -0.0086556685, -0.016038896, -0.038660874, -0.0075077442, 0.0059861077, -0.023372226, 0.01958296, 0.036287096, 0.087468041, 0.016985847, 0.0029930539, -0.011686113, 0.0097914802, 0.018143548, 0.043734021, 0.0084929233, -0.011972215, 0.046744453, -0.039165921, -0.072574192, -0.17493608, -0.033971693, -0.0014965269, 0.0058430566, -0.0048957401, -0.009071774, -0.02186701, -0.0042464617, 0.001388777, -0.0054223565, 0.0045432468, 0.0084186062, 0.020292586, 0.0039407164, + 0.00040784793, -0.0016471286, -0.00091761102, 0.011711249, -0.012793161, -0.0055227818, -0.00092273288, 0.0037265354, 0.002076043, -0.026496039, 0.028943804, 0.012494982, -0.00046136644, 0.0018632677, 0.0010380215, -0.01324802, 0.014471902, 0.0062474908, 0.0018454658, -0.0074530707, -0.004152086, 0.052992079, -0.057887607, -0.024989963, 0.00023068322, -0.00093163384, -0.00051901076, 0.0066240099, -0.0072359509, -0.0031237454, -0.00021407403, 0.00086455621, 0.00048164198, -0.0061470812, 0.0067149624, 0.0028988357, + 0.00034415097, -0.00015099928, -0.0013327654, -0.0012147386, 0.0050412403, 0.001271976, -0.0007786221, 0.00034162733, 0.0030153063, 0.0027482775, -0.011405521, -0.0028777737, -0.00038931105, 0.00017081367, 0.0015076531, 0.0013741387, -0.0057027605, -0.0014388869, 0.0015572442, -0.00068325467, -0.0060306125, -0.0054965549, 0.022811042, 0.0057555474, 0.00019465552, -8.5406833e-05, -0.00075382657, -0.00068706936, 0.0028513802, 0.00071944343, -0.00018064033, 7.9257541e-05, 0.00069955105, 0.00063760037, -0.0026460809, -0.0006676435, + 0.0051753786, -0.011709001, -0.0058545007, 0.023418003, 0.0029272503, -0.0027164883, -0.011709001, 0.026490953, 0.013245477, -0.052981906, -0.0066227383, 0.0061459012, -0.0058545007, 0.013245477, 0.0066227383, -0.026490953, -0.0033113692, 0.0030729506, 0.023418003, -0.052981906, -0.026490953, 0.10596381, 0.013245477, -0.012291802, 0.0029272503, -0.0066227383, -0.0033113692, 0.013245477, 0.0016556846, -0.0015364753, -0.0027164883, 0.0061459012, 0.0030729506, -0.012291802, -0.0015364753, 0.0014258491, +}; + +static double dgq6_refined_onto_dgq6[] = +{ + 0.62818008, 0.78019409, -1.32633, 0.86688232, -0.13653397, 0.15603882, -0.052012939, 0.78019409, 0.96899414, -1.64729, 1.0766602, -0.16957397, 0.19379883, -0.064599609, -1.32633, -1.64729, 2.8003931, -1.8303223, 0.28827576, -0.32945801, 0.10981934, 0.86688232, 1.0766602, -1.8303223, 1.1962891, -0.18841553, 0.21533203, -0.071777344, -0.13653397, -0.16957397, 0.28827576, -0.18841553, 0.029675446, -0.033914795, 0.011304932, 0.15603882, 0.19379883, -0.32945801, 0.21533203, -0.033914795, 0.038759766, -0.012919922, -0.052012939, -0.064599609, 0.10981934, -0.071777344, 0.011304932, -0.012919922, 0.0043066406, + -0.045072641, 0.21238617, 0.45037891, 0.15022393, 0.11761607, -0.07079539, -0.01550823, -0.055979821, 0.26378174, 0.55936661, 0.18657679, 0.14607811, -0.087927246, -0.019261085, 0.095165695, -0.44842896, -0.95092323, -0.31718054, -0.24833279, 0.14947632, 0.032743844, -0.062199801, 0.29309082, 0.62151845, 0.20730754, 0.16230901, -0.09769694, -0.021401205, 0.0097964686, -0.046161804, -0.097889156, -0.032650938, -0.025563669, 0.015387268, 0.0033706898, -0.011195964, 0.052756348, 0.11187332, 0.037315357, 0.029215622, -0.017585449, -0.0038522169, 0.003731988, -0.017585449, -0.037291107, -0.012438452, -0.0097385406, 0.0058618164, 0.0012840723, + 0.024410051, -0.086688232, 0.014448039, 0.32948663, 0.25397588, 0.2600647, 0.030822483, 0.030317066, -0.10766602, 0.017944336, 0.40921947, 0.31543579, 0.32299805, 0.03828125, -0.051539013, 0.18303223, -0.030505371, -0.6956731, -0.53624084, -0.54909668, -0.065078125, 0.033685629, -0.11962891, 0.019938151, 0.4546883, 0.35048421, 0.35888672, 0.042534722, -0.0053054866, 0.018841553, -0.0031402588, -0.071613408, -0.055201263, -0.056524658, -0.0066992187, 0.0060634133, -0.021533203, 0.0035888672, 0.081843895, 0.063087158, 0.064599609, 0.00765625, -0.0020211378, 0.0071777344, -0.0011962891, -0.027281298, -0.021029053, -0.021533203, -0.0025520833, + -0.015576792, 0.078019409, -0.13409586, 0.086688232, -0.10361953, 0.39009705, 0.094776554, -0.019346237, 0.096899414, -0.16654587, 0.10766602, -0.12869453, 0.48449707, 0.11771164, 0.032888603, -0.164729, 0.28312798, -0.18303223, 0.21878071, -0.82364502, -0.20010979, -0.021495819, 0.10766602, -0.18505096, 0.11962891, -0.14299393, 0.53833008, 0.13079071, 0.0033855915, -0.016957397, 0.029145527, -0.018841553, 0.022521544, -0.084786987, -0.020599537, -0.0038692474, 0.019379883, -0.033309174, 0.021533203, -0.025738907, 0.096899414, 0.023542328, 0.0012897491, -0.0064599609, 0.011103058, -0.0071777344, 0.0085796356, -0.032299805, -0.0078474426, + -0.0020245091, -0.0024768066, 0.020227254, 0.0067067439, -0.064293772, -0.0057792155, 0.013698881, -0.0025144224, -0.0030761719, 0.02512207, 0.0083297164, -0.079852295, -0.0071777344, 0.017013889, 0.004274518, 0.0052294922, -0.04270752, -0.014160518, 0.1357489, 0.012202148, -0.028923611, -0.0027938026, -0.0034179688, 0.027913411, 0.0092552405, -0.088724772, -0.0079752604, 0.018904321, 0.00044002392, 0.00053833008, -0.0043963623, -0.0014577004, 0.013974152, 0.0012561035, -0.0029774306, -0.00050288448, -0.00061523438, 0.0050244141, 0.0016659433, -0.015970459, -0.0014355469, 0.0034027778, 0.00016762816, 0.00020507813, -0.0016748047, -0.00055531443, 0.0053234863, 0.00047851562, -0.0011342593, + 0.0084118577, -0.021672058, 0.00063210169, 0.013326851, 0.046098274, -0.039009705, -0.014438005, 0.010447453, -0.026916504, 0.0007850647, 0.01655183, 0.057253647, -0.048449707, -0.017931875, -0.01776067, 0.045758057, -0.00133461, -0.028138111, -0.0973312, 0.082364502, 0.030484187, 0.011608281, -0.029907227, 0.00087229411, 0.018390922, 0.063615163, -0.053833008, -0.019924305, -0.0018283042, 0.0047103882, -0.00013738632, -0.0028965703, -0.010019388, 0.0084786987, 0.0031380781, 0.0020894905, -0.0053833008, 0.00015701294, 0.003310366, 0.011450729, -0.0096899414, -0.0035863749, -0.00069649685, 0.0017944336, -5.2337646e-05, -0.0011034553, -0.0038169098, 0.0032299805, 0.0011954583, + 0.049845734, -0.15603882, 0.078019409, 0.10402588, 0.097524261, -0.24520386, -0.052012939, 0.061907959, -0.19379883, 0.096899414, 0.12919922, 0.12112427, -0.30454102, -0.064599609, -0.10524353, 0.32945801, -0.164729, -0.21963867, -0.20591125, 0.51771973, 0.10981934, 0.068786621, -0.21533203, 0.10766602, 0.14355469, 0.13458252, -0.33837891, -0.071777344, -0.010833893, 0.033914795, -0.016957397, -0.022609863, -0.021196747, 0.053294678, 0.011304932, 0.012381592, -0.038759766, 0.019379883, 0.025839844, 0.024224854, -0.060908203, -0.012919922, -0.0041271973, 0.012919922, -0.0064599609, -0.0086132812, -0.0080749512, 0.020302734, 0.0043066406, + -0.045072641, -0.055979821, 0.095165695, -0.062199801, 0.0097964686, -0.011195964, 0.003731988, 0.21238617, 0.26378174, -0.44842896, 0.29309082, -0.046161804, 0.052756348, -0.017585449, 0.45037891, 0.55936661, -0.95092323, 0.62151845, -0.097889156, 0.11187332, -0.037291107, 0.15022393, 0.18657679, -0.31718054, 0.20730754, -0.032650938, 0.037315357, -0.012438452, 0.11761607, 0.14607811, -0.24833279, 0.16230901, -0.025563669, 0.029215622, -0.0097385406, -0.07079539, -0.087927246, 0.14947632, -0.09769694, 0.015387268, -0.017585449, 0.0058618164, -0.01550823, -0.019261085, 0.032743844, -0.021401205, 0.0033706898, -0.0038522169, 0.0012840723, + 0.0032340137, -0.015238951, -0.032315203, -0.010778739, -0.0084390875, 0.0050796504, 0.0011127333, -0.015238951, 0.071807251, 0.15227202, 0.050790348, 0.039765708, -0.02393575, -0.0052432953, -0.032315203, 0.15227202, 0.32290288, 0.10770429, 0.084325811, -0.05075734, -0.011118754, -0.010778739, 0.050790348, 0.10770429, 0.035924776, 0.028126882, -0.016930116, -0.0037086615, -0.0084390875, 0.039765708, 0.084325811, 0.028126882, 0.022021613, -0.013255236, -0.0029036531, 0.0050796504, -0.02393575, -0.05075734, -0.016930116, -0.013255236, 0.0079785834, 0.0017477651, 0.0011127333, -0.0052432953, -0.011118754, -0.0037086615, -0.0029036531, 0.0017477651, 0.00038286029, + -0.0017514491, 0.0062199801, -0.0010366633, -0.023641044, -0.018223061, -0.01865994, -0.0022115485, 0.0082529792, -0.029309082, 0.004884847, 0.11139863, 0.085868632, 0.087927246, 0.010421007, 0.017500988, -0.062151845, 0.010358641, 0.23622817, 0.18209011, 0.18645554, 0.022098434, 0.0058374562, -0.020730754, 0.0034551257, 0.078793928, 0.060736174, 0.062192262, 0.0073709348, 0.0045703679, -0.016230901, 0.0027051502, 0.061690783, 0.047552676, 0.048692703, 0.0057709871, -0.0027509931, 0.009769694, -0.0016282823, -0.037132878, -0.028622877, -0.029309082, -0.003473669, -0.00060262447, 0.0021401205, -0.00035668675, -0.0081342194, -0.0062700436, -0.0064203616, -0.00076093174, + 0.0011176527, -0.0055979821, 0.0096215317, -0.0062199801, 0.0074348199, -0.02798991, -0.0068003264, -0.0052664757, 0.026378174, -0.045337486, 0.029309082, -0.035033512, 0.13189087, 0.032043724, -0.01116791, 0.055936661, -0.096141136, 0.062151845, -0.074290878, 0.2796833, 0.067950834, -0.0037250574, 0.018657679, -0.032067885, 0.020730754, -0.024779729, 0.093288393, 0.022665007, -0.00291649, 0.014607811, -0.025107175, 0.016230901, -0.019400999, 0.073039055, 0.017745302, 0.0017554919, -0.0087927246, 0.015112495, -0.009769694, 0.011677837, -0.043963623, -0.010681241, 0.00038455291, -0.0019261085, 0.0033104989, -0.0021401205, 0.0025581128, -0.0096305423, -0.0023398014, + 0.00014526085, 0.00017771372, -0.0014513287, -0.00048121656, 0.0046131519, 0.00041466534, -0.00098291043, -0.00068448165, -0.00083740234, 0.0068387858, 0.0022675339, -0.021737569, -0.0019539388, 0.0046315586, -0.0014514886, -0.001775767, 0.014502097, 0.0048084555, -0.046095952, -0.0041434564, 0.0098215262, -0.00048414415, -0.00059230726, 0.004837176, 0.0016038608, -0.015375309, -0.0013820503, 0.003275971, -0.00037905499, -0.00046374003, 0.0037872103, 0.001255724, -0.012037918, -0.0010820601, 0.0025648831, 0.00022816055, 0.00027913411, -0.0022795953, -0.00075584464, 0.0072458564, 0.00065131293, -0.0015438529, 4.9980181e-05, 6.1146301e-05, -0.00049936145, -0.00016557311, 0.0015872561, 0.0001426747, -0.00033819188, + -0.00060356044, 0.001554995, -4.5354021e-05, -0.00095621681, -0.003307604, 0.002798991, 0.0010359434, 0.0028440288, -0.0073272705, 0.00021371206, 0.004505776, 0.015585715, -0.013189087, -0.0048814548, 0.006030951, -0.015537961, 0.00045319054, 0.0095547957, 0.033050539, -0.02796833, -0.010351447, 0.0020116243, -0.0051826885, 0.00015116175, 0.0031870031, 0.01102401, -0.0093288393, -0.0034527263, 0.0015749777, -0.0040577253, 0.00011835032, 0.0024952267, 0.0086311198, -0.0073039055, -0.0027032716, -0.0009480096, 0.0024424235, -7.1237352e-05, -0.0015019253, -0.0051952383, 0.0043963623, 0.0016271516, -0.0002076682, 0.00053503013, -1.5605045e-05, -0.00032900736, -0.0011380537, 0.00096305423, 0.00035643905, + -0.0035764885, 0.011195964, -0.0055979821, -0.0074639761, -0.0069974776, 0.017593658, 0.003731988, 0.016852722, -0.052756348, 0.026378174, 0.035170898, 0.032972717, -0.082902832, -0.017585449, 0.035737311, -0.11187332, 0.055936661, 0.074582214, 0.069920826, -0.17580093, -0.037291107, 0.011920184, -0.037315357, 0.018657679, 0.024876905, 0.023322098, -0.058638419, -0.012438452, 0.0093327681, -0.029215622, 0.014607811, 0.019477081, 0.018259764, -0.045910263, -0.0097385406, -0.0056175741, 0.017585449, -0.0087927246, -0.011723633, -0.010990906, 0.027634277, 0.0058618164, -0.0012305693, 0.0038522169, -0.0019261085, -0.0025681446, -0.0024076356, 0.0060534838, 0.0012840723, + 0.024410051, 0.030317066, -0.051539013, 0.033685629, -0.0053054866, 0.0060634133, -0.0020211378, -0.086688232, -0.10766602, 0.18303223, -0.11962891, 0.018841553, -0.021533203, 0.0071777344, 0.014448039, 0.017944336, -0.030505371, 0.019938151, -0.0031402588, 0.0035888672, -0.0011962891, 0.32948663, 0.40921947, -0.6956731, 0.4546883, -0.071613408, 0.081843895, -0.027281298, 0.25397588, 0.31543579, -0.53624084, 0.35048421, -0.055201263, 0.063087158, -0.021029053, 0.2600647, 0.32299805, -0.54909668, 0.35888672, -0.056524658, 0.064599609, -0.021533203, 0.030822483, 0.03828125, -0.065078125, 0.042534722, -0.0066992187, 0.00765625, -0.0025520833, + -0.0017514491, 0.0082529792, 0.017500988, 0.0058374562, 0.0045703679, -0.0027509931, -0.00060262447, 0.0062199801, -0.029309082, -0.062151845, -0.020730754, -0.016230901, 0.009769694, 0.0021401205, -0.0010366633, 0.004884847, 0.010358641, 0.0034551257, 0.0027051502, -0.0016282823, -0.00035668675, -0.023641044, 0.11139863, 0.23622817, 0.078793928, 0.061690783, -0.037132878, -0.0081342194, -0.018223061, 0.085868632, 0.18209011, 0.060736174, 0.047552676, -0.028622877, -0.0062700436, -0.01865994, 0.087927246, 0.18645554, 0.062192262, 0.048692703, -0.029309082, -0.0064203616, -0.0022115485, 0.010421007, 0.022098434, 0.0073709348, 0.0057709871, -0.003473669, -0.00076093174, + 0.00094853464, -0.0033685629, 0.00056142715, 0.012803312, 0.0098690873, 0.010105689, 0.0011977113, -0.0033685629, 0.011962891, -0.0019938151, -0.04546883, -0.035048421, -0.035888672, -0.0042534722, 0.00056142715, -0.0019938151, 0.00033230252, 0.0075781384, 0.0058414035, 0.0059814453, 0.00070891204, 0.012803312, -0.04546883, 0.0075781384, 0.17281898, 0.13321285, 0.13640649, 0.016166695, 0.0098690873, -0.035048421, 0.0058414035, 0.13321285, 0.10268353, 0.10514526, 0.012461661, 0.010105689, -0.035888672, 0.0059814453, 0.13640649, 0.10514526, 0.10766602, 0.012760417, 0.0011977113, -0.0042534722, 0.00070891204, 0.016166695, 0.012461661, 0.012760417, 0.0015123457, + -0.00060528865, 0.0030317066, -0.0052107458, 0.0033685629, -0.0040264854, 0.015158533, 0.0036828619, 0.0021495819, -0.010766602, 0.018505096, -0.011962891, 0.014299393, -0.053833008, -0.013079071, -0.00035826365, 0.0017944336, -0.0030841827, 0.0019938151, -0.0023832321, 0.008972168, 0.0021798452, -0.0081701805, 0.040921947, -0.070334597, 0.04546883, -0.054349461, 0.20460974, 0.049711235, -0.0062977632, 0.031543579, -0.054215527, 0.035048421, -0.041893816, 0.1577179, 0.038318564, -0.0064487457, 0.032299805, -0.055515289, 0.035888672, -0.042898178, 0.16149902, 0.039237213, -0.00076429579, 0.003828125, -0.0065795898, 0.0042534722, -0.0050842285, 0.019140625, 0.0046503364, + -7.8669114e-05, -9.6244655e-05, 0.00078599802, 0.0002606131, -0.0024983508, -0.00022457086, 0.00053231612, 0.00027938026, 0.00034179688, -0.0027913411, -0.00092552405, 0.0088724772, 0.00079752604, -0.0018904321, -4.6563377e-05, -5.6966146e-05, 0.00046522352, 0.00015425401, -0.0014787462, -0.00013292101, 0.00031507202, -0.0010618749, -0.0012991094, 0.010609394, 0.0035177531, -0.033722716, -0.0030312554, 0.0071851979, -0.00081851766, -0.0010013835, 0.008177965, 0.0027115651, -0.025994246, -0.0023365614, 0.0055385159, -0.00083814079, -0.0010253906, 0.0083740234, 0.0027765721, -0.026617432, -0.0023925781, 0.0056712963, -9.9335205e-05, -0.00012152778, 0.00099247685, 0.00032907522, -0.0031546586, -0.00028356481, 0.00067215364, + 0.00032687103, -0.00084214073, 2.4562438e-05, 0.00051785962, 0.0017913035, -0.0015158533, -0.00056103727, -0.0011608281, 0.0029907227, -8.7229411e-05, -0.0018390922, -0.0063615163, 0.0053833008, 0.0019924305, 0.00019347135, -0.00049845378, 1.4538235e-05, 0.00030651537, 0.0010602527, -0.0008972168, -0.00033207175, 0.0044121021, -0.011367208, 0.00033154355, 0.0069900642, 0.024178998, -0.020460974, -0.0075728758, 0.0034009499, -0.0087621053, 0.0002555614, 0.0053881024, 0.018637728, -0.01577179, -0.005837347, 0.0034824842, -0.008972168, 0.00026168823, 0.0055172767, 0.019084549, -0.016149902, -0.0059772915, 0.00041273887, -0.0010633681, 3.1014902e-05, 0.00065389946, 0.0022618725, -0.0019140625, -0.00070841974, + 0.0019369237, -0.0060634133, 0.0030317066, 0.0040422755, 0.0037896333, -0.0095282208, -0.0020211378, -0.0068786621, 0.021533203, -0.010766602, -0.014355469, -0.013458252, 0.033837891, 0.0071777344, 0.0011464437, -0.0035888672, 0.0017944336, 0.0023925781, 0.002243042, -0.0056396484, -0.0011962891, 0.026144577, -0.081843895, 0.040921947, 0.054562596, 0.051152434, -0.12861183, -0.027281298, 0.020152842, -0.063087158, 0.031543579, 0.042058105, 0.039429474, -0.099136963, -0.021029053, 0.020635986, -0.064599609, 0.032299805, 0.043066406, 0.040374756, -0.10151367, -0.021533203, 0.0024457465, -0.00765625, 0.003828125, 0.0051041667, 0.0047851562, -0.01203125, -0.0025520833, + -0.015576792, -0.019346237, 0.032888603, -0.021495819, 0.0033855915, -0.0038692474, 0.0012897491, 0.078019409, 0.096899414, -0.164729, 0.10766602, -0.016957397, 0.019379883, -0.0064599609, -0.13409586, -0.16654587, 0.28312798, -0.18505096, 0.029145527, -0.033309174, 0.011103058, 0.086688232, 0.10766602, -0.18303223, 0.11962891, -0.018841553, 0.021533203, -0.0071777344, -0.10361953, -0.12869453, 0.21878071, -0.14299393, 0.022521544, -0.025738907, 0.0085796356, 0.39009705, 0.48449707, -0.82364502, 0.53833008, -0.084786987, 0.096899414, -0.032299805, 0.094776554, 0.11771164, -0.20010979, 0.13079071, -0.020599537, 0.023542328, -0.0078474426, + 0.0011176527, -0.0052664757, -0.01116791, -0.0037250574, -0.00291649, 0.0017554919, 0.00038455291, -0.0055979821, 0.026378174, 0.055936661, 0.018657679, 0.014607811, -0.0087927246, -0.0019261085, 0.0096215317, -0.045337486, -0.096141136, -0.032067885, -0.025107175, 0.015112495, 0.0033104989, -0.0062199801, 0.029309082, 0.062151845, 0.020730754, 0.016230901, -0.009769694, -0.0021401205, 0.0074348199, -0.035033512, -0.074290878, -0.024779729, -0.019400999, 0.011677837, 0.0025581128, -0.02798991, 0.13189087, 0.2796833, 0.093288393, 0.073039055, -0.043963623, -0.0096305423, -0.0068003264, 0.032043724, 0.067950834, 0.022665007, 0.017745302, -0.010681241, -0.0023398014, + -0.00060528865, 0.0021495819, -0.00035826365, -0.0081701805, -0.0062977632, -0.0064487457, -0.00076429579, 0.0030317066, -0.010766602, 0.0017944336, 0.040921947, 0.031543579, 0.032299805, 0.003828125, -0.0052107458, 0.018505096, -0.0030841827, -0.070334597, -0.054215527, -0.055515289, -0.0065795898, 0.0033685629, -0.011962891, 0.0019938151, 0.04546883, 0.035048421, 0.035888672, 0.0042534722, -0.0040264854, 0.014299393, -0.0023832321, -0.054349461, -0.041893816, -0.042898178, -0.0050842285, 0.015158533, -0.053833008, 0.008972168, 0.20460974, 0.1577179, 0.16149902, 0.019140625, 0.0036828619, -0.013079071, 0.0021798452, 0.049711235, 0.038318564, 0.039237213, 0.0046503364, + 0.000386253, -0.0019346237, 0.0033251345, -0.0021495819, 0.0025694221, -0.0096731186, -0.0023501456, -0.0019346237, 0.0096899414, -0.016654587, 0.010766602, -0.012869453, 0.048449707, 0.011771164, 0.0033251345, -0.016654587, 0.028625071, -0.018505096, 0.022119373, -0.083272934, -0.020231688, -0.0021495819, 0.010766602, -0.018505096, 0.011962891, -0.014299393, 0.053833008, 0.013079071, 0.0025694221, -0.012869453, 0.022119373, -0.014299393, 0.017092243, -0.064347267, -0.015633577, -0.0096731186, 0.048449707, -0.083272934, 0.053833008, -0.064347267, 0.24224854, 0.05885582, -0.0023501456, 0.011771164, -0.020231688, 0.013079071, -0.015633577, 0.05885582, 0.014299395, + 5.0201141e-05, 6.1416626e-05, -0.00050156911, -0.0001663051, 0.0015942732, 0.00014330546, -0.00033968702, -0.00025144224, -0.00030761719, 0.002512207, 0.00083297164, -0.0079852295, -0.00071777344, 0.0017013889, 0.00043216635, 0.00052871704, -0.0043178558, -0.00143167, 0.013724613, 0.0012336731, -0.0029242622, -0.00027938026, -0.00034179688, 0.0027913411, 0.00092552405, -0.0088724772, -0.00079752604, 0.0018904321, 0.00033394672, 0.00040855408, -0.003336525, -0.0011062905, 0.010605383, 0.00095329285, -0.0022596571, -0.0012572112, -0.0015380859, 0.012561035, 0.0041648582, -0.039926147, -0.0035888672, 0.0085069444, -0.00030544744, -0.00037368774, 0.0030517832, 0.0010118787, -0.009700311, -0.00087193807, 0.0020668162, + -0.00020858629, 0.00053739548, -1.5674035e-05, -0.00033046189, -0.001143085, 0.00096731186, 0.00035801486, 0.0010447453, -0.0026916504, 7.850647e-05, 0.001655183, 0.0057253647, -0.0048449707, -0.0017931875, -0.0017956559, 0.0046262741, -0.00013493299, -0.0028448458, -0.0098404706, 0.0083272934, 0.0030820409, 0.0011608281, -0.0029907227, 8.7229411e-05, 0.0018390922, 0.0063615163, -0.0053833008, -0.0019924305, -0.0013875523, 0.0035748482, -0.00010426641, -0.0021982899, -0.007604, 0.0064347267, 0.0023815771, 0.0052237263, -0.013458252, 0.00039253235, 0.0082759151, 0.028626823, -0.024224854, -0.0089659373, 0.0012691375, -0.0032697678, 9.5368226e-05, 0.0020106861, 0.0069550685, -0.005885582, -0.0021783314, + -0.0012360096, 0.0038692474, -0.0019346237, -0.0025794983, -0.0024182796, 0.006080246, 0.0012897491, 0.0061907959, -0.019379883, 0.0096899414, 0.012919922, 0.012112427, -0.030454102, -0.0064599609, -0.01064043, 0.033309174, -0.016654587, -0.022206116, -0.020818233, 0.052342987, 0.011103058, 0.0068786621, -0.021533203, 0.010766602, 0.014355469, 0.013458252, -0.033837891, -0.0071777344, -0.0082221508, 0.025738907, -0.012869453, -0.017159271, -0.016086817, 0.040446854, 0.0085796356, 0.030953979, -0.096899414, 0.048449707, 0.064599609, 0.060562134, -0.15227051, -0.032299805, 0.0075204659, -0.023542328, 0.011771164, 0.015694885, 0.014713955, -0.036995087, -0.0078474426, + -0.0020245091, -0.0025144224, 0.004274518, -0.0027938026, 0.00044002392, -0.00050288448, 0.00016762816, -0.0024768066, -0.0030761719, 0.0052294922, -0.0034179688, 0.00053833008, -0.00061523438, 0.00020507813, 0.020227254, 0.02512207, -0.04270752, 0.027913411, -0.0043963623, 0.0050244141, -0.0016748047, 0.0067067439, 0.0083297164, -0.014160518, 0.0092552405, -0.0014577004, 0.0016659433, -0.00055531443, -0.064293772, -0.079852295, 0.1357489, -0.088724772, 0.013974152, -0.015970459, 0.0053234863, -0.0057792155, -0.0071777344, 0.012202148, -0.0079752604, 0.0012561035, -0.0014355469, 0.00047851562, 0.013698881, 0.017013889, -0.028923611, 0.018904321, -0.0029774306, 0.0034027778, -0.0011342593, + 0.00014526085, -0.00068448165, -0.0014514886, -0.00048414415, -0.00037905499, 0.00022816055, 4.9980181e-05, 0.00017771372, -0.00083740234, -0.001775767, -0.00059230726, -0.00046374003, 0.00027913411, 6.1146301e-05, -0.0014513287, 0.0068387858, 0.014502097, 0.004837176, 0.0037872103, -0.0022795953, -0.00049936145, -0.00048121656, 0.0022675339, 0.0048084555, 0.0016038608, 0.001255724, -0.00075584464, -0.00016557311, 0.0046131519, -0.021737569, -0.046095952, -0.015375309, -0.012037918, 0.0072458564, 0.0015872561, 0.00041466534, -0.0019539388, -0.0041434564, -0.0013820503, -0.0010820601, 0.00065131293, 0.0001426747, -0.00098291043, 0.0046315586, 0.0098215262, 0.003275971, 0.0025648831, -0.0015438529, -0.00033819188, + -7.8669114e-05, 0.00027938026, -4.6563377e-05, -0.0010618749, -0.00081851766, -0.00083814079, -9.9335205e-05, -9.6244655e-05, 0.00034179688, -5.6966146e-05, -0.0012991094, -0.0010013835, -0.0010253906, -0.00012152778, 0.00078599802, -0.0027913411, 0.00046522352, 0.010609394, 0.008177965, 0.0083740234, 0.00099247685, 0.0002606131, -0.00092552405, 0.00015425401, 0.0035177531, 0.0027115651, 0.0027765721, 0.00032907522, -0.0024983508, 0.0088724772, -0.0014787462, -0.033722716, -0.025994246, -0.026617432, -0.0031546586, -0.00022457086, 0.00079752604, -0.00013292101, -0.0030312554, -0.0023365614, -0.0023925781, -0.00028356481, 0.00053231612, -0.0018904321, 0.00031507202, 0.0071851979, 0.0055385159, 0.0056712963, 0.00067215364, + 5.0201141e-05, -0.00025144224, 0.00043216635, -0.00027938026, 0.00033394672, -0.0012572112, -0.00030544744, 6.1416626e-05, -0.00030761719, 0.00052871704, -0.00034179688, 0.00040855408, -0.0015380859, -0.00037368774, -0.00050156911, 0.002512207, -0.0043178558, 0.0027913411, -0.003336525, 0.012561035, 0.0030517832, -0.0001663051, 0.00083297164, -0.00143167, 0.00092552405, -0.0011062905, 0.0041648582, 0.0010118787, 0.0015942732, -0.0079852295, 0.013724613, -0.0088724772, 0.010605383, -0.039926147, -0.009700311, 0.00014330546, -0.00071777344, 0.0012336731, -0.00079752604, 0.00095329285, -0.0035888672, -0.00087193807, -0.00033968702, 0.0017013889, -0.0029242622, 0.0018904321, -0.0022596571, 0.0085069444, 0.0020668162, + 6.5246214e-06, 7.9822933e-06, -6.5188728e-05, -2.1614605e-05, 0.00020720703, 1.8625351e-05, -4.414898e-05, 7.9822933e-06, 9.765625e-06, -7.9752604e-05, -2.6443544e-05, 0.00025349935, 2.2786458e-05, -5.4012346e-05, -6.5188728e-05, -7.9752604e-05, 0.00065131293, 0.00021595561, -0.0020702447, -0.00018608941, 0.00044110082, -2.1614605e-05, -2.6443544e-05, 0.00021595561, 7.160433e-05, -0.00068643034, -6.1701603e-05, 0.00014625565, 0.00020720703, 0.00025349935, -0.0020702447, -0.00068643034, 0.0065804206, 0.00059149848, -0.0014020705, 1.8625351e-05, 2.2786458e-05, -0.00018608941, -6.1701603e-05, 0.00059149848, 5.3168403e-05, -0.00012602881, -4.414898e-05, -5.4012346e-05, 0.00044110082, 0.00014625565, -0.0014020705, -0.00012602881, 0.00029873495, + -2.7109874e-05, 6.9845066e-05, -2.0371478e-06, -4.2949994e-05, -0.00014856628, 0.00012572112, 4.6531042e-05, -3.3166516e-05, 8.5449219e-05, -2.4922689e-06, -5.2545493e-05, -0.00018175761, 0.00015380859, 5.6926586e-05, 0.00027085988, -0.00069783529, 2.0353529e-05, 0.00042912152, 0.0014843538, -0.0012561035, -0.00046490045, 8.9808921e-05, -0.00023138101, 6.7486129e-06, 0.00014228368, 0.00049216669, -0.00041648582, -0.00015414689, -0.00086094749, 0.0022181193, -6.4695146e-05, -0.0013639934, -0.0047181246, 0.0039926147, 0.0014777193, -7.7388538e-05, 0.00019938151, -5.8152941e-06, -0.00012260615, -0.00042410109, 0.00035888672, 0.0001328287, 0.0001834395, -0.00047260802, 1.3784401e-05, 0.00029062198, 0.0010052767, -0.00085069444, -0.00031485322, + -0.00016064365, 0.00050288448, -0.00025144224, -0.00033525632, -0.0003143028, 0.00079024703, 0.00016762816, -0.0001965332, 0.00061523438, -0.00030761719, -0.00041015625, -0.00038452148, 0.00096679688, 0.00020507813, 0.0016050212, -0.0050244141, 0.002512207, 0.0033496094, 0.0031402588, -0.0078955078, -0.0016748047, 0.00053217633, -0.0016659433, 0.00083297164, 0.0011106289, 0.0010412146, -0.0026179109, -0.00055531443, -0.0051016744, 0.015970459, -0.0079852295, -0.010646973, -0.0099815369, 0.025096436, 0.0053234863, -0.00045857747, 0.0014355469, -0.00071777344, -0.00095703125, -0.0008972168, 0.0022558594, 0.00047851562, 0.0010869985, -0.0034027778, 0.0017013889, 0.0022685185, 0.0021267361, -0.0053472222, -0.0011342593, + 0.0084118577, 0.010447453, -0.01776067, 0.011608281, -0.0018283042, 0.0020894905, -0.00069649685, -0.021672058, -0.026916504, 0.045758057, -0.029907227, 0.0047103882, -0.0053833008, 0.0017944336, 0.00063210169, 0.0007850647, -0.00133461, 0.00087229411, -0.00013738632, 0.00015701294, -5.2337646e-05, 0.013326851, 0.01655183, -0.028138111, 0.018390922, -0.0028965703, 0.003310366, -0.0011034553, 0.046098274, 0.057253647, -0.0973312, 0.063615163, -0.010019388, 0.011450729, -0.0038169098, -0.039009705, -0.048449707, 0.082364502, -0.053833008, 0.0084786987, -0.0096899414, 0.0032299805, -0.014438005, -0.017931875, 0.030484187, -0.019924305, 0.0031380781, -0.0035863749, 0.0011954583, + -0.00060356044, 0.0028440288, 0.006030951, 0.0020116243, 0.0015749777, -0.0009480096, -0.0002076682, 0.001554995, -0.0073272705, -0.015537961, -0.0051826885, -0.0040577253, 0.0024424235, 0.00053503013, -4.5354021e-05, 0.00021371206, 0.00045319054, 0.00015116175, 0.00011835032, -7.1237352e-05, -1.5605045e-05, -0.00095621681, 0.004505776, 0.0095547957, 0.0031870031, 0.0024952267, -0.0015019253, -0.00032900736, -0.003307604, 0.015585715, 0.033050539, 0.01102401, 0.0086311198, -0.0051952383, -0.0011380537, 0.002798991, -0.013189087, -0.02796833, -0.0093288393, -0.0073039055, 0.0043963623, 0.00096305423, 0.0010359434, -0.0048814548, -0.010351447, -0.0034527263, -0.0027032716, 0.0016271516, 0.00035643905, + 0.00032687103, -0.0011608281, 0.00019347135, 0.0044121021, 0.0034009499, 0.0034824842, 0.00041273887, -0.00084214073, 0.0029907227, -0.00049845378, -0.011367208, -0.0087621053, -0.008972168, -0.0010633681, 2.4562438e-05, -8.7229411e-05, 1.4538235e-05, 0.00033154355, 0.0002555614, 0.00026168823, 3.1014902e-05, 0.00051785962, -0.0018390922, 0.00030651537, 0.0069900642, 0.0053881024, 0.0055172767, 0.00065389946, 0.0017913035, -0.0063615163, 0.0010602527, 0.024178998, 0.018637728, 0.019084549, 0.0022618725, -0.0015158533, 0.0053833008, -0.0008972168, -0.020460974, -0.01577179, -0.016149902, -0.0019140625, -0.00056103727, 0.0019924305, -0.00033207175, -0.0075728758, -0.005837347, -0.0059772915, -0.00070841974, + -0.00020858629, 0.0010447453, -0.0017956559, 0.0011608281, -0.0013875523, 0.0052237263, 0.0012691375, 0.00053739548, -0.0026916504, 0.0046262741, -0.0029907227, 0.0035748482, -0.013458252, -0.0032697678, -1.5674035e-05, 7.850647e-05, -0.00013493299, 8.7229411e-05, -0.00010426641, 0.00039253235, 9.5368226e-05, -0.00033046189, 0.001655183, -0.0028448458, 0.0018390922, -0.0021982899, 0.0082759151, 0.0020106861, -0.001143085, 0.0057253647, -0.0098404706, 0.0063615163, -0.007604, 0.028626823, 0.0069550685, 0.00096731186, -0.0048449707, 0.0083272934, -0.0053833008, 0.0064347267, -0.024224854, -0.005885582, 0.00035801486, -0.0017931875, 0.0030820409, -0.0019924305, 0.0023815771, -0.0089659373, -0.0021783314, + -2.7109874e-05, -3.3166516e-05, 0.00027085988, 8.9808921e-05, -0.00086094749, -7.7388538e-05, 0.0001834395, 6.9845066e-05, 8.5449219e-05, -0.00069783529, -0.00023138101, 0.0022181193, 0.00019938151, -0.00047260802, -2.0371478e-06, -2.4922689e-06, 2.0353529e-05, 6.7486129e-06, -6.4695146e-05, -5.8152941e-06, 1.3784401e-05, -4.2949994e-05, -5.2545493e-05, 0.00042912152, 0.00014228368, -0.0013639934, -0.00012260615, 0.00029062198, -0.00014856628, -0.00018175761, 0.0014843538, 0.00049216669, -0.0047181246, -0.00042410109, 0.0010052767, 0.00012572112, 0.00015380859, -0.0012561035, -0.00041648582, 0.0039926147, 0.00035888672, -0.00085069444, 4.6531042e-05, 5.6926586e-05, -0.00046490045, -0.00015414689, 0.0014777193, 0.0001328287, -0.00031485322, + 0.00011264182, -0.00029020702, 8.4643714e-06, 0.0001784577, 0.00061729451, -0.00052237263, -0.00019333699, -0.00029020702, 0.00074768066, -2.1807353e-05, -0.00045977306, -0.0015903791, 0.0013458252, 0.00049810763, 8.4643714e-06, -2.1807353e-05, 6.3604779e-07, 1.3410048e-05, 4.6386056e-05, -3.9253235e-05, -1.4528139e-05, 0.0001784577, -0.00045977306, 1.3410048e-05, 0.00028272935, 0.00097797561, -0.00082759151, -0.00030630252, 0.00061729451, -0.0015903791, 4.6386056e-05, 0.00097797561, 0.0033828688, -0.0028626823, -0.0010595164, -0.00052237263, 0.0013458252, -3.9253235e-05, -0.00082759151, -0.0028626823, 0.0024224854, 0.00089659373, -0.00019333699, 0.00049810763, -1.4528139e-05, -0.00030630252, -0.0010595164, 0.00089659373, 0.00033184115, + 0.00066747614, -0.0020894905, 0.0010447453, 0.0013929937, 0.0013059316, -0.0032834851, -0.00069649685, -0.0017196655, 0.0053833008, -0.0026916504, -0.0035888672, -0.003364563, 0.0084594727, 0.0017944336, 5.0156911e-05, -0.00015701294, 7.850647e-05, 0.00010467529, 9.8133087e-05, -0.00024673462, -5.2337646e-05, 0.001057478, -0.003310366, 0.001655183, 0.0022069107, 0.0020689788, -0.0052020038, -0.0011034553, 0.0036578719, -0.011450729, 0.0057253647, 0.0076338196, 0.0071567059, -0.017994003, -0.0038169098, -0.0030953979, 0.0096899414, -0.0048449707, -0.0064599609, -0.0060562134, 0.015227051, 0.0032299805, -0.0011456475, 0.0035863749, -0.0017931875, -0.0023909166, -0.0022414843, 0.005635732, 0.0011954583, + 0.049845734, 0.061907959, -0.10524353, 0.068786621, -0.010833893, 0.012381592, -0.0041271973, -0.15603882, -0.19379883, 0.32945801, -0.21533203, 0.033914795, -0.038759766, 0.012919922, 0.078019409, 0.096899414, -0.164729, 0.10766602, -0.016957397, 0.019379883, -0.0064599609, 0.10402588, 0.12919922, -0.21963867, 0.14355469, -0.022609863, 0.025839844, -0.0086132812, 0.097524261, 0.12112427, -0.20591125, 0.13458252, -0.021196747, 0.024224854, -0.0080749512, -0.24520386, -0.30454102, 0.51771973, -0.33837891, 0.053294678, -0.060908203, 0.020302734, -0.052012939, -0.064599609, 0.10981934, -0.071777344, 0.011304932, -0.012919922, 0.0043066406, + -0.0035764885, 0.016852722, 0.035737311, 0.011920184, 0.0093327681, -0.0056175741, -0.0012305693, 0.011195964, -0.052756348, -0.11187332, -0.037315357, -0.029215622, 0.017585449, 0.0038522169, -0.0055979821, 0.026378174, 0.055936661, 0.018657679, 0.014607811, -0.0087927246, -0.0019261085, -0.0074639761, 0.035170898, 0.074582214, 0.024876905, 0.019477081, -0.011723633, -0.0025681446, -0.0069974776, 0.032972717, 0.069920826, 0.023322098, 0.018259764, -0.010990906, -0.0024076356, 0.017593658, -0.082902832, -0.17580093, -0.058638419, -0.045910263, 0.027634277, 0.0060534838, 0.003731988, -0.017585449, -0.037291107, -0.012438452, -0.0097385406, 0.0058618164, 0.0012840723, + 0.0019369237, -0.0068786621, 0.0011464437, 0.026144577, 0.020152842, 0.020635986, 0.0024457465, -0.0060634133, 0.021533203, -0.0035888672, -0.081843895, -0.063087158, -0.064599609, -0.00765625, 0.0030317066, -0.010766602, 0.0017944336, 0.040921947, 0.031543579, 0.032299805, 0.003828125, 0.0040422755, -0.014355469, 0.0023925781, 0.054562596, 0.042058105, 0.043066406, 0.0051041667, 0.0037896333, -0.013458252, 0.002243042, 0.051152434, 0.039429474, 0.040374756, 0.0047851562, -0.0095282208, 0.033837891, -0.0056396484, -0.12861183, -0.099136963, -0.10151367, -0.01203125, -0.0020211378, 0.0071777344, -0.0011962891, -0.027281298, -0.021029053, -0.021533203, -0.0025520833, + -0.0012360096, 0.0061907959, -0.01064043, 0.0068786621, -0.0082221508, 0.030953979, 0.0075204659, 0.0038692474, -0.019379883, 0.033309174, -0.021533203, 0.025738907, -0.096899414, -0.023542328, -0.0019346237, 0.0096899414, -0.016654587, 0.010766602, -0.012869453, 0.048449707, 0.011771164, -0.0025794983, 0.012919922, -0.022206116, 0.014355469, -0.017159271, 0.064599609, 0.015694885, -0.0024182796, 0.012112427, -0.020818233, 0.013458252, -0.016086817, 0.060562134, 0.014713955, 0.006080246, -0.030454102, 0.052342987, -0.033837891, 0.040446854, -0.15227051, -0.036995087, 0.0012897491, -0.0064599609, 0.011103058, -0.0071777344, 0.0085796356, -0.032299805, -0.0078474426, + -0.00016064365, -0.0001965332, 0.0016050212, 0.00053217633, -0.0051016744, -0.00045857747, 0.0010869985, 0.00050288448, 0.00061523438, -0.0050244141, -0.0016659433, 0.015970459, 0.0014355469, -0.0034027778, -0.00025144224, -0.00030761719, 0.002512207, 0.00083297164, -0.0079852295, -0.00071777344, 0.0017013889, -0.00033525632, -0.00041015625, 0.0033496094, 0.0011106289, -0.010646973, -0.00095703125, 0.0022685185, -0.0003143028, -0.00038452148, 0.0031402588, 0.0010412146, -0.0099815369, -0.0008972168, 0.0021267361, 0.00079024703, 0.00096679688, -0.0078955078, -0.0026179109, 0.025096436, 0.0022558594, -0.0053472222, 0.00016762816, 0.00020507813, -0.0016748047, -0.00055531443, 0.0053234863, 0.00047851562, -0.0011342593, + 0.00066747614, -0.0017196655, 5.0156911e-05, 0.001057478, 0.0036578719, -0.0030953979, -0.0011456475, -0.0020894905, 0.0053833008, -0.00015701294, -0.003310366, -0.011450729, 0.0096899414, 0.0035863749, 0.0010447453, -0.0026916504, 7.850647e-05, 0.001655183, 0.0057253647, -0.0048449707, -0.0017931875, 0.0013929937, -0.0035888672, 0.00010467529, 0.0022069107, 0.0076338196, -0.0064599609, -0.0023909166, 0.0013059316, -0.003364563, 9.8133087e-05, 0.0020689788, 0.0071567059, -0.0060562134, -0.0022414843, -0.0032834851, 0.0084594727, -0.00024673462, -0.0052020038, -0.017994003, 0.015227051, 0.005635732, -0.00069649685, 0.0017944336, -5.2337646e-05, -0.0011034553, -0.0038169098, 0.0032299805, 0.0011954583, + 0.0039552307, -0.012381592, 0.0061907959, 0.0082543945, 0.0077384949, -0.019456787, -0.0041271973, -0.012381592, 0.038759766, -0.019379883, -0.025839844, -0.024224854, 0.060908203, 0.012919922, 0.0061907959, -0.019379883, 0.0096899414, 0.012919922, 0.012112427, -0.030454102, -0.0064599609, 0.0082543945, -0.025839844, 0.012919922, 0.017226562, 0.016149902, -0.040605469, -0.0086132812, 0.0077384949, -0.024224854, 0.012112427, 0.016149902, 0.015140533, -0.038067627, -0.0080749512, -0.019456787, 0.060908203, -0.030454102, -0.040605469, -0.038067627, 0.095712891, 0.020302734, -0.0041271973, 0.012919922, -0.0064599609, -0.0086132812, -0.0080749512, 0.020302734, 0.0043066406, +}; + +static double dgq7_refined_onto_dgq7[] = +{ + 0.66435707, 0.82284563, -1.7296486, 1.7246505, -0.93375832, 0.59466422, -0.40898152, -0.030484761, 0.82284563, 1.0191431, -2.1422724, 2.1360819, -1.1565151, 0.73652691, -0.50654787, -0.037757185, -1.7296486, -2.1422724, 4.5031271, -4.4901145, 2.4310328, -1.5482038, 1.0647803, 0.079366846, 1.7246505, 2.1360819, -4.4901145, 4.4771395, -2.4240078, 1.54373, -1.0617034, -0.079137501, -0.93375832, -1.1565151, 2.4310328, -2.4240078, 1.3124036, -0.83580456, 0.57482628, 0.042846537, 0.59466422, 0.73652691, -1.5482038, 1.54373, -0.83580456, 0.53228234, -0.36607826, -0.027286828, -0.40898152, -0.50654787, 1.0647803, -1.0617034, 0.57482628, -0.36607826, 0.25177107, 0.018766571, -0.030484761, -0.037757185, 0.079366846, -0.079137501, 0.042846537, -0.027286828, 0.018766571, 0.0013988271, + -0.039696689, 0.20175067, 0.45678682, 0.19823369, 0.090608273, -0.051622037, -0.077032006, -0.010079623, -0.049166703, 0.24988017, 0.56575757, 0.24552418, 0.11222372, -0.063936955, -0.095408709, -0.012484211, 0.10335003, -0.52525636, -1.189241, -0.51609991, -0.23589795, 0.13439759, 0.20055225, 0.026242222, -0.10305138, 0.52373853, 1.1858045, 0.51460854, 0.23521628, -0.13400922, -0.19997271, -0.02616639, 0.055793963, -0.28356193, -0.64201694, -0.27861878, -0.12735054, 0.072555121, 0.108269, 0.014166977, -0.035532399, 0.18058648, 0.40886865, 0.17743844, 0.081103221, -0.046206747, -0.068951141, -0.0090222431, 0.024437479, -0.12419872, -0.28120024, -0.12203365, -0.055778904, 0.031778784, 0.047421287, 0.006205066, 0.0018215266, -0.0092575535, -0.02096017, -0.0090961726, -0.0041576611, 0.0023687345, 0.0035346991, 0.00046251467, + 0.023240384, -0.091879897, 0.047509062, 0.28079715, 0.30352108, 0.23167502, 0.083766316, 0.00036782483, 0.028784593, -0.1137987, 0.058842791, 0.34778392, 0.37592886, 0.28694325, 0.10374955, 0.00045557286, -0.060506163, 0.23920862, -0.12368948, -0.73105326, -0.79021485, -0.60316417, -0.21808497, -0.00095762916, 0.060331319, -0.23851738, 0.12333206, 0.72894074, 0.78793138, 0.60142121, 0.21745477, 0.00095486191, -0.032664515, 0.12913781, -0.066774306, -0.39466228, -0.42660092, -0.3256208, -0.11773412, -0.00051698027, 0.020802405, -0.082241448, 0.042525233, 0.25134077, 0.2716809, 0.20737169, 0.074979003, 0.00032923901, -0.014306896, 0.056561723, -0.029246815, -0.17286012, -0.18684909, -0.1426203, -0.051566962, -0.0002264348, -0.0010664108, 0.004216011, -0.002180006, -0.012884689, -0.013927402, -0.010630665, -0.0038437103, -1.687805e-05, + -0.012685726, 0.046350995, 0.0019513964, -0.21932274, 0.29369939, 0.066851313, 0.44574228, 0.075655742, -0.015712024, 0.057408457, 0.0024169202, -0.27164422, 0.36376411, 0.082799317, 0.55207825, 0.093704124, 0.033027191, -0.12067447, -0.0050804459, 0.5710051, -0.76464414, -0.17404689, -1.1604867, -0.19696915, -0.032931753, 0.12032575, 0.005065765, -0.56935507, 0.76243456, 0.17354395, 1.1571332, 0.19639997, 0.017829873, -0.065146635, -0.0027427008, 0.30825958, -0.41279646, -0.09395997, -0.62649377, -0.10633465, -0.011354959, 0.041488651, 0.0017466897, -0.19631519, 0.26288953, 0.05983843, 0.39898272, 0.067719251, 0.0078093959, -0.028533904, -0.0012012894, 0.13501617, -0.18080281, -0.041154002, -0.27440117, -0.046574052, 0.00058209859, -0.0021268668, -8.954199e-05, 0.010063867, -0.013476722, -0.0030675467, -0.020453379, -0.0034715477, + 0.0051649911, -0.03759078, 0.09998429, -0.123768, 0.11322927, -0.18915149, 0.19038944, 0.058580649, 0.0063971479, -0.04655841, 0.12383647, -0.15329401, 0.14024116, -0.23427534, 0.23580862, 0.072555608, -0.013447015, 0.097867311, -0.26030835, 0.32222905, -0.29479154, 0.49245449, -0.49567748, -0.15251428, 0.013408158, -0.097584505, 0.25955613, -0.32129791, 0.29393968, -0.49103145, 0.49424512, 0.15207356, -0.0072594298, 0.052834093, -0.14052859, 0.17395675, -0.15914449, 0.2658537, -0.26759364, -0.082335495, 0.0046231696, -0.033647405, 0.089495668, -0.1107844, 0.10135121, -0.16930899, 0.17041708, 0.052435381, -0.0031795943, 0.023141071, -0.061550827, 0.076192197, -0.069704501, 0.1164426, -0.11720469, -0.036062539, -0.00023700135, 0.0017248946, -0.0045878901, 0.0056792319, -0.0051956505, 0.0086794262, -0.0087362308, -0.0026880381, + 0.0062768122, -0.015216389, -0.015351692, 0.059425458, -0.019000422, -0.00089385118, -0.070220007, -0.0089358298, 0.0077742042, -0.0188464, -0.019013981, 0.073601955, -0.02353315, -0.0011070877, -0.086971643, -0.011067555, -0.016341633, 0.039615753, 0.039968015, -0.15471373, 0.049467457, 0.0023271348, 0.18281726, 0.023264365, 0.016294411, -0.039501276, -0.03985252, 0.15426666, -0.049324511, -0.0023204101, -0.18228897, -0.023197139, -0.0088221017, 0.021386737, 0.021576907, -0.083522881, 0.026705221, 0.0012563138, 0.098694691, 0.012559369, 0.0056183576, -0.013620148, -0.013741258, 0.053191568, -0.017007227, -0.00080008378, -0.062853739, -0.0079984371, -0.0038640369, 0.0093672848, 0.0094505783, -0.036582609, 0.011696755, 0.00055025924, 0.043227786, 0.0055009414, -0.00028801849, 0.00069822088, 0.00070442943, -0.0027268031, 0.00087185547, 4.1015353e-05, 0.0032221229, 0.00041003046, + -0.010139101, 0.033410252, -0.014214324, -0.04106065, 0.0035044489, 0.044828922, 0.031294918, -0.0014925413, -0.012557878, 0.041380579, -0.017605283, -0.05085605, 0.0043404679, 0.055523279, 0.038760612, -0.0018486009, 0.026397074, -0.086983339, 0.037006885, 0.10690109, -0.0091238064, -0.11671176, -0.081476082, 0.00388582, -0.026320794, 0.086731984, -0.036899947, -0.10659218, 0.0090974414, 0.1163745, 0.081240642, -0.0038745912, 0.014250575, -0.046958334, 0.019978328, 0.057711019, -0.0049255265, -0.063007351, -0.043985217, 0.0020977768, -0.0090754822, 0.029905426, -0.012723203, -0.036753277, 0.0031368228, 0.040126247, 0.028011996, -0.0013359697, 0.0062416813, -0.020567518, 0.0087504086, 0.025277141, -0.0021573562, -0.027596908, -0.019265307, 0.00091881587, 0.00046524391, -0.0015330665, 0.00065224002, 0.0018841135, -0.00016080553, -0.0020570248, -0.001436002, 6.8486914e-05, + -0.041515831, 0.15199575, -0.12272913, -0.085084105, -0.013289877, 0.23583754, 0.0122498, -0.026027287, -0.051419819, 0.18825575, -0.1520073, -0.10538171, -0.016460301, 0.29209878, 0.015172104, -0.032236339, 0.10808615, -0.39571978, 0.31952436, 0.22151583, 0.034600095, -0.61400125, -0.031892261, 0.067761845, -0.10777382, 0.39457627, -0.31860103, -0.22087571, -0.034500111, 0.61222698, 0.031800103, -0.067566035, 0.05835078, -0.21363104, 0.17249661, 0.11958628, 0.018679012, -0.33147124, -0.017217176, 0.036581527, -0.037160708, 0.13605098, -0.10985451, -0.076158553, -0.011895733, 0.21109754, 0.010964763, -0.023296954, 0.025557353, -0.09356934, 0.075552662, 0.052378199, 0.0081813146, -0.14518276, -0.0075410378, 0.016022528, 0.001905, -0.0069744935, 0.0056315621, 0.0039041786, 0.00060982076, -0.010821667, -0.00056209566, 0.0011942909, + -0.039696689, -0.049166703, 0.10335003, -0.10305138, 0.055793963, -0.035532399, 0.024437479, 0.0018215266, 0.20175067, 0.24988017, -0.52525636, 0.52373853, -0.28356193, 0.18058648, -0.12419872, -0.0092575535, 0.45678682, 0.56575757, -1.189241, 1.1858045, -0.64201694, 0.40886865, -0.28120024, -0.02096017, 0.19823369, 0.24552418, -0.51609991, 0.51460854, -0.27861878, 0.17743844, -0.12203365, -0.0090961726, 0.090608273, 0.11222372, -0.23589795, 0.23521628, -0.12735054, 0.081103221, -0.055778904, -0.0041576611, -0.051622037, -0.063936955, 0.13439759, -0.13400922, 0.072555121, -0.046206747, 0.031778784, 0.0023687345, -0.077032006, -0.095408709, 0.20055225, -0.19997271, 0.108269, -0.068951141, 0.047421287, 0.0035346991, -0.010079623, -0.012484211, 0.026242222, -0.02616639, 0.014166977, -0.0090222431, 0.006205066, 0.00046251467, + 0.002371958, -0.012055014, -0.027293943, -0.011844867, -0.0054140289, 0.0030845219, 0.0046028194, 0.000602278, -0.012055014, 0.061267255, 0.13871614, 0.060199223, 0.027515745, -0.015676481, -0.023392931, -0.0030609604, -0.027293943, 0.13871614, 0.31406936, 0.13629799, 0.062298825, -0.035493363, -0.052964297, -0.0069303677, -0.011844867, 0.060199223, 0.13629799, 0.05914981, 0.027036081, -0.015403203, -0.022985137, -0.0030076007, -0.0054140289, 0.027515745, 0.062298825, 0.027036081, 0.0123576, -0.0070404665, -0.010506003, -0.0013747083, 0.0030845219, -0.015676481, -0.035493363, -0.015403203, -0.0070404665, 0.0040111484, 0.0059855601, 0.00078320934, 0.0046028194, -0.023392931, -0.052964297, -0.022985137, -0.010506003, 0.0059855601, 0.0089318385, 0.0011687293, 0.000602278, -0.0030609604, -0.0069303677, -0.0030076007, -0.0013747083, 0.00078320934, 0.0011687293, 0.00015292799, + -0.0013886603, 0.005490011, -0.0028387633, -0.016778202, -0.018136003, -0.013843055, -0.0050052081, -2.1978283e-05, 0.0070575948, -0.02790191, 0.01442746, 0.085271936, 0.092172697, 0.070354623, 0.025437993, 0.00011170033, 0.01597921, -0.063173145, 0.032665436, 0.19306551, 0.20868963, 0.15929099, 0.057594554, 0.00025290245, 0.0069345644, -0.027415514, 0.014175956, 0.083785446, 0.090565911, 0.069128177, 0.024994549, 0.00010975313, 0.0031696374, -0.012531031, 0.0064795187, 0.038296491, 0.041395693, 0.031596975, 0.011424461, 5.0165752e-05, -0.00180583, 0.0071392745, -0.0036915609, -0.021818569, -0.02358427, -0.01800167, -0.006508831, -2.8580816e-05, -0.0026947156, 0.010653447, -0.0055086617, -0.032558346, -0.03519318, -0.02686265, -0.0097126796, -4.264918e-05, -0.000352603, 0.0013940014, -0.00072080729, -0.0042602532, -0.0046050206, -0.0035149725, -0.0012709022, -5.5806367e-06, + 0.00075799795, -0.0027695664, -0.00011659991, 0.013104981, -0.017549137, -0.0039945022, -0.02663401, -0.0045205848, -0.0038523767, 0.014075781, 0.0005925963, -0.066603506, 0.089190063, 0.020301278, 0.13536216, 0.02297499, -0.0087222256, 0.031869193, 0.0013417065, -0.15079803, 0.2019366, 0.045964437, 0.30647555, 0.05201803, -0.0037852207, 0.013830407, 0.00058226596, -0.065442451, 0.087635271, 0.019947379, 0.13300248, 0.022574482, -0.0017301414, 0.0063215759, 0.00026614101, -0.02991231, 0.040056162, 0.0091175097, 0.060792517, 0.010318301, 0.00098570939, -0.0036015765, -0.00015162789, 0.01704187, -0.022821103, -0.0051944973, -0.034635177, -0.0058786212, 0.0014709061, -0.0053743842, -0.00022626384, 0.025430407, -0.034054357, -0.0077513901, -0.051683686, -0.008772261, 0.00019246778, -0.00070323711, -2.9606578e-05, 0.0033275637, -0.0044560059, -0.0010142679, -0.0067628001, -0.0011478486, + -0.00030861874, 0.0022461257, -0.0059742651, 0.0073953901, -0.0067656794, 0.011302187, -0.011376157, -0.0035003131, 0.0015684945, -0.011415495, 0.030363036, -0.037585627, 0.034385245, -0.057441161, 0.057817099, 0.017789658, 0.0035512528, -0.025846, 0.06874542, -0.0850982, 0.077852165, -0.13005342, 0.13090459, 0.040277841, 0.001541152, -0.011216497, 0.029833737, -0.036930421, 0.03378583, -0.056439827, 0.056809211, 0.017479543, 0.0007044268, -0.0051268147, 0.013636347, -0.016880086, 0.015442762, -0.025797408, 0.025966245, 0.0079895159, -0.00040133142, 0.0029208881, -0.0077690041, 0.0096170517, -0.0087981685, 0.014697496, -0.014793688, -0.0045518481, -0.0005988792, 0.0043586398, -0.011593149, 0.014350863, -0.0131289, 0.02193206, -0.0220756, -0.006792409, -7.8363224e-05, 0.00057032715, -0.0015169612, 0.0018778076, -0.001717914, 0.0028698057, -0.0028885878, -0.00088878536, + -0.00037505232, 0.00090921023, 0.0009172949, -0.0035507922, 0.001135314, 5.3409429e-05, 0.0041957885, 0.00053393404, 0.0019061302, -0.0046208836, -0.0046619723, 0.018046209, -0.0057700116, -0.000271443, -0.021324276, -0.0027136155, 0.0043156989, -0.010462214, -0.010555244, 0.0408587, -0.013063973, -0.0006145783, -0.048280624, -0.0061439389, 0.0018729019, -0.0045403307, -0.0045807032, 0.017731621, -0.0056694268, -0.00026671111, -0.020952544, -0.0026663109, 0.0008560624, -0.0020752857, -0.002093739, 0.0081047352, -0.0025913707, -0.0001219078, -0.0095769486, -0.0012187123, -0.00048772241, 0.0011823476, 0.001192861, -0.0046174917, 0.0014763755, 6.9454246e-05, 0.0054562524, 0.00069433406, -0.00072779452, 0.0017643358, 0.0017800242, -0.0068903644, 0.0022030934, 0.00010364178, 0.0081419891, 0.0010361068, -9.5231768e-05, 0.00023086299, 0.00023291581, -0.00090160281, 0.00028827433, 1.3561506e-05, 0.0010653777, 0.00013557437, + 0.00060583196, -0.0019963306, 0.00084933481, 0.0024534575, -0.00020939797, -0.0026786194, -0.0018699351, 8.9182384e-05, -0.0030790227, 0.010145961, -0.0043165784, -0.012469219, 0.0010642243, 0.013613561, 0.0095035802, -0.00045325206, -0.006971263, 0.022971627, -0.009773232, -0.028231751, 0.0024095267, 0.030822673, 0.021517203, -0.001026215, -0.0030253481, 0.0099690929, -0.0042413304, -0.012251851, 0.0010456724, 0.013376244, 0.0093379105, -0.00044535082, -0.0013828203, 0.0045566539, -0.0019386191, -0.0056000526, 0.00047795392, 0.0061139881, 0.0042681542, -0.0002035601, 0.00078783096, -0.0025960517, 0.0011044849, 0.0031905048, -0.00027230356, -0.003483308, -0.0024316854, 0.00011597381, 0.0011756258, -0.0038739089, 0.0016481467, 0.0047609702, -0.00040633982, -0.0051979003, -0.0036286365, 0.00017305972, 0.0001538304, -0.0005069002, 0.00021565966, 0.00062297201, -5.3169485e-05, -0.00068014422, -0.00047480636, 2.2644831e-05, + 0.0024806555, -0.0090820556, 0.0073333154, 0.0050839486, 0.00079409724, -0.014091773, -0.0007319505, 0.0015551834, -0.012607447, 0.046157775, -0.037270144, -0.025838177, -0.0040358443, 0.071618688, 0.0037199956, -0.0079039163, -0.028544717, 0.10450653, -0.08438391, -0.058500616, -0.0091376174, 0.16215298, 0.0084224995, -0.017895379, -0.01238767, 0.045353137, -0.036620438, -0.025387757, -0.00396549, 0.070370207, 0.0036551473, -0.0077661325, -0.0056621325, 0.020729925, -0.0167384, -0.011604187, -0.0018125386, 0.032164679, 0.0016706877, -0.0035497289, 0.0032258734, -0.011810411, 0.009536329, 0.0066112262, 0.0010326533, -0.018325107, -0.00095183698, 0.0020223787, 0.0048137484, -0.017623862, 0.014230406, 0.0098654769, 0.0015409573, -0.027345293, -0.0014203607, 0.0030178563, 0.00062987802, -0.0023060789, 0.0018620458, 0.0012908957, 0.00020163396, -0.0035781261, -0.00018585391, 0.00039488589, + 0.023240384, 0.028784593, -0.060506163, 0.060331319, -0.032664515, 0.020802405, -0.014306896, -0.0010664108, -0.091879897, -0.1137987, 0.23920862, -0.23851738, 0.12913781, -0.082241448, 0.056561723, 0.004216011, 0.047509062, 0.058842791, -0.12368948, 0.12333206, -0.066774306, 0.042525233, -0.029246815, -0.002180006, 0.28079715, 0.34778392, -0.73105326, 0.72894074, -0.39466228, 0.25134077, -0.17286012, -0.012884689, 0.30352108, 0.37592886, -0.79021485, 0.78793138, -0.42660092, 0.2716809, -0.18684909, -0.013927402, 0.23167502, 0.28694325, -0.60316417, 0.60142121, -0.3256208, 0.20737169, -0.1426203, -0.010630665, 0.083766316, 0.10374955, -0.21808497, 0.21745477, -0.11773412, 0.074979003, -0.051566962, -0.0038437103, 0.00036782483, 0.00045557286, -0.00095762916, 0.00095486191, -0.00051698027, 0.00032923901, -0.0002264348, -1.687805e-05, + -0.0013886603, 0.0070575948, 0.01597921, 0.0069345644, 0.0031696374, -0.00180583, -0.0026947156, -0.000352603, 0.005490011, -0.02790191, -0.063173145, -0.027415514, -0.012531031, 0.0071392745, 0.010653447, 0.0013940014, -0.0028387633, 0.01442746, 0.032665436, 0.014175956, 0.0064795187, -0.0036915609, -0.0055086617, -0.00072080729, -0.016778202, 0.085271936, 0.19306551, 0.083785446, 0.038296491, -0.021818569, -0.032558346, -0.0042602532, -0.018136003, 0.092172697, 0.20868963, 0.090565911, 0.041395693, -0.02358427, -0.03519318, -0.0046050206, -0.013843055, 0.070354623, 0.15929099, 0.069128177, 0.031596975, -0.01800167, -0.02686265, -0.0035149725, -0.0050052081, 0.025437993, 0.057594554, 0.024994549, 0.011424461, -0.006508831, -0.0097126796, -0.0012709022, -2.1978283e-05, 0.00011170033, 0.00025290245, 0.00010975313, 5.0165752e-05, -2.8580816e-05, -4.264918e-05, -5.5806367e-06, + 0.00081298966, -0.003214121, 0.0016619509, 0.0098227801, 0.010617704, 0.0081044014, 0.0029302937, 1.2867162e-05, -0.003214121, 0.012706895, -0.0065704542, -0.038833955, -0.041976652, -0.032040416, -0.011584795, -5.0869794e-05, 0.0016619509, -0.0065704542, 0.0033974365, 0.020080179, 0.021705198, 0.01656739, 0.0059902412, 2.6303645e-05, 0.0098227801, -0.038833955, 0.020080179, 0.11868172, 0.12828622, 0.09791976, 0.035404669, 0.00015546483, 0.010617704, -0.041976652, 0.021705198, 0.12828622, 0.13866797, 0.10584407, 0.038269846, 0.00016804606, 0.0081044014, -0.032040416, 0.01656739, 0.09791976, 0.10584407, 0.080789861, 0.029211043, 0.00012826811, 0.0029302937, -0.011584795, 0.0059902412, 0.035404669, 0.038269846, 0.029211043, 0.010561784, 4.6377666e-05, 1.2867162e-05, -5.0869794e-05, 2.6303645e-05, 0.00015546483, 0.00016804606, 0.00012826811, 4.6377666e-05, 2.0364817e-07, + -0.00044376908, 0.0016214397, 6.8263293e-05, -0.0076722967, 0.010274123, 0.002338577, 0.015592852, 0.0026465715, 0.0017544227, -0.0064102948, -0.00026987611, 0.030332108, -0.040618322, -0.0092454676, -0.061645698, -0.010463111, -0.00090717319, 0.0033146216, 0.00013954697, -0.015684062, 0.021002836, 0.0047806268, 0.031875626, 0.0054102432, -0.0053617485, 0.019590711, 0.00082477718, -0.092698945, 0.12413498, 0.028255375, 0.18839743, 0.031976655, -0.0057956562, 0.021176119, 0.00089152353, -0.10020075, 0.13418079, 0.030541984, 0.20364377, 0.034564414, -0.0044237743, 0.016163549, 0.0006804922, -0.076482365, 0.10241904, 0.023312433, 0.15543953, 0.026382719, -0.001599496, 0.0058442249, 0.00024604433, -0.02765359, 0.037031465, 0.0084290338, 0.056201989, 0.0095391516, -7.0235195e-06, 2.5662475e-05, 1.080401e-06, -0.0001214292, 0.00016260823, 3.7012585e-05, 0.00024678759, 4.1887204e-05, + 0.00018068051, -0.0013149919, 0.003497627, -0.0043296232, 0.0039609597, -0.0066168533, 0.0066601589, 0.0020492545, -0.00071431294, 0.005198766, -0.013827724, 0.017116986, -0.015659491, 0.026159456, -0.026330663, -0.0081016432, 0.00036935542, -0.0026881669, 0.0071500102, -0.008850815, 0.0080971762, -0.013526476, 0.013615004, 0.0041891805, 0.0021830351, -0.015888118, 0.042259358, -0.05231178, 0.04785748, -0.079946767, 0.080469998, 0.024759696, 0.0023597005, -0.017173888, 0.045679261, -0.056545191, 0.051730419, -0.086416581, 0.086982156, 0.026763412, 0.001801139, -0.013108681, 0.034866585, -0.043160455, 0.039485382, -0.065961029, 0.066392728, 0.020428281, 0.00065123455, -0.0047396818, 0.012606648, -0.015605447, 0.014276658, -0.023849409, 0.024005498, 0.0073862164, 2.8596248e-06, -2.0812335e-05, 5.5356834e-05, -6.8524811e-05, 6.2689986e-05, -0.00010472473, 0.00010541013, 3.2433488e-05, + 0.00021957397, -0.00053229615, -0.00053702931, 0.0020788075, -0.00066466833, -3.1268493e-05, -0.0024564198, -0.00031259111, -0.00086807664, 0.0021044108, 0.0021231232, -0.0082184796, 0.0026277388, 0.00012361869, 0.0097113544, 0.001235816, 0.00044886323, -0.0010881443, -0.00109782, 0.004249594, -0.0013587456, -6.3920492e-05, -0.0050215265, -0.00063901313, 0.0026529573, -0.0064313586, -0.006488546, 0.025116763, -0.0080307182, -0.00037779512, -0.029679187, -0.0037768177, 0.0028676519, -0.0069518261, -0.0070136414, 0.027149376, -0.0086806163, -0.00040836877, -0.03208102, -0.0040824624, 0.0021888539, -0.0053062688, -0.0053534519, 0.020722884, -0.0066258394, -0.00031170435, -0.024487165, -0.0031161083, 0.00079141994, -0.0019185779, -0.0019356379, 0.0074927354, -0.0023956927, -0.00011270238, -0.0088537799, -0.0011266856, 3.4751905e-06, -8.4246346e-06, -8.4995461e-06, 3.2901221e-05, -1.0519685e-05, -4.9488546e-07, -3.887768e-05, -4.9473697e-06, + -0.00035468367, 0.0011687496, -0.00049724215, -0.001436374, 0.00012259181, 0.0015681949, 0.0010947515, -5.2211731e-05, 0.0014022272, -0.0046206033, 0.0019658263, 0.0056786454, -0.00048466167, -0.0061997937, -0.0043280548, 0.00020641692, -0.00072506068, 0.0023892118, -0.0010164853, -0.0029363019, 0.00025060783, 0.0032057761, 0.0022379414, -0.00010673362, -0.0042853924, 0.014121176, -0.0060078259, -0.017354693, 0.0014811903, 0.018947391, 0.013227109, -0.00063083748, -0.0046321943, 0.015263954, -0.0064940183, -0.018759148, 0.0016010579, 0.020480738, 0.014297533, -0.00068188897, -0.0035357139, 0.011650844, -0.0049568281, -0.014318696, 0.0012220737, 0.01563277, 0.010913184, -0.00052047996, -0.0012784016, 0.0042125746, -0.0017922313, -0.0051771848, 0.00044186295, 0.0056523123, 0.0039458599, -0.00018818899, -5.6135674e-06, 1.8497764e-05, -7.869836e-06, -2.2733447e-05, 1.9402568e-06, 2.4819771e-05, 1.7326598e-05, -8.2635344e-07, + -0.0014522971, 0.0053170797, -0.0042932816, -0.0029763923, -0.00046490337, 0.0082500136, 0.00042851963, -0.00091048046, 0.0057415966, -0.021020855, 0.016973311, 0.011767044, 0.0018379763, -0.032616088, -0.0016941347, 0.0035995469, -0.0029688526, 0.010869419, -0.0087765239, -0.006084478, -0.00095037688, 0.016865057, 0.00087599956, -0.0018612461, -0.01754708, 0.06424252, -0.05187269, -0.035961646, -0.0056170992, 0.099679089, 0.0051775002, -0.011000693, -0.018967105, 0.069441444, -0.056070567, -0.038871897, -0.0060716716, 0.10774577, 0.0055964973, -0.01189094, -0.014477427, 0.053004054, -0.042798179, -0.029670583, -0.0046344544, 0.082241416, 0.004271758, -0.0090762521, -0.005234577, 0.019164579, -0.01547446, -0.010727939, -0.0016756713, 0.029735879, 0.0015445318, -0.003281684, -2.2985461e-05, 8.4153254e-05, -6.7949634e-05, -4.7107267e-05, -7.3580112e-06, 0.00013057271, 6.7821669e-06, -1.4410146e-05, + -0.012685726, -0.015712024, 0.033027191, -0.032931753, 0.017829873, -0.011354959, 0.0078093959, 0.00058209859, 0.046350995, 0.057408457, -0.12067447, 0.12032575, -0.065146635, 0.041488651, -0.028533904, -0.0021268668, 0.0019513964, 0.0024169202, -0.0050804459, 0.005065765, -0.0027427008, 0.0017466897, -0.0012012894, -8.954199e-05, -0.21932274, -0.27164422, 0.5710051, -0.56935507, 0.30825958, -0.19631519, 0.13501617, 0.010063867, 0.29369939, 0.36376411, -0.76464414, 0.76243456, -0.41279646, 0.26288953, -0.18080281, -0.013476722, 0.066851313, 0.082799317, -0.17404689, 0.17354395, -0.09395997, 0.05983843, -0.041154002, -0.0030675467, 0.44574228, 0.55207825, -1.1604867, 1.1571332, -0.62649377, 0.39898272, -0.27440117, -0.020453379, 0.075655742, 0.093704124, -0.19696915, 0.19639997, -0.10633465, 0.067719251, -0.046574052, -0.0034715477, + 0.00075799795, -0.0038523767, -0.0087222256, -0.0037852207, -0.0017301414, 0.00098570939, 0.0014709061, 0.00019246778, -0.0027695664, 0.014075781, 0.031869193, 0.013830407, 0.0063215759, -0.0036015765, -0.0053743842, -0.00070323711, -0.00011659991, 0.0005925963, 0.0013417065, 0.00058226596, 0.00026614101, -0.00015162789, -0.00022626384, -2.9606578e-05, 0.013104981, -0.066603506, -0.15079803, -0.065442451, -0.02991231, 0.01704187, 0.025430407, 0.0033275637, -0.017549137, 0.089190063, 0.2019366, 0.087635271, 0.040056162, -0.022821103, -0.034054357, -0.0044560059, -0.0039945022, 0.020301278, 0.045964437, 0.019947379, 0.0091175097, -0.0051944973, -0.0077513901, -0.0010142679, -0.02663401, 0.13536216, 0.30647555, 0.13300248, 0.060792517, -0.034635177, -0.051683686, -0.0067628001, -0.0045205848, 0.02297499, 0.05201803, 0.022574482, 0.010318301, -0.0058786212, -0.008772261, -0.0011478486, + -0.00044376908, 0.0017544227, -0.00090717319, -0.0053617485, -0.0057956562, -0.0044237743, -0.001599496, -7.0235195e-06, 0.0016214397, -0.0064102948, 0.0033146216, 0.019590711, 0.021176119, 0.016163549, 0.0058442249, 2.5662475e-05, 6.8263293e-05, -0.00026987611, 0.00013954697, 0.00082477718, 0.00089152353, 0.0006804922, 0.00024604433, 1.080401e-06, -0.0076722967, 0.030332108, -0.015684062, -0.092698945, -0.10020075, -0.076482365, -0.02765359, -0.0001214292, 0.010274123, -0.040618322, 0.021002836, 0.12413498, 0.13418079, 0.10241904, 0.037031465, 0.00016260823, 0.002338577, -0.0092454676, 0.0047806268, 0.028255375, 0.030541984, 0.023312433, 0.0084290338, 3.7012585e-05, 0.015592852, -0.061645698, 0.031875626, 0.18839743, 0.20364377, 0.15543953, 0.056201989, 0.00024678759, 0.0026465715, -0.010463111, 0.0054102432, 0.031976655, 0.034564414, 0.026382719, 0.0095391516, 4.1887204e-05, + 0.00024223063, -0.00088506021, -3.7261408e-05, 0.0041879107, -0.0056081135, -0.0012765085, -0.0085113331, -0.0014446267, -0.00088506021, 0.0032338254, 0.00013614541, -0.015301752, 0.020490877, 0.0046640956, 0.031098636, 0.0052783648, -3.7261408e-05, 0.00013614541, 5.7317792e-06, -0.00064421021, 0.00086267455, 0.00019636039, 0.0013092657, 0.00022222138, 0.0041879107, -0.015301752, -0.00064421021, 0.072404534, -0.096958333, -0.022069477, -0.14715192, -0.024976064, -0.0056081135, 0.020490877, 0.00086267455, -0.096958333, 0.12983881, 0.02955367, 0.19705403, 0.033445938, -0.0012765085, 0.0046640956, 0.00019636039, -0.022069477, 0.02955367, 0.006726952, 0.044853074, 0.0076129027, -0.0085113331, 0.031098636, 0.0013092657, -0.14715192, 0.19705403, 0.044853074, 0.29906536, 0.050760299, -0.0014446267, 0.0052783648, 0.00022222138, -0.024976064, 0.033445938, 0.0076129027, 0.050760299, 0.0086155346, + -9.8624163e-05, 0.00071778617, -0.001909174, 0.0023633178, -0.0021620834, 0.0036117986, -0.0036354369, -0.0011185823, 0.00036035212, -0.0026226409, 0.0069757237, -0.0086350702, 0.0078998018, -0.013196759, 0.013283128, 0.0040870663, 1.5170976e-05, -0.00011041429, 0.00029368091, -0.00036354009, 0.00033258498, -0.0005555891, 0.0005592253, 0.00017206721, -0.0017051072, 0.012409761, -0.033007594, 0.040859257, -0.037380129, 0.062444167, -0.062852848, -0.019339101, 0.0022833425, -0.016618155, 0.044201117, -0.054715434, 0.050056465, -0.08362021, 0.084167484, 0.02589737, 0.00051973021, -0.0037825939, 0.010060977, -0.012454226, 0.01139376, -0.019033478, 0.019158048, 0.0058947116, 0.0034653879, -0.025221076, 0.067083241, -0.083040631, 0.075969797, -0.12690889, 0.12773948, 0.039303973, 0.00058817954, -0.0042807678, 0.011386024, -0.014094469, 0.012894337, -0.021540219, 0.021681194, 0.0066710549, + -0.0001198541, 0.00029055299, 0.00029313657, -0.0011347137, 0.00036280813, 1.7067856e-05, 0.0013408328, 0.00017062735, 0.00043792187, -0.00106162, -0.0010710599, 0.0041460071, -0.0013256252, -6.2362386e-05, -0.0048991233, -0.00062343674, 1.8436695e-05, -4.469465e-05, -4.5092073e-05, 0.00017454865, -5.580938e-05, -2.6254827e-06, -0.00020625515, -2.6246949e-05, -0.0020721502, 0.005023353, 0.0050680204, -0.019617996, 0.0062725677, 0.00029508512, 0.023181576, 0.0029499658, 0.002774857, -0.0067268706, -0.0067866857, 0.026270844, -0.0083997186, -0.00039515429, -0.031042904, -0.0039503572, 0.00063160785, -0.0015311579, -0.0015447729, 0.0059797211, -0.0019119285, -8.994429e-05, -0.0070659287, -0.00089917303, 0.0042113507, -0.010209251, -0.010300031, 0.039870788, -0.012748102, -0.00059971856, -0.047113258, -0.0059953861, 0.00071479165, -0.0017328139, -0.001748222, 0.0067672602, -0.0021637326, -0.0001017901, -0.0079965232, -0.0010175956, + 0.0001936035, -0.00063796008, 0.00027141882, 0.00078404243, -6.6916542e-05, -0.00085599662, -0.00059756832, 2.8499688e-05, -0.00070738682, 0.0023309731, -0.00099170775, -0.0028647275, 0.00024449909, 0.0031276331, 0.00218339, -0.00010413192, -2.9781283e-05, 9.8134948e-05, -4.1751314e-05, -0.00012060623, 1.0293515e-05, 0.00013167467, 9.1921639e-05, -4.3839976e-06, 0.0033471992, -0.011029653, 0.0046925435, 0.013555262, -0.001156916, -0.014799274, -0.010331322, 0.00049272938, -0.0044823002, 0.014770025, -0.0062838771, -0.018152118, 0.001549249, 0.019817998, 0.013834877, -0.00065982359, -0.0010202529, 0.0033619259, -0.0014303245, -0.0041317516, 0.0003526372, 0.0045109362, 0.0031490691, -0.00015018783, -0.0068027065, 0.022416202, -0.0095369274, -0.027549143, 0.0023512673, 0.030077419, 0.020996944, -0.0010014024, -0.0011546219, 0.0038046971, -0.0016187007, -0.0046759101, 0.0003990801, 0.0051050339, 0.0035638068, -0.00016996782, + 0.000792734, -0.0029023193, 0.0023434808, 0.0016246589, 0.00025376675, -0.0045032565, -0.00023390674, 0.00049698428, -0.0028964847, 0.010604469, -0.0085625899, -0.0059361646, -0.00092721078, 0.01645396, 0.00085464645, -0.0018158769, -0.00012194323, 0.00044645263, -0.00036048864, -0.00024991503, -3.9035964e-05, 0.00069271864, 3.5980976e-05, -7.6449182e-05, 0.01370553, -0.050178022, 0.040516297, 0.028088629, 0.0043873579, -0.077856528, -0.0040439995, 0.008592331, -0.018353344, 0.067194375, -0.054256169, -0.037614034, -0.0058751972, 0.10425921, 0.0054153991, -0.011506159, -0.0041775544, 0.01529466, -0.012349689, -0.0085616371, -0.0013373016, 0.023731288, 0.0012326432, -0.0026190108, -0.027854541, 0.1019797, -0.082343612, -0.057086144, -0.0089166812, 0.15823232, 0.008218854, -0.017462691, -0.0047277453, 0.017308992, -0.013976164, -0.009689219, -0.0015134264, 0.026856738, 0.0013949843, -0.0029639388, + 0.0051649911, 0.0063971479, -0.013447015, 0.013408158, -0.0072594298, 0.0046231696, -0.0031795943, -0.00023700135, -0.03759078, -0.04655841, 0.097867311, -0.097584505, 0.052834093, -0.033647405, 0.023141071, 0.0017248946, 0.09998429, 0.12383647, -0.26030835, 0.25955613, -0.14052859, 0.089495668, -0.061550827, -0.0045878901, -0.123768, -0.15329401, 0.32222905, -0.32129791, 0.17395675, -0.1107844, 0.076192197, 0.0056792319, 0.11322927, 0.14024116, -0.29479154, 0.29393968, -0.15914449, 0.10135121, -0.069704501, -0.0051956505, -0.18915149, -0.23427534, 0.49245449, -0.49103145, 0.2658537, -0.16930899, 0.1164426, 0.0086794262, 0.19038944, 0.23580862, -0.49567748, 0.49424512, -0.26759364, 0.17041708, -0.11720469, -0.0087362308, 0.058580649, 0.072555608, -0.15251428, 0.15207356, -0.082335495, 0.052435381, -0.036062539, -0.0026880381, + -0.00030861874, 0.0015684945, 0.0035512528, 0.001541152, 0.0007044268, -0.00040133142, -0.0005988792, -7.8363224e-05, 0.0022461257, -0.011415495, -0.025846, -0.011216497, -0.0051268147, 0.0029208881, 0.0043586398, 0.00057032715, -0.0059742651, 0.030363036, 0.06874542, 0.029833737, 0.013636347, -0.0077690041, -0.011593149, -0.0015169612, 0.0073953901, -0.037585627, -0.0850982, -0.036930421, -0.016880086, 0.0096170517, 0.014350863, 0.0018778076, -0.0067656794, 0.034385245, 0.077852165, 0.03378583, 0.015442762, -0.0087981685, -0.0131289, -0.001717914, 0.011302187, -0.057441161, -0.13005342, -0.056439827, -0.025797408, 0.014697496, 0.02193206, 0.0028698057, -0.011376157, 0.057817099, 0.13090459, 0.056809211, 0.025966245, -0.014793688, -0.0220756, -0.0028885878, -0.0035003131, 0.017789658, 0.040277841, 0.017479543, 0.0079895159, -0.0045518481, -0.006792409, -0.00088878536, + 0.00018068051, -0.00071431294, 0.00036935542, 0.0021830351, 0.0023597005, 0.001801139, 0.00065123455, 2.8596248e-06, -0.0013149919, 0.005198766, -0.0026881669, -0.015888118, -0.017173888, -0.013108681, -0.0047396818, -2.0812335e-05, 0.003497627, -0.013827724, 0.0071500102, 0.042259358, 0.045679261, 0.034866585, 0.012606648, 5.5356834e-05, -0.0043296232, 0.017116986, -0.008850815, -0.05231178, -0.056545191, -0.043160455, -0.015605447, -6.8524811e-05, 0.0039609597, -0.015659491, 0.0080971762, 0.04785748, 0.051730419, 0.039485382, 0.014276658, 6.2689986e-05, -0.0066168533, 0.026159456, -0.013526476, -0.079946767, -0.086416581, -0.065961029, -0.023849409, -0.00010472473, 0.0066601589, -0.026330663, 0.013615004, 0.080469998, 0.086982156, 0.066392728, 0.024005498, 0.00010541013, 0.0020492545, -0.0081016432, 0.0041891805, 0.024759696, 0.026763412, 0.020428281, 0.0073862164, 3.2433488e-05, + -9.8624163e-05, 0.00036035212, 1.5170976e-05, -0.0017051072, 0.0022833425, 0.00051973021, 0.0034653879, 0.00058817954, 0.00071778617, -0.0026226409, -0.00011041429, 0.012409761, -0.016618155, -0.0037825939, -0.025221076, -0.0042807678, -0.001909174, 0.0069757237, 0.00029368091, -0.033007594, 0.044201117, 0.010060977, 0.067083241, 0.011386024, 0.0023633178, -0.0086350702, -0.00036354009, 0.040859257, -0.054715434, -0.012454226, -0.083040631, -0.014094469, -0.0021620834, 0.0078998018, 0.00033258498, -0.037380129, 0.050056465, 0.01139376, 0.075969797, 0.012894337, 0.0036117986, -0.013196759, -0.0005555891, 0.062444167, -0.08362021, -0.019033478, -0.12690889, -0.021540219, -0.0036354369, 0.013283128, 0.0005592253, -0.062852848, 0.084167484, 0.019158048, 0.12773948, 0.021681194, -0.0011185823, 0.0040870663, 0.00017206721, -0.019339101, 0.02589737, 0.0058947116, 0.039303973, 0.0066710549, + 4.0154812e-05, -0.00029224652, 0.0007773199, -0.00096222445, 0.00088029191, -0.0014705432, 0.0014801676, 0.00045543059, -0.00029224652, 0.0021269687, -0.0056573303, 0.0070030647, -0.0064067601, 0.010702606, -0.010772652, -0.0033146215, 0.0007773199, -0.0056573303, 0.015047418, -0.018626814, 0.017040758, -0.028466887, 0.028653196, 0.0088162599, -0.00096222445, 0.0070030647, -0.018626814, 0.023057657, -0.021094319, 0.035238433, -0.035469059, -0.010913423, 0.00088029191, -0.0064067601, 0.017040758, -0.021094319, 0.019298157, -0.032237912, 0.032448901, 0.0099841549, -0.0014705432, 0.010702606, -0.028466887, 0.035238433, -0.032237912, 0.053854003, -0.054206464, -0.016678707, 0.0014801676, -0.010772652, 0.028653196, -0.035469059, 0.032448901, -0.054206464, 0.054561232, 0.016787865, 0.00045543059, -0.0033146215, 0.0088162599, -0.010913423, 0.0099841549, -0.016678707, 0.016787865, 0.0051654337, + 4.8798576e-05, -0.0001182986, -0.00011935051, 0.0004619985, -0.00014771727, -6.9491748e-06, -0.00054591985, -6.9470897e-05, -0.00035515579, 0.00086097664, 0.00086863241, -0.0033624227, 0.0010750856, 5.0576059e-05, 0.0039732019, 0.00050560884, 0.00094464654, -0.0022900333, -0.0023103962, 0.0089434019, -0.0028595221, -0.00013452265, -0.010567958, -0.0013448229, -0.0011693538, 0.0028347737, 0.0028599804, -0.011070809, 0.0035397294, 0.00016652216, 0.013081805, 0.0016647219, 0.0010697844, -0.0025933953, -0.0026164557, 0.010128139, -0.0032383247, -0.00015234295, -0.011967901, -0.0015229724, -0.0017870938, 0.0043323128, 0.0043708356, -0.016919236, 0.0054096787, 0.00025449159, 0.019992591, 0.0025441523, 0.0017987899, -0.0043606667, -0.0043994416, 0.017029968, -0.0054450837, -0.00025615717, -0.020123438, -0.0025608031, 0.00055346702, -0.0013417272, -0.0013536577, 0.005239926, -0.0016753898, -7.8816625e-05, -0.006191751, -0.00078792976, + -7.8825636e-05, 0.00025974534, -0.00011050813, -0.00031922275, 2.7245059e-05, 0.00034851889, 0.00024329985, -1.1603644e-05, 0.00057369258, -0.0018904253, 0.00080427761, 0.0023233016, -0.0001982894, -0.0025365187, -0.0017707351, 8.445126e-05, -0.0015259126, 0.00502817, -0.0021392247, -0.0061795382, 0.00052741192, 0.006746655, 0.0047098169, -0.00022462421, 0.0018888883, -0.0062242433, 0.0026480917, 0.0076494925, -0.00065286975, -0.0083515119, -0.005830162, 0.00027805657, -0.0017280512, 0.0056942546, -0.0024226091, -0.0069981452, 0.00059727848, 0.0076403883, 0.005333729, -0.00025438031, 0.00288674, -0.0095123531, 0.0040470113, 0.011690525, -0.00099776428, -0.012763404, -0.0089100887, 0.00042494681, -0.002905633, 0.0095746091, -0.004073498, -0.011767037, 0.0010042944, 0.012846937, 0.008968403, -0.00042772798, -0.00089402997, 0.0029459974, -0.0012533686, -0.0036205824, 0.00030900987, 0.0039528553, 0.0027594748, -0.000131607, + -0.00032276152, 0.0011816788, -0.00095414782, -0.0006614796, -0.00010332109, 0.0018335002, 9.5235093e-05, -0.00020234707, 0.0023490567, -0.0086002526, 0.0069442831, 0.0048142452, 0.00075197039, -0.013344205, -0.00069312053, 0.001472681, -0.006248042, 0.022875028, -0.018470466, -0.012804972, -0.0020000975, 0.035493035, 0.0018435682, -0.0039170499, 0.0077342916, -0.028316413, 0.022864118, 0.015850948, 0.0024758696, -0.043935921, -0.0022821059, 0.004848816, -0.0070757237, 0.025905297, -0.020917259, -0.014501254, -0.0022650516, 0.040194818, 0.0020877867, -0.0044359438, 0.011820122, -0.043275257, 0.034942652, 0.024224602, 0.0037838088, -0.067146155, -0.0034876846, 0.0074103226, -0.011897481, 0.043558482, -0.035171343, -0.024383146, -0.0038085729, 0.067585609, 0.0035105106, -0.0074588213, -0.0036607186, 0.013402446, -0.010821819, -0.0075024144, -0.0011718542, 0.020795317, 0.0010801439, -0.0022949938, + 0.0062768122, 0.0077742042, -0.016341633, 0.016294411, -0.0088221017, 0.0056183576, -0.0038640369, -0.00028801849, -0.015216389, -0.0188464, 0.039615753, -0.039501276, 0.021386737, -0.013620148, 0.0093672848, 0.00069822088, -0.015351692, -0.019013981, 0.039968015, -0.03985252, 0.021576907, -0.013741258, 0.0094505783, 0.00070442943, 0.059425458, 0.073601955, -0.15471373, 0.15426666, -0.083522881, 0.053191568, -0.036582609, -0.0027268031, -0.019000422, -0.02353315, 0.049467457, -0.049324511, 0.026705221, -0.017007227, 0.011696755, 0.00087185547, -0.00089385118, -0.0011070877, 0.0023271348, -0.0023204101, 0.0012563138, -0.00080008378, 0.00055025924, 4.1015353e-05, -0.070220007, -0.086971643, 0.18281726, -0.18228897, 0.098694691, -0.062853739, 0.043227786, 0.0032221229, -0.0089358298, -0.011067555, 0.023264365, -0.023197139, 0.012559369, -0.0079984371, 0.0055009414, 0.00041003046, + -0.00037505232, 0.0019061302, 0.0043156989, 0.0018729019, 0.0008560624, -0.00048772241, -0.00072779452, -9.5231768e-05, 0.00090921023, -0.0046208836, -0.010462214, -0.0045403307, -0.0020752857, 0.0011823476, 0.0017643358, 0.00023086299, 0.0009172949, -0.0046619723, -0.010555244, -0.0045807032, -0.002093739, 0.001192861, 0.0017800242, 0.00023291581, -0.0035507922, 0.018046209, 0.0408587, 0.017731621, 0.0081047352, -0.0046174917, -0.0068903644, -0.00090160281, 0.001135314, -0.0057700116, -0.013063973, -0.0056694268, -0.0025913707, 0.0014763755, 0.0022030934, 0.00028827433, 5.3409429e-05, -0.000271443, -0.0006145783, -0.00026671111, -0.0001219078, 6.9454246e-05, 0.00010364178, 1.3561506e-05, 0.0041957885, -0.021324276, -0.048280624, -0.020952544, -0.0095769486, 0.0054562524, 0.0081419891, 0.0010653777, 0.00053393404, -0.0027136155, -0.0061439389, -0.0026663109, -0.0012187123, 0.00069433406, 0.0010361068, 0.00013557437, + 0.00021957397, -0.00086807664, 0.00044886323, 0.0026529573, 0.0028676519, 0.0021888539, 0.00079141994, 3.4751905e-06, -0.00053229615, 0.0021044108, -0.0010881443, -0.0064313586, -0.0069518261, -0.0053062688, -0.0019185779, -8.4246346e-06, -0.00053702931, 0.0021231232, -0.00109782, -0.006488546, -0.0070136414, -0.0053534519, -0.0019356379, -8.4995461e-06, 0.0020788075, -0.0082184796, 0.004249594, 0.025116763, 0.027149376, 0.020722884, 0.0074927354, 3.2901221e-05, -0.00066466833, 0.0026277388, -0.0013587456, -0.0080307182, -0.0086806163, -0.0066258394, -0.0023956927, -1.0519685e-05, -3.1268493e-05, 0.00012361869, -6.3920492e-05, -0.00037779512, -0.00040836877, -0.00031170435, -0.00011270238, -4.9488546e-07, -0.0024564198, 0.0097113544, -0.0050215265, -0.029679187, -0.03208102, -0.024487165, -0.0088537799, -3.887768e-05, -0.00031259111, 0.001235816, -0.00063901313, -0.0037768177, -0.0040824624, -0.0031161083, -0.0011266856, -4.9473697e-06, + -0.0001198541, 0.00043792187, 1.8436695e-05, -0.0020721502, 0.002774857, 0.00063160785, 0.0042113507, 0.00071479165, 0.00029055299, -0.00106162, -4.469465e-05, 0.005023353, -0.0067268706, -0.0015311579, -0.010209251, -0.0017328139, 0.00029313657, -0.0010710599, -4.5092073e-05, 0.0050680204, -0.0067866857, -0.0015447729, -0.010300031, -0.001748222, -0.0011347137, 0.0041460071, 0.00017454865, -0.019617996, 0.026270844, 0.0059797211, 0.039870788, 0.0067672602, 0.00036280813, -0.0013256252, -5.580938e-05, 0.0062725677, -0.0083997186, -0.0019119285, -0.012748102, -0.0021637326, 1.7067856e-05, -6.2362386e-05, -2.6254827e-06, 0.00029508512, -0.00039515429, -8.994429e-05, -0.00059971856, -0.0001017901, 0.0013408328, -0.0048991233, -0.00020625515, 0.023181576, -0.031042904, -0.0070659287, -0.047113258, -0.0079965232, 0.00017062735, -0.00062343674, -2.6246949e-05, 0.0029499658, -0.0039503572, -0.00089917303, -0.0059953861, -0.0010175956, + 4.8798576e-05, -0.00035515579, 0.00094464654, -0.0011693538, 0.0010697844, -0.0017870938, 0.0017987899, 0.00055346702, -0.0001182986, 0.00086097664, -0.0022900333, 0.0028347737, -0.0025933953, 0.0043323128, -0.0043606667, -0.0013417272, -0.00011935051, 0.00086863241, -0.0023103962, 0.0028599804, -0.0026164557, 0.0043708356, -0.0043994416, -0.0013536577, 0.0004619985, -0.0033624227, 0.0089434019, -0.011070809, 0.010128139, -0.016919236, 0.017029968, 0.005239926, -0.00014771727, 0.0010750856, -0.0028595221, 0.0035397294, -0.0032383247, 0.0054096787, -0.0054450837, -0.0016753898, -6.9491748e-06, 5.0576059e-05, -0.00013452265, 0.00016652216, -0.00015234295, 0.00025449159, -0.00025615717, -7.8816625e-05, -0.00054591985, 0.0039732019, -0.010567958, 0.013081805, -0.011967901, 0.019992591, -0.020123438, -0.006191751, -6.9470897e-05, 0.00050560884, -0.0013448229, 0.0016647219, -0.0015229724, 0.0025441523, -0.0025608031, -0.00078792976, + 5.9303006e-05, -0.00014376368, -0.00014504202, 0.00056144874, -0.00017951504, -8.445061e-06, -0.00066343509, -8.442527e-05, -0.00014376368, 0.00034851512, 0.00035161411, -0.0013610766, 0.00043518437, 2.0472706e-05, 0.0016083142, 0.00020466563, -0.00014504202, 0.00035161411, 0.00035474065, -0.0013731793, 0.00043905401, 2.0654749e-05, 0.0016226153, 0.00020648551, 0.00056144874, -0.0013610766, -0.0013731793, 0.0053154927, -0.0016995511, -7.9953264e-05, -0.0062810442, -0.00079929274, -0.00017951504, 0.00043518437, 0.00043905401, -0.0016995511, 0.00054340666, 2.5563888e-05, 0.0020082721, 0.00025556218, -8.445061e-06, 2.0472706e-05, 2.0654749e-05, -7.9953264e-05, 2.5563888e-05, 1.2026212e-06, 9.4476658e-05, 1.2022604e-05, -0.00066343509, 0.0016083142, 0.0016226153, -0.0062810442, 0.0020082721, 9.4476658e-05, 0.0074219867, 0.0009444831, -8.442527e-05, 0.00020466563, 0.00020648551, -0.00079929274, 0.00025556218, 1.2022604e-05, 0.0009444831, 0.00012018997, + -9.5793719e-05, 0.00031565838, -0.00013429622, -0.00038793895, 3.3109857e-05, 0.0004235414, 0.00029567281, -1.4101455e-05, 0.00023222528, -0.00076522612, 0.0003255639, 0.0009404503, -8.0265658e-05, -0.0010267586, -0.00071677665, 3.4185064e-05, 0.00023429022, -0.00077203048, 0.0003284588, 0.00094881275, -8.0979377e-05, -0.0010358885, -0.0007231502, 3.4489036e-05, -0.00090692306, 0.0029884826, -0.0012714439, -0.0036727959, 0.0003134662, 0.0040098606, 0.00279927, -0.00013350494, 0.0002899754, -0.00095552366, 0.0004065256, 0.0011743229, -0.00010022624, -0.0012820944, -0.00089502571, 4.2686255e-05, 1.3641531e-05, -4.4951419e-05, 1.912449e-05, 5.5244554e-05, -4.7150184e-06, -6.0314531e-05, -4.2105368e-05, 2.0081216e-06, 0.0010716643, -0.0035313361, 0.0015023998, 0.004339954, -0.00037040688, -0.004738246, -0.0033077534, 0.00015775592, 0.00013637438, -0.00044937931, 0.00019118752, 0.00055227978, -4.7136037e-05, -0.00060296433, -0.00042092734, 2.0075191e-05, + -0.00039223948, 0.0014360482, -0.0011595386, -0.00080387034, -0.00012556209, 0.0022281812, 0.00011573549, -0.0002459045, 0.00095087574, -0.0034813002, 0.0028109795, 0.0019487605, 0.00030439043, -0.0054016068, -0.00028056857, 0.00059612719, 0.0009593309, -0.0035122558, 0.0028359746, 0.0019660888, 0.00030709706, -0.0054496377, -0.00028306338, 0.00060142793, -0.003713511, 0.013595726, -0.010977884, -0.0076106091, -0.0011887539, 0.021095213, 0.001095721, -0.0023280906, 0.0011873409, -0.004347035, 0.003510018, 0.0024333811, 0.00038008669, -0.0067448862, -0.00035034078, 0.00074437297, 5.5856972e-05, -0.00020450084, 0.00016512442, 0.00011447538, 1.7880704e-05, -0.00031730476, -1.6481345e-05, 3.5018098e-05, 0.0043880649, -0.01606537, 0.012972, 0.0089930652, 0.0014046893, -0.024927128, -0.0012947571, 0.0027509849, 0.00055840212, -0.0020443948, 0.0016507487, 0.0011444103, 0.00017875339, -0.0031720955, -0.000164764, 0.00035007591, + -0.010139101, -0.012557878, 0.026397074, -0.026320794, 0.014250575, -0.0090754822, 0.0062416813, 0.00046524391, 0.033410252, 0.041380579, -0.086983339, 0.086731984, -0.046958334, 0.029905426, -0.020567518, -0.0015330665, -0.014214324, -0.017605283, 0.037006885, -0.036899947, 0.019978328, -0.012723203, 0.0087504086, 0.00065224002, -0.04106065, -0.05085605, 0.10690109, -0.10659218, 0.057711019, -0.036753277, 0.025277141, 0.0018841135, 0.0035044489, 0.0043404679, -0.0091238064, 0.0090974414, -0.0049255265, 0.0031368228, -0.0021573562, -0.00016080553, 0.044828922, 0.055523279, -0.11671176, 0.1163745, -0.063007351, 0.040126247, -0.027596908, -0.0020570248, 0.031294918, 0.038760612, -0.081476082, 0.081240642, -0.043985217, 0.028011996, -0.019265307, -0.001436002, -0.0014925413, -0.0018486009, 0.00388582, -0.0038745912, 0.0020977768, -0.0013359697, 0.00091881587, 6.8486914e-05, + 0.00060583196, -0.0030790227, -0.006971263, -0.0030253481, -0.0013828203, 0.00078783096, 0.0011756258, 0.0001538304, -0.0019963306, 0.010145961, 0.022971627, 0.0099690929, 0.0045566539, -0.0025960517, -0.0038739089, -0.0005069002, 0.00084933481, -0.0043165784, -0.009773232, -0.0042413304, -0.0019386191, 0.0011044849, 0.0016481467, 0.00021565966, 0.0024534575, -0.012469219, -0.028231751, -0.012251851, -0.0056000526, 0.0031905048, 0.0047609702, 0.00062297201, -0.00020939797, 0.0010642243, 0.0024095267, 0.0010456724, 0.00047795392, -0.00027230356, -0.00040633982, -5.3169485e-05, -0.0026786194, 0.013613561, 0.030822673, 0.013376244, 0.0061139881, -0.003483308, -0.0051979003, -0.00068014422, -0.0018699351, 0.0095035802, 0.021517203, 0.0093379105, 0.0042681542, -0.0024316854, -0.0036286365, -0.00047480636, 8.9182384e-05, -0.00045325206, -0.001026215, -0.00044535082, -0.0002035601, 0.00011597381, 0.00017305972, 2.2644831e-05, + -0.00035468367, 0.0014022272, -0.00072506068, -0.0042853924, -0.0046321943, -0.0035357139, -0.0012784016, -5.6135674e-06, 0.0011687496, -0.0046206033, 0.0023892118, 0.014121176, 0.015263954, 0.011650844, 0.0042125746, 1.8497764e-05, -0.00049724215, 0.0019658263, -0.0010164853, -0.0060078259, -0.0064940183, -0.0049568281, -0.0017922313, -7.869836e-06, -0.001436374, 0.0056786454, -0.0029363019, -0.017354693, -0.018759148, -0.014318696, -0.0051771848, -2.2733447e-05, 0.00012259181, -0.00048466167, 0.00025060783, 0.0014811903, 0.0016010579, 0.0012220737, 0.00044186295, 1.9402568e-06, 0.0015681949, -0.0061997937, 0.0032057761, 0.018947391, 0.020480738, 0.01563277, 0.0056523123, 2.4819771e-05, 0.0010947515, -0.0043280548, 0.0022379414, 0.013227109, 0.014297533, 0.010913184, 0.0039458599, 1.7326598e-05, -5.2211731e-05, 0.00020641692, -0.00010673362, -0.00063083748, -0.00068188897, -0.00052047996, -0.00018818899, -8.2635344e-07, + 0.0001936035, -0.00070738682, -2.9781283e-05, 0.0033471992, -0.0044823002, -0.0010202529, -0.0068027065, -0.0011546219, -0.00063796008, 0.0023309731, 9.8134948e-05, -0.011029653, 0.014770025, 0.0033619259, 0.022416202, 0.0038046971, 0.00027141882, -0.00099170775, -4.1751314e-05, 0.0046925435, -0.0062838771, -0.0014303245, -0.0095369274, -0.0016187007, 0.00078404243, -0.0028647275, -0.00012060623, 0.013555262, -0.018152118, -0.0041317516, -0.027549143, -0.0046759101, -6.6916542e-05, 0.00024449909, 1.0293515e-05, -0.001156916, 0.001549249, 0.0003526372, 0.0023512673, 0.0003990801, -0.00085599662, 0.0031276331, 0.00013167467, -0.014799274, 0.019817998, 0.0045109362, 0.030077419, 0.0051050339, -0.00059756832, 0.00218339, 9.1921639e-05, -0.010331322, 0.013834877, 0.0031490691, 0.020996944, 0.0035638068, 2.8499688e-05, -0.00010413192, -4.3839976e-06, 0.00049272938, -0.00065982359, -0.00015018783, -0.0010014024, -0.00016996782, + -7.8825636e-05, 0.00057369258, -0.0015259126, 0.0018888883, -0.0017280512, 0.00288674, -0.002905633, -0.00089402997, 0.00025974534, -0.0018904253, 0.00502817, -0.0062242433, 0.0056942546, -0.0095123531, 0.0095746091, 0.0029459974, -0.00011050813, 0.00080427761, -0.0021392247, 0.0026480917, -0.0024226091, 0.0040470113, -0.004073498, -0.0012533686, -0.00031922275, 0.0023233016, -0.0061795382, 0.0076494925, -0.0069981452, 0.011690525, -0.011767037, -0.0036205824, 2.7245059e-05, -0.0001982894, 0.00052741192, -0.00065286975, 0.00059727848, -0.00099776428, 0.0010042944, 0.00030900987, 0.00034851889, -0.0025365187, 0.006746655, -0.0083515119, 0.0076403883, -0.012763404, 0.012846937, 0.0039528553, 0.00024329985, -0.0017707351, 0.0047098169, -0.005830162, 0.005333729, -0.0089100887, 0.008968403, 0.0027594748, -1.1603644e-05, 8.445126e-05, -0.00022462421, 0.00027805657, -0.00025438031, 0.00042494681, -0.00042772798, -0.000131607, + -9.5793719e-05, 0.00023222528, 0.00023429022, -0.00090692306, 0.0002899754, 1.3641531e-05, 0.0010716643, 0.00013637438, 0.00031565838, -0.00076522612, -0.00077203048, 0.0029884826, -0.00095552366, -4.4951419e-05, -0.0035313361, -0.00044937931, -0.00013429622, 0.0003255639, 0.0003284588, -0.0012714439, 0.0004065256, 1.912449e-05, 0.0015023998, 0.00019118752, -0.00038793895, 0.0009404503, 0.00094881275, -0.0036727959, 0.0011743229, 5.5244554e-05, 0.004339954, 0.00055227978, 3.3109857e-05, -8.0265658e-05, -8.0979377e-05, 0.0003134662, -0.00010022624, -4.7150184e-06, -0.00037040688, -4.7136037e-05, 0.0004235414, -0.0010267586, -0.0010358885, 0.0040098606, -0.0012820944, -6.0314531e-05, -0.004738246, -0.00060296433, 0.00029567281, -0.00071677665, -0.0007231502, 0.00279927, -0.00089502571, -4.2105368e-05, -0.0033077534, -0.00042092734, -1.4101455e-05, 3.4185064e-05, 3.4489036e-05, -0.00013350494, 4.2686255e-05, 2.0081216e-06, 0.00015775592, 2.0075191e-05, + 0.00015473814, -0.00050989136, 0.00021693224, 0.00062664809, -5.3483231e-05, -0.00068415767, -0.00047760813, 2.2778455e-05, -0.00050989136, 0.0016801882, -0.00071483267, -0.0020649237, 0.00017623734, 0.0022544286, 0.0015738089, -7.5059307e-05, 0.00021693224, -0.00071483267, 0.00030412411, 0.00087851759, -7.4979818e-05, -0.00095914207, -0.00066957381, 3.193383e-05, 0.00062664809, -0.0020649237, 0.00087851759, 0.0025377572, -0.00021659279, -0.0027706556, -0.0019341853, 9.2246652e-05, -5.3483231e-05, 0.00017623734, -7.4979818e-05, -0.00021659279, 1.8485786e-05, 0.00023647023, 0.00016507906, -7.8730777e-06, -0.00068415767, 0.0022544286, -0.00095914207, -0.0027706556, 0.00023647023, 0.0030249279, 0.0021116919, -0.00010071243, -0.00047760813, 0.0015738089, -0.00066957381, -0.0019341853, 0.00016507906, 0.0021116919, 0.0014741649, -7.0307007e-05, 2.2778455e-05, -7.5059307e-05, 3.193383e-05, 9.2246652e-05, -7.8730777e-06, -0.00010071243, -7.0307007e-05, 3.3531359e-06, + 0.00063359485, -0.0023196867, 0.0018730335, 0.0012985131, 0.00020282378, -0.0035992402, -0.00018695061, 0.00039721606, -0.0020878146, 0.0076438055, -0.0061719988, -0.0042788457, -0.00066834262, 0.011860176, 0.00061603754, -0.0013089019, 0.00088825647, -0.0032520415, 0.0026258644, 0.0018204262, 0.00028434501, -0.0050458877, -0.00026209192, 0.00055686965, 0.0025658897, -0.0093941111, 0.0075852849, 0.0052586309, 0.00082138208, -0.014575961, -0.0007571, 0.0016086189, -0.00021899385, 0.00080176965, -0.00064738975, -0.00044881422, -7.010341e-05, 0.0012440307, 6.4617056e-05, -0.00013729258, -0.00280137, 0.01025624, -0.0082814118, -0.005741233, -0.00089676305, 0.015913645, 0.00082658159, -0.0017562472, -0.0019556268, 0.0071598461, -0.0057812253, -0.0040079352, -0.00062602722, 0.011109261, 0.00057703379, -0.0012260302, 9.3269261e-05, -0.00034147289, 0.00027572265, 0.00019114953, 2.9856972e-05, -0.00052983145, -2.752034e-05, 5.8472774e-05, + -0.041515831, -0.051419819, 0.10808615, -0.10777382, 0.05835078, -0.037160708, 0.025557353, 0.001905, 0.15199575, 0.18825575, -0.39571978, 0.39457627, -0.21363104, 0.13605098, -0.09356934, -0.0069744935, -0.12272913, -0.1520073, 0.31952436, -0.31860103, 0.17249661, -0.10985451, 0.075552662, 0.0056315621, -0.085084105, -0.10538171, 0.22151583, -0.22087571, 0.11958628, -0.076158553, 0.052378199, 0.0039041786, -0.013289877, -0.016460301, 0.034600095, -0.034500111, 0.018679012, -0.011895733, 0.0081813146, 0.00060982076, 0.23583754, 0.29209878, -0.61400125, 0.61222698, -0.33147124, 0.21109754, -0.14518276, -0.010821667, 0.0122498, 0.015172104, -0.031892261, 0.031800103, -0.017217176, 0.010964763, -0.0075410378, -0.00056209566, -0.026027287, -0.032236339, 0.067761845, -0.067566035, 0.036581527, -0.023296954, 0.016022528, 0.0011942909, + 0.0024806555, -0.012607447, -0.028544717, -0.01238767, -0.0056621325, 0.0032258734, 0.0048137484, 0.00062987802, -0.0090820556, 0.046157775, 0.10450653, 0.045353137, 0.020729925, -0.011810411, -0.017623862, -0.0023060789, 0.0073333154, -0.037270144, -0.08438391, -0.036620438, -0.0167384, 0.009536329, 0.014230406, 0.0018620458, 0.0050839486, -0.025838177, -0.058500616, -0.025387757, -0.011604187, 0.0066112262, 0.0098654769, 0.0012908957, 0.00079409724, -0.0040358443, -0.0091376174, -0.00396549, -0.0018125386, 0.0010326533, 0.0015409573, 0.00020163396, -0.014091773, 0.071618688, 0.16215298, 0.070370207, 0.032164679, -0.018325107, -0.027345293, -0.0035781261, -0.0007319505, 0.0037199956, 0.0084224995, 0.0036551473, 0.0016706877, -0.00095183698, -0.0014203607, -0.00018585391, 0.0015551834, -0.0079039163, -0.017895379, -0.0077661325, -0.0035497289, 0.0020223787, 0.0030178563, 0.00039488589, + -0.0014522971, 0.0057415966, -0.0029688526, -0.01754708, -0.018967105, -0.014477427, -0.005234577, -2.2985461e-05, 0.0053170797, -0.021020855, 0.010869419, 0.06424252, 0.069441444, 0.053004054, 0.019164579, 8.4153254e-05, -0.0042932816, 0.016973311, -0.0087765239, -0.05187269, -0.056070567, -0.042798179, -0.01547446, -6.7949634e-05, -0.0029763923, 0.011767044, -0.006084478, -0.035961646, -0.038871897, -0.029670583, -0.010727939, -4.7107267e-05, -0.00046490337, 0.0018379763, -0.00095037688, -0.0056170992, -0.0060716716, -0.0046344544, -0.0016756713, -7.3580112e-06, 0.0082500136, -0.032616088, 0.016865057, 0.099679089, 0.10774577, 0.082241416, 0.029735879, 0.00013057271, 0.00042851963, -0.0016941347, 0.00087599956, 0.0051775002, 0.0055964973, 0.004271758, 0.0015445318, 6.7821669e-06, -0.00091048046, 0.0035995469, -0.0018612461, -0.011000693, -0.01189094, -0.0090762521, -0.003281684, -1.4410146e-05, + 0.000792734, -0.0028964847, -0.00012194323, 0.01370553, -0.018353344, -0.0041775544, -0.027854541, -0.0047277453, -0.0029023193, 0.010604469, 0.00044645263, -0.050178022, 0.067194375, 0.01529466, 0.1019797, 0.017308992, 0.0023434808, -0.0085625899, -0.00036048864, 0.040516297, -0.054256169, -0.012349689, -0.082343612, -0.013976164, 0.0016246589, -0.0059361646, -0.00024991503, 0.028088629, -0.037614034, -0.0085616371, -0.057086144, -0.009689219, 0.00025376675, -0.00092721078, -3.9035964e-05, 0.0043873579, -0.0058751972, -0.0013373016, -0.0089166812, -0.0015134264, -0.0045032565, 0.01645396, 0.00069271864, -0.077856528, 0.10425921, 0.023731288, 0.15823232, 0.026856738, -0.00023390674, 0.00085464645, 3.5980976e-05, -0.0040439995, 0.0054153991, 0.0012326432, 0.008218854, 0.0013949843, 0.00049698428, -0.0018158769, -7.6449182e-05, 0.008592331, -0.011506159, -0.0026190108, -0.017462691, -0.0029639388, + -0.00032276152, 0.0023490567, -0.006248042, 0.0077342916, -0.0070757237, 0.011820122, -0.011897481, -0.0036607186, 0.0011816788, -0.0086002526, 0.022875028, -0.028316413, 0.025905297, -0.043275257, 0.043558482, 0.013402446, -0.00095414782, 0.0069442831, -0.018470466, 0.022864118, -0.020917259, 0.034942652, -0.035171343, -0.010821819, -0.0006614796, 0.0048142452, -0.012804972, 0.015850948, -0.014501254, 0.024224602, -0.024383146, -0.0075024144, -0.00010332109, 0.00075197039, -0.0020000975, 0.0024758696, -0.0022650516, 0.0037838088, -0.0038085729, -0.0011718542, 0.0018335002, -0.013344205, 0.035493035, -0.043935921, 0.040194818, -0.067146155, 0.067585609, 0.020795317, 9.5235093e-05, -0.00069312053, 0.0018435682, -0.0022821059, 0.0020877867, -0.0034876846, 0.0035105106, 0.0010801439, -0.00020234707, 0.001472681, -0.0039170499, 0.004848816, -0.0044359438, 0.0074103226, -0.0074588213, -0.0022949938, + -0.00039223948, 0.00095087574, 0.0009593309, -0.003713511, 0.0011873409, 5.5856972e-05, 0.0043880649, 0.00055840212, 0.0014360482, -0.0034813002, -0.0035122558, 0.013595726, -0.004347035, -0.00020450084, -0.01606537, -0.0020443948, -0.0011595386, 0.0028109795, 0.0028359746, -0.010977884, 0.003510018, 0.00016512442, 0.012972, 0.0016507487, -0.00080387034, 0.0019487605, 0.0019660888, -0.0076106091, 0.0024333811, 0.00011447538, 0.0089930652, 0.0011444103, -0.00012556209, 0.00030439043, 0.00030709706, -0.0011887539, 0.00038008669, 1.7880704e-05, 0.0014046893, 0.00017875339, 0.0022281812, -0.0054016068, -0.0054496377, 0.021095213, -0.0067448862, -0.00031730476, -0.024927128, -0.0031720955, 0.00011573549, -0.00028056857, -0.00028306338, 0.001095721, -0.00035034078, -1.6481345e-05, -0.0012947571, -0.000164764, -0.0002459045, 0.00059612719, 0.00060142793, -0.0023280906, 0.00074437297, 3.5018098e-05, 0.0027509849, 0.00035007591, + 0.00063359485, -0.0020878146, 0.00088825647, 0.0025658897, -0.00021899385, -0.00280137, -0.0019556268, 9.3269261e-05, -0.0023196867, 0.0076438055, -0.0032520415, -0.0093941111, 0.00080176965, 0.01025624, 0.0071598461, -0.00034147289, 0.0018730335, -0.0061719988, 0.0026258644, 0.0075852849, -0.00064738975, -0.0082814118, -0.0057812253, 0.00027572265, 0.0012985131, -0.0042788457, 0.0018204262, 0.0052586309, -0.00044881422, -0.005741233, -0.0040079352, 0.00019114953, 0.00020282378, -0.00066834262, 0.00028434501, 0.00082138208, -7.010341e-05, -0.00089676305, -0.00062602722, 2.9856972e-05, -0.0035992402, 0.011860176, -0.0050458877, -0.014575961, 0.0012440307, 0.015913645, 0.011109261, -0.00052983145, -0.00018695061, 0.00061603754, -0.00026209192, -0.0007571, 6.4617056e-05, 0.00082658159, 0.00057703379, -2.752034e-05, 0.00039721606, -0.0013089019, 0.00055686965, 0.0016086189, -0.00013729258, -0.0017562472, -0.0012260302, 5.8472774e-05, + 0.0025943341, -0.0094982503, 0.0076693723, 0.0053169259, 0.00083048758, -0.014737544, -0.0007654929, 0.0016264513, -0.0094982503, 0.034774534, -0.028078734, -0.019466071, -0.0030405409, 0.05395638, 0.0028025855, -0.0059546848, 0.0076693723, -0.028078734, 0.022672203, 0.0157179, 0.0024550879, -0.043567136, -0.0022629506, 0.0048081165, 0.0053169259, -0.019466071, 0.0157179, 0.010896708, 0.0017020325, -0.030203676, -0.0015688299, 0.0033333105, 0.00083048758, -0.0030405409, 0.0024550879, 0.0017020325, 0.00026585227, -0.0047177219, -0.00024504644, 0.00052065292, -0.014737544, 0.05395638, -0.043567136, -0.030203676, -0.0047177219, 0.083719052, 0.0043485089, -0.0092393256, -0.0007654929, 0.0028025855, -0.0022629506, -0.0015688299, -0.00024504644, 0.0043485089, 0.00022586889, -0.00047990617, 0.0016264513, -0.0059546848, 0.0048081165, 0.0033333105, 0.00052065292, -0.0092393256, -0.00047990617, 0.001019662, +}; + + +static double * projection_matrices[] = +{ + dgq0_refined_onto_dgq0, + dgq1_refined_onto_dgq1, + dgq2_refined_onto_dgq2, + dgq3_refined_onto_dgq3, + dgq4_refined_onto_dgq4, + dgq5_refined_onto_dgq5, + dgq6_refined_onto_dgq6, + dgq7_refined_onto_dgq7, + 0,0,0,0,0,0,0 +}; + diff --git a/deal.II/deal.II/source/fe/mat_dgq.3 b/deal.II/deal.II/source/fe/mat_dgq.3 index e69de29bb2..6e6e5a9571 100644 --- a/deal.II/deal.II/source/fe/mat_dgq.3 +++ b/deal.II/deal.II/source/fe/mat_dgq.3 @@ -0,0 +1,397 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + +static double dgq0_into_dgq0_refined[] = +{ + 1., 1., 1., 1., 1., 1., 1., 1. +}; + +static double dgq1_into_dgq1_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., + .5, .5, 0., 0., 0., 0., 0., 0., + .5, 0., .5, 0., 0., 0., 0., 0., + .25, .25, .25, .25, 0., 0., 0., 0., + .5, 0., 0., 0., .5, 0., 0., 0., + .25, .25, 0., 0., .25, .25, 0., 0., + .25, 0., .25, 0., .25, 0., .25, 0., + .125, .125, .125, .125, .125, .125, .125, .125, +}; + +static double dgq2_into_dgq2_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 10.125/27., 20.25/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 10.125/27., 0., 0., 20.25/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 3.796875/27., 7.59375/27., -1.265625/27., 7.59375/27., 15.1875/27., -2.53125/27., -1.265625/27., -2.53125/27., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 10.125/27., 0., 0., 20.25/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 10.125/27., 20.25/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., + 3.796875/27., 7.59375/27., -1.265625/27., 0., 0., 0., 0., 0., 0., 7.59375/27., 15.1875/27., -2.53125/27., 0., 0., 0., 0., 0., 0., -1.265625/27., -2.53125/27., 0.421875/27., 0., 0., 0., 0., 0., 0., + 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., + 3.796875/27., 0., 0., 7.59375/27., 0., 0., -1.265625/27., 0., 0., 7.59375/27., 0., 0., 15.1875/27., 0., 0., -2.53125/27., 0., 0., -1.265625/27., 0., 0., -2.53125/27., 0., 0., 0.421875/27., 0., 0., + 1.423828125/27., 2.84765625/27., -0.474609375/27., 2.84765625/27., 5.6953125/27., -0.94921875/27., -0.474609375/27., -0.94921875/27., 0.158203125/27., 2.84765625/27., 5.6953125/27., -0.94921875/27., 5.6953125/27., 11.390625/27., -1.8984375/27., -0.94921875/27., -1.8984375/27., 0.31640625/27., -0.474609375/27., -0.94921875/27., 0.158203125/27., -0.94921875/27., -1.8984375/27., 0.31640625/27., 0.158203125/27., 0.31640625/27., -0.052734375/27., + 0., 3.796875/27., 0., 0., 7.59375/27., 0., 0., -1.265625/27., 0., 0., 7.59375/27., 0., 0., 15.1875/27., 0., 0., -2.53125/27., 0., 0., -1.265625/27., 0., 0., -2.53125/27., 0., 0., 0.421875/27., 0., + 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0., 0., 0., + 0., 0., 0., 3.796875/27., 7.59375/27., -1.265625/27., 0., 0., 0., 0., 0., 0., 7.59375/27., 15.1875/27., -2.53125/27., 0., 0., 0., 0., 0., 0., -1.265625/27., -2.53125/27., 0.421875/27., 0., 0., 0., + 0., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 20.25/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 20.25/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., 7.59375/27., -1.265625/27., 7.59375/27., 15.1875/27., -2.53125/27., -1.265625/27., -2.53125/27., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 20.25/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 20.25/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., +}; + +static double dgq3_into_dgq3_refined[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 2.63671875/27., 7.91015625/27., -2.63671875/27., 0.52734375/27., 7.91015625/27., 23.73046875/27., -7.91015625/27., 1.58203125/27., -2.63671875/27., -7.91015625/27., 2.63671875/27., -0.52734375/27., 0.52734375/27., 1.58203125/27., -0.52734375/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., 4.74609375/27., 4.74609375/27., -0.52734375/27., -1.58203125/27., 14.23828125/27., 14.23828125/27., -1.58203125/27., 0.52734375/27., -4.74609375/27., -4.74609375/27., 0.52734375/27., -0.10546875/27., 0.94921875/27., 0.94921875/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 2.63671875/27., 7.91015625/27., -2.63671875/27., 0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 7.91015625/27., 23.73046875/27., -7.91015625/27., 1.58203125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.63671875/27., -7.91015625/27., 2.63671875/27., -0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.52734375/27., 1.58203125/27., -0.52734375/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., 4.74609375/27., 4.74609375/27., -0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.58203125/27., 14.23828125/27., 14.23828125/27., -1.58203125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.52734375/27., -4.74609375/27., -4.74609375/27., 0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.10546875/27., 0.94921875/27., 0.94921875/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 2.63671875/27., 0., 0., 0., 7.91015625/27., 0., 0., 0., -2.63671875/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., 7.91015625/27., 0., 0., 0., 23.73046875/27., 0., 0., 0., -7.91015625/27., 0., 0., 0., 1.58203125/27., 0., 0., 0., -2.63671875/27., 0., 0., 0., -7.91015625/27., 0., 0., 0., 2.63671875/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., 1.58203125/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., + 0.8239746094/27., 2.471923828/27., -0.8239746094/27., 0.1647949219/27., 2.471923828/27., 7.415771484/27., -2.471923828/27., 0.4943847656/27., -0.8239746094/27., -2.471923828/27., 0.8239746094/27., -0.1647949219/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., 2.471923828/27., 7.415771484/27., -2.471923828/27., 0.4943847656/27., 7.415771484/27., 22.24731445/27., -7.415771484/27., 1.483154297/27., -2.471923828/27., -7.415771484/27., 2.471923828/27., -0.4943847656/27., 0.4943847656/27., 1.483154297/27., -0.4943847656/27., 0.09887695313/27., -0.8239746094/27., -2.471923828/27., 0.8239746094/27., -0.1647949219/27., -2.471923828/27., -7.415771484/27., 2.471923828/27., -0.4943847656/27., 0.8239746094/27., 2.471923828/27., -0.8239746094/27., 0.1647949219/27., -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., 0.4943847656/27., 1.483154297/27., -0.4943847656/27., 0.09887695313/27., -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., 0.03295898438/27., 0.09887695313/27., -0.03295898438/27., 0.006591796875/27., + 0., 2.63671875/27., 0., 0., 0., 7.91015625/27., 0., 0., 0., -2.63671875/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., 7.91015625/27., 0., 0., 0., 23.73046875/27., 0., 0., 0., -7.91015625/27., 0., 0., 0., 1.58203125/27., 0., 0., 0., -2.63671875/27., 0., 0., 0., -7.91015625/27., 0., 0., 0., 2.63671875/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., 1.58203125/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., 0.10546875/27., 0., 0., + -0.1647949219/27., 1.483154297/27., 1.483154297/27., -0.1647949219/27., -0.4943847656/27., 4.449462891/27., 4.449462891/27., -0.4943847656/27., 0.1647949219/27., -1.483154297/27., -1.483154297/27., 0.1647949219/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., -0.4943847656/27., 4.449462891/27., 4.449462891/27., -0.4943847656/27., -1.483154297/27., 13.34838867/27., 13.34838867/27., -1.483154297/27., 0.4943847656/27., -4.449462891/27., -4.449462891/27., 0.4943847656/27., -0.09887695313/27., 0.8898925781/27., 0.8898925781/27., -0.09887695313/27., 0.1647949219/27., -1.483154297/27., -1.483154297/27., 0.1647949219/27., 0.4943847656/27., -4.449462891/27., -4.449462891/27., 0.4943847656/27., -0.1647949219/27., 1.483154297/27., 1.483154297/27., -0.1647949219/27., 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., -0.09887695313/27., 0.8898925781/27., 0.8898925781/27., -0.09887695313/27., 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., -0.006591796875/27., 0.05932617187/27., 0.05932617188/27., -0.006591796875/27., + 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 2.63671875/27., 7.91015625/27., -2.63671875/27., 0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 7.91015625/27., 23.73046875/27., -7.91015625/27., 1.58203125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.63671875/27., -7.91015625/27., 2.63671875/27., -0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.52734375/27., 1.58203125/27., -0.52734375/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., -0.52734375/27., 4.74609375/27., 4.74609375/27., -0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.58203125/27., 14.23828125/27., 14.23828125/27., -1.58203125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.52734375/27., -4.74609375/27., -4.74609375/27., 0.52734375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.10546875/27., 0.94921875/27., 0.94921875/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., + -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., 1.483154297/27., 4.449462891/27., -1.483154297/27., 0.2966308594/27., 1.483154297/27., 4.449462891/27., -1.483154297/27., 0.2966308594/27., -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., -0.4943847656/27., -1.483154297/27., 0.4943847656/27., -0.09887695313/27., 4.449462891/27., 13.34838867/27., -4.449462891/27., 0.8898925781/27., 4.449462891/27., 13.34838867/27., -4.449462891/27., 0.8898925781/27., -0.4943847656/27., -1.483154297/27., 0.4943847656/27., -0.09887695313/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., -1.483154297/27., -4.449462891/27., 1.483154297/27., -0.2966308594/27., -1.483154297/27., -4.449462891/27., 1.483154297/27., -0.2966308594/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., -0.03295898438/27., -0.09887695313/27., 0.03295898438/27., -0.006591796875/27., 0.2966308594/27., 0.8898925781/27., -0.2966308594/27., 0.05932617187/27., 0.2966308594/27., 0.8898925781/27., -0.2966308594/27., 0.05932617188/27., -0.03295898438/27., -0.09887695313/27., 0.03295898438/27., -0.006591796875/27., + 0., -0.52734375/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., -0.10546875/27., 0., 0., + 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., -0.2966308594/27., 2.669677734/27., 2.669677734/27., -0.2966308594/27., -0.2966308594/27., 2.669677734/27., 2.669677734/27., -0.2966308594/27., 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., 0.09887695313/27., -0.8898925781/27., -0.8898925781/27., 0.09887695313/27., -0.8898925781/27., 8.009033203/27., 8.009033203/27., -0.8898925781/27., -0.8898925781/27., 8.009033203/27., 8.009033203/27., -0.8898925781/27., 0.09887695313/27., -0.8898925781/27., -0.8898925781/27., 0.09887695313/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., 0.2966308594/27., -2.669677734/27., -2.669677734/27., 0.2966308594/27., 0.2966308594/27., -2.669677734/27., -2.669677734/27., 0.2966308594/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., 0.006591796875/27., -0.05932617188/27., -0.05932617188/27., 0.006591796875/27., -0.05932617188/27., 0.5339355469/27., 0.5339355469/27., -0.05932617187/27., -0.05932617188/27., 0.5339355469/27., 0.5339355469/27., -0.05932617188/27., 0.006591796875/27., -0.05932617187/27., -0.05932617188/27., 0.006591796875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 2.63671875/27., 7.91015625/27., -2.63671875/27., 0.52734375/27., 7.91015625/27., 23.73046875/27., -7.91015625/27., 1.58203125/27., -2.63671875/27., -7.91015625/27., 2.63671875/27., -0.52734375/27., 0.52734375/27., 1.58203125/27., -0.52734375/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 25.3125/27., 0., 0., 0., -8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.52734375/27., 4.74609375/27., 4.74609375/27., -0.52734375/27., -1.58203125/27., 14.23828125/27., 14.23828125/27., -1.58203125/27., 0.52734375/27., -4.74609375/27., -4.74609375/27., 0.52734375/27., -0.10546875/27., 0.94921875/27., 0.94921875/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 8.4375/27., 25.3125/27., -8.4375/27., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 15.1875/27., 15.1875/27., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., 15.1875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., + -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., -0.4943847656/27., -1.483154297/27., 0.4943847656/27., -0.09887695313/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., -0.03295898438/27., -0.09887695313/27., 0.03295898438/27., -0.006591796875/27., 1.483154297/27., 4.449462891/27., -1.483154297/27., 0.2966308594/27., 4.449462891/27., 13.34838867/27., -4.449462891/27., 0.8898925781/27., -1.483154297/27., -4.449462891/27., 1.483154297/27., -0.2966308594/27., 0.2966308594/27., 0.8898925781/27., -0.2966308594/27., 0.05932617187/27., 1.483154297/27., 4.449462891/27., -1.483154297/27., 0.2966308594/27., 4.449462891/27., 13.34838867/27., -4.449462891/27., 0.8898925781/27., -1.483154297/27., -4.449462891/27., 1.483154297/27., -0.2966308594/27., 0.2966308594/27., 0.8898925781/27., -0.2966308594/27., 0.05932617188/27., -0.1647949219/27., -0.4943847656/27., 0.1647949219/27., -0.03295898438/27., -0.4943847656/27., -1.483154297/27., 0.4943847656/27., -0.09887695313/27., 0.1647949219/27., 0.4943847656/27., -0.1647949219/27., 0.03295898438/27., -0.03295898438/27., -0.09887695313/27., 0.03295898438/27., -0.006591796875/27., + 0., -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., 4.74609375/27., 0., 0., 0., 14.23828125/27., 0., 0., 0., -4.74609375/27., 0., 0., 0., 0.94921875/27., 0., 0., 0., -0.52734375/27., 0., 0., 0., -1.58203125/27., 0., 0., 0., 0.52734375/27., 0., 0., 0., -0.10546875/27., 0., 0., + 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., 0.09887695313/27., -0.8898925781/27., -0.8898925781/27., 0.09887695313/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., 0.006591796875/27., -0.05932617188/27., -0.05932617188/27., 0.006591796875/27., -0.2966308594/27., 2.669677734/27., 2.669677734/27., -0.2966308594/27., -0.8898925781/27., 8.009033203/27., 8.009033203/27., -0.8898925781/27., 0.2966308594/27., -2.669677734/27., -2.669677734/27., 0.2966308594/27., -0.05932617188/27., 0.5339355469/27., 0.5339355469/27., -0.05932617187/27., -0.2966308594/27., 2.669677734/27., 2.669677734/27., -0.2966308594/27., -0.8898925781/27., 8.009033203/27., 8.009033203/27., -0.8898925781/27., 0.2966308594/27., -2.669677734/27., -2.669677734/27., 0.2966308594/27., -0.05932617188/27., 0.5339355469/27., 0.5339355469/27., -0.05932617188/27., 0.03295898438/27., -0.2966308594/27., -0.2966308594/27., 0.03295898438/27., 0.09887695313/27., -0.8898925781/27., -0.8898925781/27., 0.09887695313/27., -0.03295898438/27., 0.2966308594/27., 0.2966308594/27., -0.03295898438/27., 0.006591796875/27., -0.05932617187/27., -0.05932617188/27., 0.006591796875/27., + 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 4.74609375/27., 14.23828125/27., -4.74609375/27., 0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.52734375/27., -1.58203125/27., 0.52734375/27., -0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -0.94921875/27., 8.54296875/27., 8.54296875/27., -0.94921875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.10546875/27., -0.94921875/27., -0.94921875/27., 0.10546875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., + 0.03295898438/27., 0.09887695313/27., -0.03295898438/27., 0.006591796875/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., 0.03295898438/27., 0.09887695313/27., -0.03295898438/27., 0.006591796875/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., 2.669677734/27., 8.009033203/27., -2.669677734/27., 0.5339355469/27., 2.669677734/27., 8.009033203/27., -2.669677734/27., 0.5339355469/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617187/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., 2.669677734/27., 8.009033203/27., -2.669677734/27., 0.5339355469/27., 2.669677734/27., 8.009033203/27., -2.669677734/27., 0.5339355469/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., 0.03295898438/27., 0.09887695313/27., -0.03295898438/27., 0.006591796875/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617187/27., -0.2966308594/27., -0.8898925781/27., 0.2966308594/27., -0.05932617188/27., 0.03295898438/27., 0.09887695313/27., -0.03295898438/27., 0.006591796875/27., + 0., 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., 8.54296875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., -0.94921875/27., 0., 0., 0., 0.10546875/27., 0., 0., + -0.006591796875/27., 0.05932617187/27., 0.05932617188/27., -0.006591796875/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., -0.006591796875/27., 0.05932617188/27., 0.05932617188/27., -0.006591796875/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., -0.5339355469/27., 4.805419922/27., 4.805419922/27., -0.5339355469/27., -0.5339355469/27., 4.805419922/27., 4.805419922/27., -0.5339355469/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., -0.5339355469/27., 4.805419922/27., 4.805419922/27., -0.5339355469/27., -0.5339355469/27., 4.805419922/27., 4.805419922/27., -0.5339355469/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., -0.006591796875/27., 0.05932617188/27., 0.05932617188/27., -0.006591796875/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617187/27., 0.05932617188/27., -0.5339355469/27., -0.5339355469/27., 0.05932617188/27., -0.006591796875/27., 0.05932617187/27., 0.05932617188/27., -0.006591796875/27., +}; + +static double * embedding[] = +{ + dgq0_into_dgq0_refined, + dgq1_into_dgq1_refined, + dgq2_into_dgq2_refined, + dgq3_into_dgq3_refined, +// dgq4_into_dgq4_refined, + 0,0,0,0,0,0,0 +}; + + +static double dgq0_refined_onto_dgq0[] = +{ + 0.125, +}; + +static double dgq1_refined_onto_dgq1[] = +{ + 0.421875, 0.28125, 0.28125, 0.1875, 0.28125, 0.1875, 0.1875, 0.125, + -0.140625, 0, -0.09375, 0, -0.09375, 0, -0.0625, 0, + -0.140625, -0.09375, 0, 0, -0.09375, -0.0625, 0, 0, + 0.046875, 0, 0, 0, 0.03125, 0, 0, 0, + -0.140625, -0.09375, -0.09375, -0.0625, 0, 0, 0, 0, + 0.046875, 0, 0.03125, 0, 0, 0, 0, 0, + 0.046875, 0.03125, 0, 0, 0, 0, 0, 0, + -0.015625, 0, 0, 0, 0, 0, 0, 0, +}; + +static double dgq2_refined_onto_dgq2[] = +{ + 0.32495117, 0.35449219, -0.088623047, 0.35449219, 0.38671875, -0.096679688, -0.088623047, -0.096679687, 0.024169922, 0.35449219, 0.38671875, -0.096679688, 0.38671875, 0.421875, -0.10546875, -0.096679687, -0.10546875, 0.026367187, -0.088623047, -0.096679687, 0.024169922, -0.096679687, -0.10546875, 0.026367187, 0.024169922, 0.026367187, -0.0065917969, + -0.044311523, 0.17724609, 0.10339355, -0.048339844, 0.19335938, 0.11279297, 0.012084961, -0.048339844, -0.028198242, -0.048339844, 0.19335938, 0.11279297, -0.052734375, 0.2109375, 0.12304687, 0.013183594, -0.052734375, -0.030761719, 0.012084961, -0.048339844, -0.028198242, 0.013183594, -0.052734375, -0.030761719, -0.0032958984, 0.013183594, 0.0076904297, + 0.088623047, -0.11816406, -0.088623047, 0.096679688, -0.12890625, -0.096679687, -0.024169922, 0.032226563, 0.024169922, 0.096679688, -0.12890625, -0.096679688, 0.10546875, -0.140625, -0.10546875, -0.026367187, 0.03515625, 0.026367188, -0.024169922, 0.032226563, 0.024169922, -0.026367187, 0.03515625, 0.026367188, 0.0065917969, -0.0087890625, -0.0065917969, + -0.044311523, -0.048339844, 0.012084961, 0.17724609, 0.19335937, -0.048339844, 0.10339355, 0.11279297, -0.028198242, -0.048339844, -0.052734375, 0.013183594, 0.19335937, 0.2109375, -0.052734375, 0.11279297, 0.12304687, -0.030761719, 0.012084961, 0.013183594, -0.0032958984, -0.048339844, -0.052734375, 0.013183594, -0.028198242, -0.030761719, 0.0076904297, + 0.0060424805, -0.024169922, -0.014099121, -0.024169922, 0.096679688, 0.056396484, -0.014099121, 0.056396484, 0.032897949, 0.0065917969, -0.026367188, -0.015380859, -0.026367187, 0.10546875, 0.061523438, -0.015380859, 0.061523438, 0.035888672, -0.0016479492, 0.0065917969, 0.0038452148, 0.0065917969, -0.026367187, -0.015380859, 0.0038452148, -0.015380859, -0.008972168, + -0.012084961, 0.016113281, 0.012084961, 0.048339844, -0.064453125, -0.048339844, 0.028198242, -0.037597656, -0.028198242, -0.013183594, 0.017578125, 0.013183594, 0.052734375, -0.0703125, -0.052734375, 0.030761719, -0.041015625, -0.030761719, 0.0032958984, -0.0043945313, -0.0032958984, -0.013183594, 0.017578125, 0.013183594, -0.0076904297, 0.010253906, 0.0076904297, + 0.088623047, 0.096679687, -0.024169922, -0.11816406, -0.12890625, 0.032226562, -0.088623047, -0.096679687, 0.024169922, 0.096679688, 0.10546875, -0.026367188, -0.12890625, -0.140625, 0.03515625, -0.096679687, -0.10546875, 0.026367188, -0.024169922, -0.026367187, 0.0065917969, 0.032226562, 0.03515625, -0.0087890625, 0.024169922, 0.026367187, -0.0065917969, + -0.012084961, 0.048339844, 0.028198242, 0.016113281, -0.064453125, -0.037597656, 0.012084961, -0.048339844, -0.028198242, -0.013183594, 0.052734375, 0.030761719, 0.017578125, -0.0703125, -0.041015625, 0.013183594, -0.052734375, -0.030761719, 0.0032958984, -0.013183594, -0.0076904297, -0.0043945312, 0.017578125, 0.010253906, -0.0032958984, 0.013183594, 0.0076904297, + 0.024169922, -0.032226563, -0.024169922, -0.032226562, 0.04296875, 0.032226563, -0.024169922, 0.032226563, 0.024169922, 0.026367188, -0.03515625, -0.026367188, -0.03515625, 0.046875, 0.03515625, -0.026367188, 0.03515625, 0.026367188, -0.0065917969, 0.0087890625, 0.0065917969, 0.0087890625, -0.01171875, -0.0087890625, 0.0065917969, -0.0087890625, -0.0065917969, + -0.044311523, -0.048339844, 0.012084961, -0.048339844, -0.052734375, 0.013183594, 0.012084961, 0.013183594, -0.0032958984, 0.17724609, 0.19335937, -0.048339844, 0.19335937, 0.2109375, -0.052734375, -0.048339844, -0.052734375, 0.013183594, 0.10339355, 0.11279297, -0.028198242, 0.11279297, 0.12304687, -0.030761719, -0.028198242, -0.030761719, 0.0076904297, + 0.0060424805, -0.024169922, -0.014099121, 0.0065917969, -0.026367188, -0.015380859, -0.0016479492, 0.0065917969, 0.0038452148, -0.024169922, 0.096679688, 0.056396484, -0.026367188, 0.10546875, 0.061523438, 0.0065917969, -0.026367187, -0.015380859, -0.014099121, 0.056396484, 0.032897949, -0.015380859, 0.061523438, 0.035888672, 0.0038452148, -0.015380859, -0.008972168, + -0.012084961, 0.016113281, 0.012084961, -0.013183594, 0.017578125, 0.013183594, 0.0032958984, -0.0043945313, -0.0032958984, 0.048339844, -0.064453125, -0.048339844, 0.052734375, -0.0703125, -0.052734375, -0.013183594, 0.017578125, 0.013183594, 0.028198242, -0.037597656, -0.028198242, 0.030761719, -0.041015625, -0.030761719, -0.0076904297, 0.010253906, 0.0076904297, + 0.0060424805, 0.0065917969, -0.0016479492, -0.024169922, -0.026367188, 0.0065917969, -0.014099121, -0.015380859, 0.0038452148, -0.024169922, -0.026367188, 0.0065917969, 0.096679688, 0.10546875, -0.026367187, 0.056396484, 0.061523438, -0.015380859, -0.014099121, -0.015380859, 0.0038452148, 0.056396484, 0.061523438, -0.015380859, 0.032897949, 0.035888672, -0.008972168, + -0.00082397461, 0.0032958984, 0.0019226074, 0.0032958984, -0.013183594, -0.0076904297, 0.0019226074, -0.0076904297, -0.004486084, 0.0032958984, -0.013183594, -0.0076904297, -0.013183594, 0.052734375, 0.030761719, -0.0076904297, 0.030761719, 0.017944336, 0.0019226074, -0.0076904297, -0.004486084, -0.0076904297, 0.030761719, 0.017944336, -0.004486084, 0.017944336, 0.010467529, + 0.0016479492, -0.0021972656, -0.0016479492, -0.0065917969, 0.0087890625, 0.0065917969, -0.0038452148, 0.0051269531, 0.0038452148, -0.0065917969, 0.0087890625, 0.0065917969, 0.026367188, -0.03515625, -0.026367187, 0.015380859, -0.020507812, -0.015380859, -0.0038452148, 0.0051269531, 0.0038452148, 0.015380859, -0.020507812, -0.015380859, 0.008972168, -0.011962891, -0.008972168, + -0.012084961, -0.013183594, 0.0032958984, 0.016113281, 0.017578125, -0.0043945312, 0.012084961, 0.013183594, -0.0032958984, 0.048339844, 0.052734375, -0.013183594, -0.064453125, -0.0703125, 0.017578125, -0.048339844, -0.052734375, 0.013183594, 0.028198242, 0.030761719, -0.0076904297, -0.037597656, -0.041015625, 0.010253906, -0.028198242, -0.030761719, 0.0076904297, + 0.0016479492, -0.0065917969, -0.0038452148, -0.0021972656, 0.0087890625, 0.0051269531, -0.0016479492, 0.0065917969, 0.0038452148, -0.0065917969, 0.026367188, 0.015380859, 0.0087890625, -0.03515625, -0.020507812, 0.0065917969, -0.026367187, -0.015380859, -0.0038452148, 0.015380859, 0.008972168, 0.0051269531, -0.020507812, -0.011962891, 0.0038452148, -0.015380859, -0.008972168, + -0.0032958984, 0.0043945313, 0.0032958984, 0.0043945313, -0.005859375, -0.0043945312, 0.0032958984, -0.0043945313, -0.0032958984, 0.013183594, -0.017578125, -0.013183594, -0.017578125, 0.0234375, 0.017578125, -0.013183594, 0.017578125, 0.013183594, 0.0076904297, -0.010253906, -0.0076904297, -0.010253906, 0.013671875, 0.010253906, -0.0076904297, 0.010253906, 0.0076904297, + 0.088623047, 0.096679688, -0.024169922, 0.096679688, 0.10546875, -0.026367187, -0.024169922, -0.026367187, 0.0065917969, -0.11816406, -0.12890625, 0.032226562, -0.12890625, -0.140625, 0.03515625, 0.032226563, 0.03515625, -0.0087890625, -0.088623047, -0.096679687, 0.024169922, -0.096679687, -0.10546875, 0.026367187, 0.024169922, 0.026367187, -0.0065917969, + -0.012084961, 0.048339844, 0.028198242, -0.013183594, 0.052734375, 0.030761719, 0.0032958984, -0.013183594, -0.0076904297, 0.016113281, -0.064453125, -0.037597656, 0.017578125, -0.0703125, -0.041015625, -0.0043945312, 0.017578125, 0.010253906, 0.012084961, -0.048339844, -0.028198242, 0.013183594, -0.052734375, -0.030761719, -0.0032958984, 0.013183594, 0.0076904297, + 0.024169922, -0.032226563, -0.024169922, 0.026367188, -0.03515625, -0.026367188, -0.0065917969, 0.0087890625, 0.0065917969, -0.032226563, 0.04296875, 0.032226563, -0.03515625, 0.046875, 0.03515625, 0.0087890625, -0.01171875, -0.0087890625, -0.024169922, 0.032226563, 0.024169922, -0.026367187, 0.03515625, 0.026367188, 0.0065917969, -0.0087890625, -0.0065917969, + -0.012084961, -0.013183594, 0.0032958984, 0.048339844, 0.052734375, -0.013183594, 0.028198242, 0.030761719, -0.0076904297, 0.016113281, 0.017578125, -0.0043945312, -0.064453125, -0.0703125, 0.017578125, -0.037597656, -0.041015625, 0.010253906, 0.012084961, 0.013183594, -0.0032958984, -0.048339844, -0.052734375, 0.013183594, -0.028198242, -0.030761719, 0.0076904297, + 0.0016479492, -0.0065917969, -0.0038452148, -0.0065917969, 0.026367188, 0.015380859, -0.0038452148, 0.015380859, 0.008972168, -0.0021972656, 0.0087890625, 0.0051269531, 0.0087890625, -0.03515625, -0.020507812, 0.0051269531, -0.020507812, -0.011962891, -0.0016479492, 0.0065917969, 0.0038452148, 0.0065917969, -0.026367187, -0.015380859, 0.0038452148, -0.015380859, -0.008972168, + -0.0032958984, 0.0043945313, 0.0032958984, 0.013183594, -0.017578125, -0.013183594, 0.0076904297, -0.010253906, -0.0076904297, 0.0043945313, -0.005859375, -0.0043945313, -0.017578125, 0.0234375, 0.017578125, -0.010253906, 0.013671875, 0.010253906, 0.0032958984, -0.0043945313, -0.0032958984, -0.013183594, 0.017578125, 0.013183594, -0.0076904297, 0.010253906, 0.0076904297, + 0.024169922, 0.026367187, -0.0065917969, -0.032226562, -0.03515625, 0.0087890625, -0.024169922, -0.026367187, 0.0065917969, -0.032226562, -0.03515625, 0.0087890625, 0.04296875, 0.046875, -0.01171875, 0.032226563, 0.03515625, -0.0087890625, -0.024169922, -0.026367187, 0.0065917969, 0.032226562, 0.03515625, -0.0087890625, 0.024169922, 0.026367187, -0.0065917969, + -0.0032958984, 0.013183594, 0.0076904297, 0.0043945312, -0.017578125, -0.010253906, 0.0032958984, -0.013183594, -0.0076904297, 0.0043945312, -0.017578125, -0.010253906, -0.005859375, 0.0234375, 0.013671875, -0.0043945312, 0.017578125, 0.010253906, 0.0032958984, -0.013183594, -0.0076904297, -0.0043945312, 0.017578125, 0.010253906, -0.0032958984, 0.013183594, 0.0076904297, + 0.0065917969, -0.0087890625, -0.0065917969, -0.0087890625, 0.01171875, 0.0087890625, -0.0065917969, 0.0087890625, 0.0065917969, -0.0087890625, 0.01171875, 0.0087890625, 0.01171875, -0.015625, -0.01171875, 0.0087890625, -0.01171875, -0.0087890625, -0.0065917969, 0.0087890625, 0.0065917969, 0.0087890625, -0.01171875, -0.0087890625, 0.0065917969, -0.0087890625, -0.0065917969, +}; + +static double dgq3_refined_onto_dgq3[] = +{ + 0.32495117, 0.44311523, -0.35449219, -0.029541016, 0.44311523, 0.60424805, -0.48339844, -0.040283203, -0.35449219, -0.48339844, 0.38671875, 0.032226563, -0.029541016, -0.040283203, 0.032226563, 0.0026855469, 0.44311523, 0.60424805, -0.48339844, -0.040283203, 0.60424805, 0.82397461, -0.65917969, -0.054931641, -0.48339844, -0.65917969, 0.52734375, 0.043945313, -0.040283203, -0.054931641, 0.043945312, 0.0036621094, -0.35449219, -0.48339844, 0.38671875, 0.032226563, -0.48339844, -0.65917969, 0.52734375, 0.043945312, 0.38671875, 0.52734375, -0.421875, -0.03515625, 0.032226563, 0.043945312, -0.03515625, -0.0029296875, -0.029541016, -0.040283203, 0.032226563, 0.0026855469, -0.040283203, -0.054931641, 0.043945312, 0.0036621094, 0.032226563, 0.043945312, -0.03515625, -0.0029296875, 0.0026855469, 0.0036621094, -0.0029296875, -0.00024414063, + -0.026258681, 0.11488173, 0.29212782, 0.05798792, -0.035807292, 0.1566569, 0.39835612, 0.079074436, 0.028645833, -0.12532552, -0.3186849, -0.063259549, 0.0023871528, -0.010443793, -0.026557075, -0.0052716291, -0.035807292, 0.1566569, 0.39835612, 0.079074436, -0.048828125, 0.21362305, 0.54321289, 0.10782878, 0.0390625, -0.17089844, -0.43457031, -0.086263021, 0.0032552083, -0.014241536, -0.036214193, -0.0071885851, 0.028645833, -0.12532552, -0.3186849, -0.063259549, 0.0390625, -0.17089844, -0.43457031, -0.086263021, -0.03125, 0.13671875, 0.34765625, 0.069010417, -0.0026041667, 0.011393229, 0.028971354, 0.0057508681, 0.0023871528, -0.010443793, -0.026557075, -0.0052716291, 0.0032552083, -0.014241536, -0.036214193, -0.0071885851, -0.0026041667, 0.011393229, 0.028971354, 0.0057508681, -0.00021701389, 0.00094943576, 0.0024142795, 0.000479239, + 0.016411675, -0.055799696, 0.032823351, 0.040482133, 0.022379557, -0.076090495, 0.044759115, 0.055202908, -0.017903646, 0.060872396, -0.035807292, -0.044162326, -0.0014919705, 0.0050726997, -0.002983941, -0.0036801939, 0.022379557, -0.076090495, 0.044759115, 0.055202908, 0.030517578, -0.10375977, 0.061035156, 0.075276693, -0.024414062, 0.083007812, -0.048828125, -0.060221354, -0.0020345052, 0.0069173177, -0.0040690104, -0.0050184462, -0.017903646, 0.060872396, -0.035807292, -0.044162326, -0.024414062, 0.083007812, -0.048828125, -0.060221354, 0.01953125, -0.06640625, 0.0390625, 0.048177083, 0.0016276042, -0.0055338542, 0.0032552083, 0.0040147569, -0.0014919705, 0.0050726997, -0.002983941, -0.0036801939, -0.0020345052, 0.0069173177, -0.0040690104, -0.0050184462, 0.0016276042, -0.0055338542, 0.0032552083, 0.0040147569, 0.00013563368, -0.00046115451, 0.00027126736, 0.00033456308, + -0.059082031, 0.088623047, 0.088623047, -0.029541016, -0.080566406, 0.12084961, 0.12084961, -0.040283203, 0.064453125, -0.096679688, -0.096679688, 0.032226562, 0.0053710937, -0.0080566406, -0.0080566406, 0.0026855469, -0.080566406, 0.12084961, 0.12084961, -0.040283203, -0.10986328, 0.16479492, 0.16479492, -0.054931641, 0.087890625, -0.13183594, -0.13183594, 0.043945312, 0.0073242187, -0.010986328, -0.010986328, 0.0036621094, 0.064453125, -0.096679688, -0.096679688, 0.032226562, 0.087890625, -0.13183594, -0.13183594, 0.043945312, -0.0703125, 0.10546875, 0.10546875, -0.03515625, -0.005859375, 0.0087890625, 0.0087890625, -0.0029296875, 0.0053710937, -0.0080566406, -0.0080566406, 0.0026855469, 0.0073242187, -0.010986328, -0.010986328, 0.0036621094, -0.005859375, 0.0087890625, 0.0087890625, -0.0029296875, -0.00048828125, 0.00073242188, 0.00073242188, -0.00024414062, + -0.026258681, -0.035807292, 0.028645833, 0.0023871528, 0.11488173, 0.1566569, -0.12532552, -0.010443793, 0.29212782, 0.39835612, -0.3186849, -0.026557075, 0.05798792, 0.079074436, -0.063259549, -0.0052716291, -0.035807292, -0.048828125, 0.0390625, 0.0032552083, 0.1566569, 0.21362305, -0.17089844, -0.014241536, 0.39835612, 0.54321289, -0.43457031, -0.036214193, 0.079074436, 0.10782878, -0.086263021, -0.0071885851, 0.028645833, 0.0390625, -0.03125, -0.0026041667, -0.12532552, -0.17089844, 0.13671875, 0.011393229, -0.3186849, -0.43457031, 0.34765625, 0.028971354, -0.063259549, -0.086263021, 0.069010417, 0.0057508681, 0.0023871528, 0.0032552083, -0.0026041667, -0.00021701389, -0.010443793, -0.014241536, 0.011393229, 0.00094943576, -0.026557075, -0.036214193, 0.028971354, 0.0024142795, -0.0052716291, -0.0071885851, 0.0057508681, 0.000479239, + 0.0021219136, -0.0092833719, -0.023606289, -0.0046858925, -0.0092833719, 0.040614752, 0.10327751, 0.02050078, -0.023606289, 0.10327751, 0.26261996, 0.052130554, -0.0046858925, 0.02050078, 0.052130554, 0.010348013, 0.0028935185, -0.012659144, -0.032190394, -0.0063898534, -0.012659144, 0.055383753, 0.14083297, 0.027955609, -0.032190394, 0.14083297, 0.35811813, 0.071087119, -0.0063898534, 0.027955609, 0.071087119, 0.014110926, -0.0023148148, 0.010127315, 0.025752315, 0.0051118827, 0.010127315, -0.044307002, -0.11266638, -0.022364487, 0.025752315, -0.11266638, -0.2864945, -0.056869695, 0.0051118827, -0.022364487, -0.056869695, -0.011288741, -0.00019290123, 0.0008439429, 0.0021460262, 0.00042599023, 0.0008439429, -0.0036922502, -0.0093888648, -0.0018637072, 0.0021460262, -0.0093888648, -0.023874542, -0.0047391413, 0.00042599023, -0.0018637072, -0.0047391413, -0.00094072842, + -0.001326196, 0.0045090664, -0.002652392, -0.0032712834, 0.0058021074, -0.019727165, 0.011604215, 0.014311865, 0.01475393, -0.050163363, 0.029507861, 0.036393028, 0.0029286828, -0.0099575215, 0.0058573656, 0.0072240843, -0.0018084491, 0.0061487269, -0.0036168981, -0.004460841, 0.0079119647, -0.02690068, 0.015823929, 0.01951618, 0.020118996, -0.068404586, 0.040237992, 0.049626857, 0.0039936584, -0.013578438, 0.0079873167, 0.009851024, 0.0014467593, -0.0049189815, 0.0028935185, 0.0035686728, -0.0063295718, 0.021520544, -0.012659144, -0.015612944, -0.016095197, 0.054723669, -0.032190394, -0.039701485, -0.0031949267, 0.010862751, -0.0063898534, -0.0078808192, 0.00012056327, -0.00040991512, 0.00024112654, 0.0002973894, -0.00052746431, 0.0017933787, -0.0010549286, -0.0013010786, -0.0013412664, 0.0045603057, -0.0026825328, -0.0033084571, -0.00026624389, 0.00090522923, -0.00053248778, -0.00065673493, + 0.0047743056, -0.0071614583, -0.0071614583, 0.0023871528, -0.020887587, 0.03133138, 0.03133138, -0.010443793, -0.053114149, 0.079671224, 0.079671224, -0.026557075, -0.010543258, 0.015814887, 0.015814887, -0.0052716291, 0.0065104167, -0.009765625, -0.009765625, 0.0032552083, -0.028483073, 0.042724609, 0.042724609, -0.014241536, -0.072428385, 0.10864258, 0.10864258, -0.036214193, -0.01437717, 0.021565755, 0.021565755, -0.0071885851, -0.0052083333, 0.0078125, 0.0078125, -0.0026041667, 0.022786458, -0.034179688, -0.034179688, 0.011393229, 0.057942708, -0.086914063, -0.086914063, 0.028971354, 0.011501736, -0.017252604, -0.017252604, 0.0057508681, -0.00043402778, 0.00065104167, 0.00065104167, -0.00021701389, 0.0018988715, -0.0028483073, -0.0028483073, 0.00094943576, 0.004828559, -0.0072428385, -0.0072428385, 0.0024142795, 0.00095847801, -0.001437717, -0.001437717, 0.000479239, + 0.016411675, 0.022379557, -0.017903646, -0.0014919705, -0.055799696, -0.076090495, 0.060872396, 0.0050726997, 0.032823351, 0.044759115, -0.035807292, -0.002983941, 0.040482133, 0.055202908, -0.044162326, -0.0036801939, 0.022379557, 0.030517578, -0.024414062, -0.0020345052, -0.076090495, -0.10375977, 0.083007813, 0.0069173177, 0.044759115, 0.061035156, -0.048828125, -0.0040690104, 0.055202908, 0.075276693, -0.060221354, -0.0050184462, -0.017903646, -0.024414063, 0.01953125, 0.0016276042, 0.060872396, 0.083007812, -0.06640625, -0.0055338542, -0.035807292, -0.048828125, 0.0390625, 0.0032552083, -0.044162326, -0.060221354, 0.048177083, 0.0040147569, -0.0014919705, -0.0020345052, 0.0016276042, 0.00013563368, 0.0050726997, 0.0069173177, -0.0055338542, -0.00046115451, -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, -0.0036801939, -0.0050184462, 0.0040147569, 0.00033456308, + -0.001326196, 0.0058021074, 0.01475393, 0.0029286828, 0.0045090664, -0.019727165, -0.050163363, -0.0099575215, -0.002652392, 0.011604215, 0.029507861, 0.0058573656, -0.0032712834, 0.014311865, 0.036393028, 0.0072240843, -0.0018084491, 0.0079119647, 0.020118996, 0.0039936584, 0.0061487269, -0.02690068, -0.068404586, -0.013578438, -0.0036168981, 0.015823929, 0.040237992, 0.0079873167, -0.004460841, 0.01951618, 0.049626857, 0.009851024, 0.0014467593, -0.0063295718, -0.016095197, -0.0031949267, -0.0049189815, 0.021520544, 0.054723669, 0.010862751, 0.0028935185, -0.012659144, -0.032190394, -0.0063898534, 0.0035686728, -0.015612944, -0.039701485, -0.0078808192, 0.00012056327, -0.00052746431, -0.0013412664, -0.00026624389, -0.00040991512, 0.0017933787, 0.0045603057, 0.00090522923, 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, 0.0002973894, -0.0013010786, -0.0033084571, -0.00065673493, + 0.00082887249, -0.0028181665, 0.001657745, 0.0020445521, -0.0028181665, 0.009581766, -0.0056363329, -0.0069514773, 0.001657745, -0.0056363329, 0.00331549, 0.0040891043, 0.0020445521, -0.0069514773, 0.0040891043, 0.0050432286, 0.0011302807, -0.0038429543, 0.0022605613, 0.0027880257, -0.0038429543, 0.013066045, -0.0076859086, -0.0094792872, 0.0022605613, -0.0076859086, 0.0045211227, 0.0055760513, 0.0027880257, -0.0094792872, 0.0055760513, 0.00687713, -0.00090422454, 0.0030743634, -0.0018084491, -0.0022304205, 0.0030743634, -0.010452836, 0.0061487269, 0.0075834298, -0.0018084491, 0.0061487269, -0.0036168981, -0.004460841, -0.0022304205, 0.0075834298, -0.004460841, -0.005501704, -7.5352045e-05, 0.00025619695, -0.00015070409, -0.00018586838, 0.00025619695, -0.00087106964, 0.0005123939, 0.00063195248, -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, -0.00018586838, 0.00063195248, -0.00037173675, -0.00045847533, + -0.002983941, 0.0044759115, 0.0044759115, -0.0014919705, 0.010145399, -0.015218099, -0.015218099, 0.0050726997, -0.0059678819, 0.0089518229, 0.0089518229, -0.002983941, -0.0073603877, 0.011040582, 0.011040582, -0.0036801939, -0.0040690104, 0.0061035156, 0.0061035156, -0.0020345052, 0.013834635, -0.020751953, -0.020751953, 0.0069173177, -0.0081380208, 0.012207031, 0.012207031, -0.0040690104, -0.010036892, 0.015055339, 0.015055339, -0.0050184462, 0.0032552083, -0.0048828125, -0.0048828125, 0.0016276042, -0.011067708, 0.016601563, 0.016601563, -0.0055338542, 0.0065104167, -0.009765625, -0.009765625, 0.0032552083, 0.0080295139, -0.012044271, -0.012044271, 0.0040147569, 0.00027126736, -0.00040690104, -0.00040690104, 0.00013563368, -0.00092230903, 0.0013834635, 0.0013834635, -0.00046115451, 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, 0.00066912616, -0.0010036892, -0.0010036892, 0.00033456308, + -0.059082031, -0.080566406, 0.064453125, 0.0053710938, 0.088623047, 0.12084961, -0.096679687, -0.0080566406, 0.088623047, 0.12084961, -0.096679688, -0.0080566406, -0.029541016, -0.040283203, 0.032226563, 0.0026855469, -0.080566406, -0.10986328, 0.087890625, 0.0073242188, 0.12084961, 0.16479492, -0.13183594, -0.010986328, 0.12084961, 0.16479492, -0.13183594, -0.010986328, -0.040283203, -0.054931641, 0.043945312, 0.0036621094, 0.064453125, 0.087890625, -0.0703125, -0.005859375, -0.096679688, -0.13183594, 0.10546875, 0.0087890625, -0.096679688, -0.13183594, 0.10546875, 0.0087890625, 0.032226563, 0.043945313, -0.03515625, -0.0029296875, 0.0053710938, 0.0073242187, -0.005859375, -0.00048828125, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, 0.0026855469, 0.0036621094, -0.0029296875, -0.00024414063, + 0.0047743056, -0.020887587, -0.053114149, -0.010543258, -0.0071614583, 0.03133138, 0.079671224, 0.015814887, -0.0071614583, 0.03133138, 0.079671224, 0.015814887, 0.0023871528, -0.010443793, -0.026557075, -0.0052716291, 0.0065104167, -0.028483073, -0.072428385, -0.01437717, -0.009765625, 0.042724609, 0.10864258, 0.021565755, -0.009765625, 0.042724609, 0.10864258, 0.021565755, 0.0032552083, -0.014241536, -0.036214193, -0.0071885851, -0.0052083333, 0.022786458, 0.057942708, 0.011501736, 0.0078125, -0.034179688, -0.086914063, -0.017252604, 0.0078125, -0.034179688, -0.086914063, -0.017252604, -0.0026041667, 0.011393229, 0.028971354, 0.0057508681, -0.00043402778, 0.0018988715, 0.004828559, 0.00095847801, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, -0.00021701389, 0.00094943576, 0.0024142795, 0.000479239, + -0.002983941, 0.010145399, -0.0059678819, -0.0073603877, 0.0044759115, -0.015218099, 0.0089518229, 0.011040582, 0.0044759115, -0.015218099, 0.0089518229, 0.011040582, -0.0014919705, 0.0050726997, -0.002983941, -0.0036801939, -0.0040690104, 0.013834635, -0.0081380208, -0.010036892, 0.0061035156, -0.020751953, 0.012207031, 0.015055339, 0.0061035156, -0.020751953, 0.012207031, 0.015055339, -0.0020345052, 0.0069173177, -0.0040690104, -0.0050184462, 0.0032552083, -0.011067708, 0.0065104167, 0.0080295139, -0.0048828125, 0.016601563, -0.009765625, -0.012044271, -0.0048828125, 0.016601562, -0.009765625, -0.012044271, 0.0016276042, -0.0055338542, 0.0032552083, 0.0040147569, 0.00027126736, -0.00092230903, 0.00054253472, 0.00066912616, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, 0.00013563368, -0.00046115451, 0.00027126736, 0.00033456308, + 0.010742188, -0.016113281, -0.016113281, 0.0053710937, -0.016113281, 0.024169922, 0.024169922, -0.0080566406, -0.016113281, 0.024169922, 0.024169922, -0.0080566406, 0.0053710937, -0.0080566406, -0.0080566406, 0.0026855469, 0.014648438, -0.021972656, -0.021972656, 0.0073242187, -0.021972656, 0.032958984, 0.032958984, -0.010986328, -0.021972656, 0.032958984, 0.032958984, -0.010986328, 0.0073242187, -0.010986328, -0.010986328, 0.0036621094, -0.01171875, 0.017578125, 0.017578125, -0.005859375, 0.017578125, -0.026367188, -0.026367187, 0.0087890625, 0.017578125, -0.026367187, -0.026367188, 0.0087890625, -0.005859375, 0.0087890625, 0.0087890625, -0.0029296875, -0.0009765625, 0.0014648437, 0.0014648438, -0.00048828125, 0.0014648437, -0.0021972656, -0.0021972656, 0.00073242187, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242187, -0.00048828125, 0.00073242188, 0.00073242188, -0.00024414062, + -0.026258681, -0.035807292, 0.028645833, 0.0023871528, -0.035807292, -0.048828125, 0.0390625, 0.0032552083, 0.028645833, 0.0390625, -0.03125, -0.0026041667, 0.0023871528, 0.0032552083, -0.0026041667, -0.00021701389, 0.11488173, 0.1566569, -0.12532552, -0.010443793, 0.1566569, 0.21362305, -0.17089844, -0.014241536, -0.12532552, -0.17089844, 0.13671875, 0.011393229, -0.010443793, -0.014241536, 0.011393229, 0.00094943576, 0.29212782, 0.39835612, -0.3186849, -0.026557075, 0.39835612, 0.54321289, -0.43457031, -0.036214193, -0.3186849, -0.43457031, 0.34765625, 0.028971354, -0.026557075, -0.036214193, 0.028971354, 0.0024142795, 0.05798792, 0.079074436, -0.063259549, -0.0052716291, 0.079074436, 0.10782878, -0.086263021, -0.0071885851, -0.063259549, -0.086263021, 0.069010417, 0.0057508681, -0.0052716291, -0.0071885851, 0.0057508681, 0.000479239, + 0.0021219136, -0.0092833719, -0.023606289, -0.0046858925, 0.0028935185, -0.012659144, -0.032190394, -0.0063898534, -0.0023148148, 0.010127315, 0.025752315, 0.0051118827, -0.00019290123, 0.0008439429, 0.0021460262, 0.00042599023, -0.0092833719, 0.040614752, 0.10327751, 0.02050078, -0.012659144, 0.055383753, 0.14083297, 0.027955609, 0.010127315, -0.044307002, -0.11266638, -0.022364487, 0.0008439429, -0.0036922502, -0.0093888648, -0.0018637072, -0.023606289, 0.10327751, 0.26261996, 0.052130554, -0.032190394, 0.14083297, 0.35811813, 0.071087119, 0.025752315, -0.11266638, -0.2864945, -0.056869695, 0.0021460262, -0.0093888648, -0.023874542, -0.0047391413, -0.0046858925, 0.02050078, 0.052130554, 0.010348013, -0.0063898534, 0.027955609, 0.071087119, 0.014110926, 0.0051118827, -0.022364487, -0.056869695, -0.011288741, 0.00042599023, -0.0018637072, -0.0047391413, -0.00094072842, + -0.001326196, 0.0045090664, -0.002652392, -0.0032712834, -0.0018084491, 0.0061487269, -0.0036168981, -0.004460841, 0.0014467593, -0.0049189815, 0.0028935185, 0.0035686728, 0.00012056327, -0.00040991512, 0.00024112654, 0.0002973894, 0.0058021074, -0.019727165, 0.011604215, 0.014311865, 0.0079119647, -0.02690068, 0.015823929, 0.01951618, -0.0063295718, 0.021520544, -0.012659144, -0.015612944, -0.00052746431, 0.0017933787, -0.0010549286, -0.0013010786, 0.01475393, -0.050163363, 0.029507861, 0.036393028, 0.020118996, -0.068404586, 0.040237992, 0.049626857, -0.016095197, 0.054723669, -0.032190394, -0.039701485, -0.0013412664, 0.0045603057, -0.0026825328, -0.0033084571, 0.0029286828, -0.0099575215, 0.0058573656, 0.0072240843, 0.0039936584, -0.013578438, 0.0079873167, 0.009851024, -0.0031949267, 0.010862751, -0.0063898534, -0.0078808192, -0.00026624389, 0.00090522923, -0.00053248778, -0.00065673493, + 0.0047743056, -0.0071614583, -0.0071614583, 0.0023871528, 0.0065104167, -0.009765625, -0.009765625, 0.0032552083, -0.0052083333, 0.0078125, 0.0078125, -0.0026041667, -0.00043402778, 0.00065104167, 0.00065104167, -0.00021701389, -0.020887587, 0.03133138, 0.03133138, -0.010443793, -0.028483073, 0.042724609, 0.042724609, -0.014241536, 0.022786458, -0.034179688, -0.034179688, 0.011393229, 0.0018988715, -0.0028483073, -0.0028483073, 0.00094943576, -0.053114149, 0.079671224, 0.079671224, -0.026557075, -0.072428385, 0.10864258, 0.10864258, -0.036214193, 0.057942708, -0.086914063, -0.086914063, 0.028971354, 0.004828559, -0.0072428385, -0.0072428385, 0.0024142795, -0.010543258, 0.015814887, 0.015814887, -0.0052716291, -0.01437717, 0.021565755, 0.021565755, -0.0071885851, 0.011501736, -0.017252604, -0.017252604, 0.0057508681, 0.00095847801, -0.001437717, -0.001437717, 0.000479239, + 0.0021219136, 0.0028935185, -0.0023148148, -0.00019290123, -0.0092833719, -0.012659144, 0.010127315, 0.0008439429, -0.023606289, -0.032190394, 0.025752315, 0.0021460262, -0.0046858925, -0.0063898534, 0.0051118827, 0.00042599023, -0.0092833719, -0.012659144, 0.010127315, 0.0008439429, 0.040614752, 0.055383753, -0.044307002, -0.0036922502, 0.10327751, 0.14083297, -0.11266638, -0.0093888648, 0.02050078, 0.027955609, -0.022364487, -0.0018637072, -0.023606289, -0.032190394, 0.025752315, 0.0021460262, 0.10327751, 0.14083297, -0.11266638, -0.0093888648, 0.26261996, 0.35811813, -0.2864945, -0.023874542, 0.052130554, 0.071087119, -0.056869695, -0.0047391413, -0.0046858925, -0.0063898534, 0.0051118827, 0.00042599023, 0.02050078, 0.027955609, -0.022364487, -0.0018637072, 0.052130554, 0.071087119, -0.056869695, -0.0047391413, 0.010348013, 0.014110926, -0.011288741, -0.00094072842, + -0.00017146776, 0.00075017147, 0.0019075789, 0.00037865798, 0.00075017147, -0.0032820002, -0.0083456576, -0.0016566287, 0.0019075789, -0.0083456576, -0.021221815, -0.00421257, 0.00037865798, -0.0016566287, -0.00421257, -0.00083620304, 0.00075017147, -0.0032820002, -0.0083456576, -0.0016566287, -0.0032820002, 0.014358751, 0.036512252, 0.0072477504, -0.0083456576, 0.036512252, 0.092845441, 0.018429994, -0.0016566287, 0.0072477504, 0.018429994, 0.0036583883, 0.0019075789, -0.0083456576, -0.021221815, -0.00421257, -0.0083456576, 0.036512252, 0.092845441, 0.018429994, -0.021221815, 0.092845441, 0.23609269, 0.046864841, -0.00421257, 0.018429994, 0.046864841, 0.0093027588, 0.00037865798, -0.0016566287, -0.00421257, -0.00083620304, -0.0016566287, 0.0072477504, 0.018429994, 0.0036583883, -0.00421257, 0.018429994, 0.046864841, 0.0093027588, -0.00083620304, 0.0036583883, 0.0093027588, 0.001846615, + 0.00010716735, -0.000364369, 0.00021433471, 0.00026434614, -0.00046885717, 0.0015941144, -0.00093771433, -0.0011565143, -0.0011922368, 0.0040536051, -0.0023844736, -0.0029408508, -0.00023666124, 0.00080464821, -0.00047332247, -0.00058376438, -0.00046885717, 0.0015941144, -0.00093771433, -0.0011565143, 0.0020512501, -0.0069742504, 0.0041025002, 0.0050597503, 0.005216036, -0.017734522, 0.010432072, 0.012866222, 0.0010353929, -0.0035203359, 0.0020707858, 0.0025539692, -0.0011922368, 0.0040536051, -0.0023844736, -0.0029408508, 0.005216036, -0.017734522, 0.010432072, 0.012866222, 0.013263634, -0.045096357, 0.026527269, 0.032716965, 0.0026328563, -0.0089517113, 0.0052657125, 0.0064943788, -0.00023666124, 0.00080464821, -0.00047332247, -0.00058376438, 0.0010353929, -0.0035203359, 0.0020707858, 0.0025539692, 0.0026328563, -0.0089517113, 0.0052657125, 0.0064943788, 0.0005226269, -0.0017769315, 0.0010452538, 0.0012891463, + -0.00038580247, 0.0005787037, 0.0005787037, -0.00019290123, 0.0016878858, -0.0025318287, -0.0025318287, 0.0008439429, 0.0042920525, -0.0064380787, -0.0064380787, 0.0021460262, 0.00085198045, -0.0012779707, -0.0012779707, 0.00042599023, 0.0016878858, -0.0025318287, -0.0025318287, 0.0008439429, -0.0073845004, 0.011076751, 0.011076751, -0.0036922502, -0.01877773, 0.028166594, 0.028166594, -0.0093888648, -0.0037274145, 0.0055911217, 0.0055911217, -0.0018637072, 0.0042920525, -0.0064380787, -0.0064380787, 0.0021460262, -0.01877773, 0.028166594, 0.028166594, -0.0093888648, -0.047749084, 0.071623626, 0.071623626, -0.023874542, -0.0094782825, 0.014217424, 0.014217424, -0.0047391413, 0.00085198045, -0.0012779707, -0.0012779707, 0.00042599023, -0.0037274145, 0.0055911217, 0.0055911217, -0.0018637072, -0.0094782825, 0.014217424, 0.014217424, -0.0047391413, -0.0018814568, 0.0028221852, 0.0028221852, -0.00094072842, + -0.001326196, -0.0018084491, 0.0014467593, 0.00012056327, 0.0045090664, 0.0061487269, -0.0049189815, -0.00040991512, -0.002652392, -0.0036168981, 0.0028935185, 0.00024112654, -0.0032712834, -0.004460841, 0.0035686728, 0.0002973894, 0.0058021074, 0.0079119647, -0.0063295718, -0.00052746431, -0.019727165, -0.02690068, 0.021520544, 0.0017933787, 0.011604215, 0.015823929, -0.012659144, -0.0010549286, 0.014311865, 0.01951618, -0.015612944, -0.0013010786, 0.01475393, 0.020118996, -0.016095197, -0.0013412664, -0.050163363, -0.068404586, 0.054723669, 0.0045603057, 0.029507861, 0.040237992, -0.032190394, -0.0026825328, 0.036393028, 0.049626857, -0.039701485, -0.0033084571, 0.0029286828, 0.0039936584, -0.0031949267, -0.00026624389, -0.0099575215, -0.013578438, 0.010862751, 0.00090522923, 0.0058573656, 0.0079873167, -0.0063898534, -0.00053248778, 0.0072240843, 0.009851024, -0.0078808192, -0.00065673493, + 0.00010716735, -0.00046885717, -0.0011922368, -0.00023666124, -0.000364369, 0.0015941144, 0.0040536051, 0.00080464821, 0.00021433471, -0.00093771433, -0.0023844736, -0.00047332247, 0.00026434614, -0.0011565143, -0.0029408508, -0.00058376438, -0.00046885717, 0.0020512501, 0.005216036, 0.0010353929, 0.0015941144, -0.0069742504, -0.017734522, -0.0035203359, -0.00093771433, 0.0041025002, 0.010432072, 0.0020707858, -0.0011565143, 0.0050597503, 0.012866222, 0.0025539692, -0.0011922368, 0.005216036, 0.013263634, 0.0026328563, 0.0040536051, -0.017734522, -0.045096357, -0.0089517113, -0.0023844736, 0.010432072, 0.026527269, 0.0052657125, -0.0029408508, 0.012866222, 0.032716965, 0.0064943788, -0.00023666124, 0.0010353929, 0.0026328563, 0.0005226269, 0.00080464821, -0.0035203359, -0.0089517113, -0.0017769315, -0.00047332247, 0.0020707858, 0.0052657125, 0.0010452538, -0.00058376438, 0.0025539692, 0.0064943788, 0.0012891463, + -6.6979595e-05, 0.00022773062, -0.00013395919, -0.00016521634, 0.00022773062, -0.00077428412, 0.00045546125, 0.00056173554, -0.00013395919, 0.00045546125, -0.00026791838, -0.00033043267, -0.00016521634, 0.00056173554, -0.00033043267, -0.00040753363, 0.00029303573, -0.00099632148, 0.00058607146, 0.00072282147, -0.00099632148, 0.003387493, -0.001992643, -0.002457593, 0.00058607146, -0.001992643, 0.0011721429, 0.0014456429, 0.00072282147, -0.002457593, 0.0014456429, 0.0017829596, 0.000745148, -0.0025335032, 0.001490296, 0.0018380317, -0.0025335032, 0.0086139109, -0.0050670064, -0.0062493079, 0.001490296, -0.0050670064, 0.002980592, 0.0036760635, 0.0018380317, -0.0062493079, 0.0036760635, 0.0045338116, 0.00014791327, -0.00050290513, 0.00029582655, 0.00036485274, -0.00050290513, 0.0017098774, -0.0010058103, -0.0012404993, 0.00029582655, -0.0010058103, 0.00059165309, 0.00072970548, 0.00036485274, -0.0012404993, 0.00072970548, 0.00089997009, + 0.00024112654, -0.00036168981, -0.00036168981, 0.00012056327, -0.00081983025, 0.0012297454, 0.0012297454, -0.00040991512, 0.00048225309, -0.00072337963, -0.00072337963, 0.00024112654, 0.00059477881, -0.00089216821, -0.00089216821, 0.0002973894, -0.0010549286, 0.0015823929, 0.0015823929, -0.00052746431, 0.0035867573, -0.005380136, -0.005380136, 0.0017933787, -0.0021098573, 0.0031647859, 0.0031647859, -0.0010549286, -0.0026021573, 0.0039032359, 0.0039032359, -0.0013010786, -0.0026825328, 0.0040237992, 0.0040237992, -0.0013412664, 0.0091206115, -0.013680917, -0.013680917, 0.0045603057, -0.0053650656, 0.0080475984, 0.0080475984, -0.0026825328, -0.0066169142, 0.0099253713, 0.0099253713, -0.0033084571, -0.00053248778, 0.00079873167, 0.00079873167, -0.00026624389, 0.0018104585, -0.0027156877, -0.0027156877, 0.00090522923, -0.0010649756, 0.0015974633, 0.0015974633, -0.00053248778, -0.0013134699, 0.0019702048, 0.0019702048, -0.00065673493, + 0.0047743056, 0.0065104167, -0.0052083333, -0.00043402778, -0.0071614583, -0.009765625, 0.0078125, 0.00065104167, -0.0071614583, -0.009765625, 0.0078125, 0.00065104167, 0.0023871528, 0.0032552083, -0.0026041667, -0.00021701389, -0.020887587, -0.028483073, 0.022786458, 0.0018988715, 0.03133138, 0.042724609, -0.034179688, -0.0028483073, 0.03133138, 0.042724609, -0.034179688, -0.0028483073, -0.010443793, -0.014241536, 0.011393229, 0.00094943576, -0.053114149, -0.072428385, 0.057942708, 0.004828559, 0.079671224, 0.10864258, -0.086914063, -0.0072428385, 0.079671224, 0.10864258, -0.086914063, -0.0072428385, -0.026557075, -0.036214193, 0.028971354, 0.0024142795, -0.010543258, -0.01437717, 0.011501736, 0.00095847801, 0.015814887, 0.021565755, -0.017252604, -0.001437717, 0.015814887, 0.021565755, -0.017252604, -0.001437717, -0.0052716291, -0.0071885851, 0.0057508681, 0.000479239, + -0.00038580247, 0.0016878858, 0.0042920525, 0.00085198045, 0.0005787037, -0.0025318287, -0.0064380787, -0.0012779707, 0.0005787037, -0.0025318287, -0.0064380787, -0.0012779707, -0.00019290123, 0.0008439429, 0.0021460262, 0.00042599023, 0.0016878858, -0.0073845004, -0.01877773, -0.0037274145, -0.0025318287, 0.011076751, 0.028166594, 0.0055911217, -0.0025318287, 0.011076751, 0.028166594, 0.0055911217, 0.0008439429, -0.0036922502, -0.0093888648, -0.0018637072, 0.0042920525, -0.01877773, -0.047749084, -0.0094782825, -0.0064380787, 0.028166594, 0.071623626, 0.014217424, -0.0064380787, 0.028166594, 0.071623626, 0.014217424, 0.0021460262, -0.0093888648, -0.023874542, -0.0047391413, 0.00085198045, -0.0037274145, -0.0094782825, -0.0018814568, -0.0012779707, 0.0055911217, 0.014217424, 0.0028221852, -0.0012779707, 0.0055911217, 0.014217424, 0.0028221852, 0.00042599023, -0.0018637072, -0.0047391413, -0.00094072842, + 0.00024112654, -0.00081983025, 0.00048225309, 0.00059477881, -0.00036168981, 0.0012297454, -0.00072337963, -0.00089216821, -0.00036168981, 0.0012297454, -0.00072337963, -0.00089216821, 0.00012056327, -0.00040991512, 0.00024112654, 0.0002973894, -0.0010549286, 0.0035867573, -0.0021098573, -0.0026021573, 0.0015823929, -0.005380136, 0.0031647859, 0.0039032359, 0.0015823929, -0.005380136, 0.0031647859, 0.0039032359, -0.00052746431, 0.0017933787, -0.0010549286, -0.0013010786, -0.0026825328, 0.0091206115, -0.0053650656, -0.0066169142, 0.0040237992, -0.013680917, 0.0080475984, 0.0099253713, 0.0040237992, -0.013680917, 0.0080475984, 0.0099253713, -0.0013412664, 0.0045603057, -0.0026825328, -0.0033084571, -0.00053248778, 0.0018104585, -0.0010649756, -0.0013134699, 0.00079873167, -0.0027156877, 0.0015974633, 0.0019702048, 0.00079873167, -0.0027156877, 0.0015974633, 0.0019702048, -0.00026624389, 0.00090522923, -0.00053248778, -0.00065673493, + -0.00086805556, 0.0013020833, 0.0013020833, -0.00043402778, 0.0013020833, -0.001953125, -0.001953125, 0.00065104167, 0.0013020833, -0.001953125, -0.001953125, 0.00065104167, -0.00043402778, 0.00065104167, 0.00065104167, -0.00021701389, 0.0037977431, -0.0056966146, -0.0056966146, 0.0018988715, -0.0056966146, 0.0085449219, 0.0085449219, -0.0028483073, -0.0056966146, 0.0085449219, 0.0085449219, -0.0028483073, 0.0018988715, -0.0028483073, -0.0028483073, 0.00094943576, 0.0096571181, -0.014485677, -0.014485677, 0.004828559, -0.014485677, 0.021728516, 0.021728516, -0.0072428385, -0.014485677, 0.021728516, 0.021728516, -0.0072428385, 0.004828559, -0.0072428385, -0.0072428385, 0.0024142795, 0.001916956, -0.002875434, -0.002875434, 0.00095847801, -0.002875434, 0.004313151, 0.004313151, -0.001437717, -0.002875434, 0.004313151, 0.004313151, -0.001437717, 0.00095847801, -0.001437717, -0.001437717, 0.000479239, + 0.016411675, 0.022379557, -0.017903646, -0.0014919705, 0.022379557, 0.030517578, -0.024414062, -0.0020345052, -0.017903646, -0.024414063, 0.01953125, 0.0016276042, -0.0014919705, -0.0020345052, 0.0016276042, 0.00013563368, -0.055799696, -0.076090495, 0.060872396, 0.0050726997, -0.076090495, -0.10375977, 0.083007813, 0.0069173177, 0.060872396, 0.083007813, -0.06640625, -0.0055338542, 0.0050726997, 0.0069173177, -0.0055338542, -0.00046115451, 0.032823351, 0.044759115, -0.035807292, -0.002983941, 0.044759115, 0.061035156, -0.048828125, -0.0040690104, -0.035807292, -0.048828125, 0.0390625, 0.0032552083, -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, 0.040482133, 0.055202908, -0.044162326, -0.0036801939, 0.055202908, 0.075276693, -0.060221354, -0.0050184462, -0.044162326, -0.060221354, 0.048177083, 0.0040147569, -0.0036801939, -0.0050184462, 0.0040147569, 0.00033456308, + -0.001326196, 0.0058021074, 0.01475393, 0.0029286828, -0.0018084491, 0.0079119647, 0.020118996, 0.0039936584, 0.0014467593, -0.0063295718, -0.016095197, -0.0031949267, 0.00012056327, -0.00052746431, -0.0013412664, -0.00026624389, 0.0045090664, -0.019727165, -0.050163363, -0.0099575215, 0.0061487269, -0.02690068, -0.068404586, -0.013578438, -0.0049189815, 0.021520544, 0.054723669, 0.010862751, -0.00040991512, 0.0017933787, 0.0045603057, 0.00090522923, -0.002652392, 0.011604215, 0.029507861, 0.0058573656, -0.0036168981, 0.015823929, 0.040237992, 0.0079873167, 0.0028935185, -0.012659144, -0.032190394, -0.0063898534, 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, -0.0032712834, 0.014311865, 0.036393028, 0.0072240843, -0.004460841, 0.01951618, 0.049626857, 0.009851024, 0.0035686728, -0.015612944, -0.039701485, -0.0078808192, 0.0002973894, -0.0013010786, -0.0033084571, -0.00065673493, + 0.00082887249, -0.0028181665, 0.001657745, 0.0020445521, 0.0011302807, -0.0038429543, 0.0022605613, 0.0027880257, -0.00090422454, 0.0030743634, -0.0018084491, -0.0022304205, -7.5352045e-05, 0.00025619695, -0.00015070409, -0.00018586838, -0.0028181665, 0.009581766, -0.0056363329, -0.0069514773, -0.0038429543, 0.013066045, -0.0076859086, -0.0094792872, 0.0030743634, -0.010452836, 0.0061487269, 0.0075834298, 0.00025619695, -0.00087106964, 0.0005123939, 0.00063195248, 0.001657745, -0.0056363329, 0.00331549, 0.0040891043, 0.0022605613, -0.0076859086, 0.0045211227, 0.0055760513, -0.0018084491, 0.0061487269, -0.0036168981, -0.004460841, -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, 0.0020445521, -0.0069514773, 0.0040891043, 0.0050432286, 0.0027880257, -0.0094792872, 0.0055760513, 0.00687713, -0.0022304205, 0.0075834298, -0.004460841, -0.005501704, -0.00018586838, 0.00063195248, -0.00037173675, -0.00045847533, + -0.002983941, 0.0044759115, 0.0044759115, -0.0014919705, -0.0040690104, 0.0061035156, 0.0061035156, -0.0020345052, 0.0032552083, -0.0048828125, -0.0048828125, 0.0016276042, 0.00027126736, -0.00040690104, -0.00040690104, 0.00013563368, 0.010145399, -0.015218099, -0.015218099, 0.0050726997, 0.013834635, -0.020751953, -0.020751953, 0.0069173177, -0.011067708, 0.016601563, 0.016601563, -0.0055338542, -0.00092230903, 0.0013834635, 0.0013834635, -0.00046115451, -0.0059678819, 0.0089518229, 0.0089518229, -0.002983941, -0.0081380208, 0.012207031, 0.012207031, -0.0040690104, 0.0065104167, -0.009765625, -0.009765625, 0.0032552083, 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, -0.0073603877, 0.011040582, 0.011040582, -0.0036801939, -0.010036892, 0.015055339, 0.015055339, -0.0050184462, 0.0080295139, -0.012044271, -0.012044271, 0.0040147569, 0.00066912616, -0.0010036892, -0.0010036892, 0.00033456308, + -0.001326196, -0.0018084491, 0.0014467593, 0.00012056327, 0.0058021074, 0.0079119647, -0.0063295718, -0.00052746431, 0.01475393, 0.020118996, -0.016095197, -0.0013412664, 0.0029286828, 0.0039936584, -0.0031949267, -0.00026624389, 0.0045090664, 0.0061487269, -0.0049189815, -0.00040991512, -0.019727165, -0.02690068, 0.021520544, 0.0017933787, -0.050163363, -0.068404586, 0.054723669, 0.0045603057, -0.0099575215, -0.013578438, 0.010862751, 0.00090522923, -0.002652392, -0.0036168981, 0.0028935185, 0.00024112654, 0.011604215, 0.015823929, -0.012659144, -0.0010549286, 0.029507861, 0.040237992, -0.032190394, -0.0026825328, 0.0058573656, 0.0079873167, -0.0063898534, -0.00053248778, -0.0032712834, -0.004460841, 0.0035686728, 0.0002973894, 0.014311865, 0.01951618, -0.015612944, -0.0013010786, 0.036393028, 0.049626857, -0.039701485, -0.0033084571, 0.0072240843, 0.009851024, -0.0078808192, -0.00065673493, + 0.00010716735, -0.00046885717, -0.0011922368, -0.00023666124, -0.00046885717, 0.0020512501, 0.005216036, 0.0010353929, -0.0011922368, 0.005216036, 0.013263634, 0.0026328563, -0.00023666124, 0.0010353929, 0.0026328563, 0.0005226269, -0.000364369, 0.0015941144, 0.0040536051, 0.00080464821, 0.0015941144, -0.0069742504, -0.017734522, -0.0035203359, 0.0040536051, -0.017734522, -0.045096357, -0.0089517113, 0.00080464821, -0.0035203359, -0.0089517113, -0.0017769315, 0.00021433471, -0.00093771433, -0.0023844736, -0.00047332247, -0.00093771433, 0.0041025002, 0.010432072, 0.0020707858, -0.0023844736, 0.010432072, 0.026527269, 0.0052657125, -0.00047332247, 0.0020707858, 0.0052657125, 0.0010452538, 0.00026434614, -0.0011565143, -0.0029408508, -0.00058376438, -0.0011565143, 0.0050597503, 0.012866222, 0.0025539692, -0.0029408508, 0.012866222, 0.032716965, 0.0064943788, -0.00058376438, 0.0025539692, 0.0064943788, 0.0012891463, + -6.6979595e-05, 0.00022773062, -0.00013395919, -0.00016521634, 0.00029303573, -0.00099632148, 0.00058607146, 0.00072282147, 0.000745148, -0.0025335032, 0.001490296, 0.0018380317, 0.00014791327, -0.00050290513, 0.00029582655, 0.00036485274, 0.00022773062, -0.00077428412, 0.00045546125, 0.00056173554, -0.00099632148, 0.003387493, -0.001992643, -0.002457593, -0.0025335032, 0.0086139109, -0.0050670064, -0.0062493079, -0.00050290513, 0.0017098774, -0.0010058103, -0.0012404993, -0.00013395919, 0.00045546125, -0.00026791838, -0.00033043267, 0.00058607146, -0.001992643, 0.0011721429, 0.0014456429, 0.001490296, -0.0050670064, 0.002980592, 0.0036760635, 0.00029582655, -0.0010058103, 0.00059165309, 0.00072970548, -0.00016521634, 0.00056173554, -0.00033043267, -0.00040753363, 0.00072282147, -0.002457593, 0.0014456429, 0.0017829596, 0.0018380317, -0.0062493079, 0.0036760635, 0.0045338116, 0.00036485274, -0.0012404993, 0.00072970548, 0.00089997009, + 0.00024112654, -0.00036168981, -0.00036168981, 0.00012056327, -0.0010549286, 0.0015823929, 0.0015823929, -0.00052746431, -0.0026825328, 0.0040237992, 0.0040237992, -0.0013412664, -0.00053248778, 0.00079873167, 0.00079873167, -0.00026624389, -0.00081983025, 0.0012297454, 0.0012297454, -0.00040991512, 0.0035867573, -0.005380136, -0.005380136, 0.0017933787, 0.0091206115, -0.013680917, -0.013680917, 0.0045603057, 0.0018104585, -0.0027156877, -0.0027156877, 0.00090522923, 0.00048225309, -0.00072337963, -0.00072337963, 0.00024112654, -0.0021098573, 0.0031647859, 0.0031647859, -0.0010549286, -0.0053650656, 0.0080475984, 0.0080475984, -0.0026825328, -0.0010649756, 0.0015974633, 0.0015974633, -0.00053248778, 0.00059477881, -0.00089216821, -0.00089216821, 0.0002973894, -0.0026021573, 0.0039032359, 0.0039032359, -0.0013010786, -0.0066169142, 0.0099253713, 0.0099253713, -0.0033084571, -0.0013134699, 0.0019702048, 0.0019702048, -0.00065673493, + 0.00082887249, 0.0011302807, -0.00090422454, -7.5352045e-05, -0.0028181665, -0.0038429543, 0.0030743634, 0.00025619695, 0.001657745, 0.0022605613, -0.0018084491, -0.00015070409, 0.0020445521, 0.0027880257, -0.0022304205, -0.00018586838, -0.0028181665, -0.0038429543, 0.0030743634, 0.00025619695, 0.009581766, 0.013066045, -0.010452836, -0.00087106964, -0.0056363329, -0.0076859086, 0.0061487269, 0.0005123939, -0.0069514773, -0.0094792872, 0.0075834298, 0.00063195248, 0.001657745, 0.0022605613, -0.0018084491, -0.00015070409, -0.0056363329, -0.0076859086, 0.0061487269, 0.0005123939, 0.00331549, 0.0045211227, -0.0036168981, -0.00030140818, 0.0040891043, 0.0055760513, -0.004460841, -0.00037173675, 0.0020445521, 0.0027880257, -0.0022304205, -0.00018586838, -0.0069514773, -0.0094792872, 0.0075834298, 0.00063195248, 0.0040891043, 0.0055760513, -0.004460841, -0.00037173675, 0.0050432286, 0.00687713, -0.005501704, -0.00045847533, + -6.6979595e-05, 0.00029303573, 0.000745148, 0.00014791327, 0.00022773062, -0.00099632148, -0.0025335032, -0.00050290513, -0.00013395919, 0.00058607146, 0.001490296, 0.00029582655, -0.00016521634, 0.00072282147, 0.0018380317, 0.00036485274, 0.00022773062, -0.00099632148, -0.0025335032, -0.00050290513, -0.00077428412, 0.003387493, 0.0086139109, 0.0017098774, 0.00045546125, -0.001992643, -0.0050670064, -0.0010058103, 0.00056173554, -0.002457593, -0.0062493079, -0.0012404993, -0.00013395919, 0.00058607146, 0.001490296, 0.00029582655, 0.00045546125, -0.001992643, -0.0050670064, -0.0010058103, -0.00026791838, 0.0011721429, 0.002980592, 0.00059165309, -0.00033043267, 0.0014456429, 0.0036760635, 0.00072970548, -0.00016521634, 0.00072282147, 0.0018380317, 0.00036485274, 0.00056173554, -0.002457593, -0.0062493079, -0.0012404993, -0.00033043267, 0.0014456429, 0.0036760635, 0.00072970548, -0.00040753363, 0.0017829596, 0.0045338116, 0.00089997009, + 4.1862247e-05, -0.00014233164, 8.3724494e-05, 0.00010326021, -0.00014233164, 0.00048392758, -0.00028466328, -0.00035108471, 8.3724494e-05, -0.00028466328, 0.00016744899, 0.00020652042, 0.00010326021, -0.00035108471, 0.00020652042, 0.00025470852, -0.00014233164, 0.00048392758, -0.00028466328, -0.00035108471, 0.00048392758, -0.0016453538, 0.00096785515, 0.001193688, -0.00028466328, 0.00096785515, -0.00056932656, -0.00070216942, -0.00035108471, 0.001193688, -0.00070216942, -0.00086600896, 8.3724494e-05, -0.00028466328, 0.00016744899, 0.00020652042, -0.00028466328, 0.00096785515, -0.00056932656, -0.00070216942, 0.00016744899, -0.00056932656, 0.00033489798, 0.00041304084, 0.00020652042, -0.00070216942, 0.00041304084, 0.00050941703, 0.00010326021, -0.00035108471, 0.00020652042, 0.00025470852, -0.00035108471, 0.001193688, -0.00070216942, -0.00086600896, 0.00020652042, -0.00070216942, 0.00041304084, 0.00050941703, 0.00025470852, -0.00086600896, 0.00050941703, 0.00062828101, + -0.00015070409, 0.00022605613, 0.00022605613, -7.5352045e-05, 0.0005123939, -0.00076859086, -0.00076859086, 0.00025619695, -0.00030140818, 0.00045211227, 0.00045211227, -0.00015070409, -0.00037173675, 0.00055760513, 0.00055760513, -0.00018586838, 0.0005123939, -0.00076859086, -0.00076859086, 0.00025619695, -0.0017421393, 0.0026132089, 0.0026132089, -0.00087106964, 0.0010247878, -0.0015371817, -0.0015371817, 0.0005123939, 0.001263905, -0.0018958574, -0.0018958574, 0.00063195248, -0.00030140818, 0.00045211227, 0.00045211227, -0.00015070409, 0.0010247878, -0.0015371817, -0.0015371817, 0.0005123939, -0.00060281636, 0.00090422454, 0.00090422454, -0.00030140818, -0.00074347351, 0.0011152103, 0.0011152103, -0.00037173675, -0.00037173675, 0.00055760513, 0.00055760513, -0.00018586838, 0.001263905, -0.0018958574, -0.0018958574, 0.00063195248, -0.00074347351, 0.0011152103, 0.0011152103, -0.00037173675, -0.00091695066, 0.001375426, 0.001375426, -0.00045847533, + -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, 0.0044759115, 0.0061035156, -0.0048828125, -0.00040690104, 0.0044759115, 0.0061035156, -0.0048828125, -0.00040690104, -0.0014919705, -0.0020345052, 0.0016276042, 0.00013563368, 0.010145399, 0.013834635, -0.011067708, -0.00092230903, -0.015218099, -0.020751953, 0.016601563, 0.0013834635, -0.015218099, -0.020751953, 0.016601563, 0.0013834635, 0.0050726997, 0.0069173177, -0.0055338542, -0.00046115451, -0.0059678819, -0.0081380208, 0.0065104167, 0.00054253472, 0.0089518229, 0.012207031, -0.009765625, -0.00081380208, 0.0089518229, 0.012207031, -0.009765625, -0.00081380208, -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, -0.0073603877, -0.010036892, 0.0080295139, 0.00066912616, 0.011040582, 0.015055339, -0.012044271, -0.0010036892, 0.011040582, 0.015055339, -0.012044271, -0.0010036892, -0.0036801939, -0.0050184462, 0.0040147569, 0.00033456308, + 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, -0.00036168981, 0.0015823929, 0.0040237992, 0.00079873167, -0.00036168981, 0.0015823929, 0.0040237992, 0.00079873167, 0.00012056327, -0.00052746431, -0.0013412664, -0.00026624389, -0.00081983025, 0.0035867573, 0.0091206115, 0.0018104585, 0.0012297454, -0.005380136, -0.013680917, -0.0027156877, 0.0012297454, -0.005380136, -0.013680917, -0.0027156877, -0.00040991512, 0.0017933787, 0.0045603057, 0.00090522923, 0.00048225309, -0.0021098573, -0.0053650656, -0.0010649756, -0.00072337963, 0.0031647859, 0.0080475984, 0.0015974633, -0.00072337963, 0.0031647859, 0.0080475984, 0.0015974633, 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, 0.00059477881, -0.0026021573, -0.0066169142, -0.0013134699, -0.00089216821, 0.0039032359, 0.0099253713, 0.0019702048, -0.00089216821, 0.0039032359, 0.0099253713, 0.0019702048, 0.0002973894, -0.0013010786, -0.0033084571, -0.00065673493, + -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, 0.00022605613, -0.00076859086, 0.00045211227, 0.00055760513, 0.00022605613, -0.00076859086, 0.00045211227, 0.00055760513, -7.5352045e-05, 0.00025619695, -0.00015070409, -0.00018586838, 0.0005123939, -0.0017421393, 0.0010247878, 0.001263905, -0.00076859086, 0.0026132089, -0.0015371817, -0.0018958574, -0.00076859086, 0.0026132089, -0.0015371817, -0.0018958574, 0.00025619695, -0.00087106964, 0.0005123939, 0.00063195248, -0.00030140818, 0.0010247878, -0.00060281636, -0.00074347351, 0.00045211227, -0.0015371817, 0.00090422454, 0.0011152103, 0.00045211227, -0.0015371817, 0.00090422454, 0.0011152103, -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, -0.00037173675, 0.001263905, -0.00074347351, -0.00091695066, 0.00055760513, -0.0018958574, 0.0011152103, 0.001375426, 0.00055760513, -0.0018958574, 0.0011152103, 0.001375426, -0.00018586838, 0.00063195248, -0.00037173675, -0.00045847533, + 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, -0.00081380208, 0.0012207031, 0.0012207031, -0.00040690104, -0.00081380208, 0.0012207031, 0.0012207031, -0.00040690104, 0.00027126736, -0.00040690104, -0.00040690104, 0.00013563368, -0.0018446181, 0.0027669271, 0.0027669271, -0.00092230903, 0.0027669271, -0.0041503906, -0.0041503906, 0.0013834635, 0.0027669271, -0.0041503906, -0.0041503906, 0.0013834635, -0.00092230903, 0.0013834635, 0.0013834635, -0.00046115451, 0.0010850694, -0.0016276042, -0.0016276042, 0.00054253472, -0.0016276042, 0.0024414062, 0.0024414063, -0.00081380208, -0.0016276042, 0.0024414063, 0.0024414063, -0.00081380208, 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, 0.0013382523, -0.0020073785, -0.0020073785, 0.00066912616, -0.0020073785, 0.0030110677, 0.0030110677, -0.0010036892, -0.0020073785, 0.0030110677, 0.0030110677, -0.0010036892, 0.00066912616, -0.0010036892, -0.0010036892, 0.00033456308, + -0.059082031, -0.080566406, 0.064453125, 0.0053710938, -0.080566406, -0.10986328, 0.087890625, 0.0073242188, 0.064453125, 0.087890625, -0.0703125, -0.005859375, 0.0053710938, 0.0073242187, -0.005859375, -0.00048828125, 0.088623047, 0.12084961, -0.096679687, -0.0080566406, 0.12084961, 0.16479492, -0.13183594, -0.010986328, -0.096679688, -0.13183594, 0.10546875, 0.0087890625, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, 0.088623047, 0.12084961, -0.096679688, -0.0080566406, 0.12084961, 0.16479492, -0.13183594, -0.010986328, -0.096679688, -0.13183594, 0.10546875, 0.0087890625, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, -0.029541016, -0.040283203, 0.032226563, 0.0026855469, -0.040283203, -0.054931641, 0.043945312, 0.0036621094, 0.032226563, 0.043945312, -0.03515625, -0.0029296875, 0.0026855469, 0.0036621094, -0.0029296875, -0.00024414063, + 0.0047743056, -0.020887587, -0.053114149, -0.010543258, 0.0065104167, -0.028483073, -0.072428385, -0.01437717, -0.0052083333, 0.022786458, 0.057942708, 0.011501736, -0.00043402778, 0.0018988715, 0.004828559, 0.00095847801, -0.0071614583, 0.03133138, 0.079671224, 0.015814887, -0.009765625, 0.042724609, 0.10864258, 0.021565755, 0.0078125, -0.034179688, -0.086914063, -0.017252604, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, -0.0071614583, 0.03133138, 0.079671224, 0.015814887, -0.009765625, 0.042724609, 0.10864258, 0.021565755, 0.0078125, -0.034179688, -0.086914063, -0.017252604, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, 0.0023871528, -0.010443793, -0.026557075, -0.0052716291, 0.0032552083, -0.014241536, -0.036214193, -0.0071885851, -0.0026041667, 0.011393229, 0.028971354, 0.0057508681, -0.00021701389, 0.00094943576, 0.0024142795, 0.000479239, + -0.002983941, 0.010145399, -0.0059678819, -0.0073603877, -0.0040690104, 0.013834635, -0.0081380208, -0.010036892, 0.0032552083, -0.011067708, 0.0065104167, 0.0080295139, 0.00027126736, -0.00092230903, 0.00054253472, 0.00066912616, 0.0044759115, -0.015218099, 0.0089518229, 0.011040582, 0.0061035156, -0.020751953, 0.012207031, 0.015055339, -0.0048828125, 0.016601563, -0.009765625, -0.012044271, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, 0.0044759115, -0.015218099, 0.0089518229, 0.011040582, 0.0061035156, -0.020751953, 0.012207031, 0.015055339, -0.0048828125, 0.016601562, -0.009765625, -0.012044271, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, -0.0014919705, 0.0050726997, -0.002983941, -0.0036801939, -0.0020345052, 0.0069173177, -0.0040690104, -0.0050184462, 0.0016276042, -0.0055338542, 0.0032552083, 0.0040147569, 0.00013563368, -0.00046115451, 0.00027126736, 0.00033456308, + 0.010742188, -0.016113281, -0.016113281, 0.0053710937, 0.014648438, -0.021972656, -0.021972656, 0.0073242187, -0.01171875, 0.017578125, 0.017578125, -0.005859375, -0.0009765625, 0.0014648437, 0.0014648438, -0.00048828125, -0.016113281, 0.024169922, 0.024169922, -0.0080566406, -0.021972656, 0.032958984, 0.032958984, -0.010986328, 0.017578125, -0.026367188, -0.026367188, 0.0087890625, 0.0014648437, -0.0021972656, -0.0021972656, 0.00073242188, -0.016113281, 0.024169922, 0.024169922, -0.0080566406, -0.021972656, 0.032958984, 0.032958984, -0.010986328, 0.017578125, -0.026367187, -0.026367188, 0.0087890625, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242187, 0.0053710937, -0.0080566406, -0.0080566406, 0.0026855469, 0.0073242187, -0.010986328, -0.010986328, 0.0036621094, -0.005859375, 0.0087890625, 0.0087890625, -0.0029296875, -0.00048828125, 0.00073242188, 0.00073242188, -0.00024414062, + 0.0047743056, 0.0065104167, -0.0052083333, -0.00043402778, -0.020887587, -0.028483073, 0.022786458, 0.0018988715, -0.053114149, -0.072428385, 0.057942708, 0.004828559, -0.010543258, -0.01437717, 0.011501736, 0.00095847801, -0.0071614583, -0.009765625, 0.0078125, 0.00065104167, 0.03133138, 0.042724609, -0.034179688, -0.0028483073, 0.079671224, 0.10864258, -0.086914063, -0.0072428385, 0.015814887, 0.021565755, -0.017252604, -0.001437717, -0.0071614583, -0.009765625, 0.0078125, 0.00065104167, 0.03133138, 0.042724609, -0.034179688, -0.0028483073, 0.079671224, 0.10864258, -0.086914063, -0.0072428385, 0.015814887, 0.021565755, -0.017252604, -0.001437717, 0.0023871528, 0.0032552083, -0.0026041667, -0.00021701389, -0.010443793, -0.014241536, 0.011393229, 0.00094943576, -0.026557075, -0.036214193, 0.028971354, 0.0024142795, -0.0052716291, -0.0071885851, 0.0057508681, 0.000479239, + -0.00038580247, 0.0016878858, 0.0042920525, 0.00085198045, 0.0016878858, -0.0073845004, -0.01877773, -0.0037274145, 0.0042920525, -0.01877773, -0.047749084, -0.0094782825, 0.00085198045, -0.0037274145, -0.0094782825, -0.0018814568, 0.0005787037, -0.0025318287, -0.0064380787, -0.0012779707, -0.0025318287, 0.011076751, 0.028166594, 0.0055911217, -0.0064380787, 0.028166594, 0.071623626, 0.014217424, -0.0012779707, 0.0055911217, 0.014217424, 0.0028221852, 0.0005787037, -0.0025318287, -0.0064380787, -0.0012779707, -0.0025318287, 0.011076751, 0.028166594, 0.0055911217, -0.0064380787, 0.028166594, 0.071623626, 0.014217424, -0.0012779707, 0.0055911217, 0.014217424, 0.0028221852, -0.00019290123, 0.0008439429, 0.0021460262, 0.00042599023, 0.0008439429, -0.0036922502, -0.0093888648, -0.0018637072, 0.0021460262, -0.0093888648, -0.023874542, -0.0047391413, 0.00042599023, -0.0018637072, -0.0047391413, -0.00094072842, + 0.00024112654, -0.00081983025, 0.00048225309, 0.00059477881, -0.0010549286, 0.0035867573, -0.0021098573, -0.0026021573, -0.0026825328, 0.0091206115, -0.0053650656, -0.0066169142, -0.00053248778, 0.0018104585, -0.0010649756, -0.0013134699, -0.00036168981, 0.0012297454, -0.00072337963, -0.00089216821, 0.0015823929, -0.005380136, 0.0031647859, 0.0039032359, 0.0040237992, -0.013680917, 0.0080475984, 0.0099253713, 0.00079873167, -0.0027156877, 0.0015974633, 0.0019702048, -0.00036168981, 0.0012297454, -0.00072337963, -0.00089216821, 0.0015823929, -0.005380136, 0.0031647859, 0.0039032359, 0.0040237992, -0.013680917, 0.0080475984, 0.0099253713, 0.00079873167, -0.0027156877, 0.0015974633, 0.0019702048, 0.00012056327, -0.00040991512, 0.00024112654, 0.0002973894, -0.00052746431, 0.0017933787, -0.0010549286, -0.0013010786, -0.0013412664, 0.0045603057, -0.0026825328, -0.0033084571, -0.00026624389, 0.00090522923, -0.00053248778, -0.00065673493, + -0.00086805556, 0.0013020833, 0.0013020833, -0.00043402778, 0.0037977431, -0.0056966146, -0.0056966146, 0.0018988715, 0.0096571181, -0.014485677, -0.014485677, 0.004828559, 0.001916956, -0.002875434, -0.002875434, 0.00095847801, 0.0013020833, -0.001953125, -0.001953125, 0.00065104167, -0.0056966146, 0.0085449219, 0.0085449219, -0.0028483073, -0.014485677, 0.021728516, 0.021728516, -0.0072428385, -0.002875434, 0.004313151, 0.004313151, -0.001437717, 0.0013020833, -0.001953125, -0.001953125, 0.00065104167, -0.0056966146, 0.0085449219, 0.0085449219, -0.0028483073, -0.014485677, 0.021728516, 0.021728516, -0.0072428385, -0.002875434, 0.004313151, 0.004313151, -0.001437717, -0.00043402778, 0.00065104167, 0.00065104167, -0.00021701389, 0.0018988715, -0.0028483073, -0.0028483073, 0.00094943576, 0.004828559, -0.0072428385, -0.0072428385, 0.0024142795, 0.00095847801, -0.001437717, -0.001437717, 0.000479239, + -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, 0.010145399, 0.013834635, -0.011067708, -0.00092230903, -0.0059678819, -0.0081380208, 0.0065104167, 0.00054253472, -0.0073603877, -0.010036892, 0.0080295139, 0.00066912616, 0.0044759115, 0.0061035156, -0.0048828125, -0.00040690104, -0.015218099, -0.020751953, 0.016601563, 0.0013834635, 0.0089518229, 0.012207031, -0.009765625, -0.00081380208, 0.011040582, 0.015055339, -0.012044271, -0.0010036892, 0.0044759115, 0.0061035156, -0.0048828125, -0.00040690104, -0.015218099, -0.020751953, 0.016601563, 0.0013834635, 0.0089518229, 0.012207031, -0.009765625, -0.00081380208, 0.011040582, 0.015055339, -0.012044271, -0.0010036892, -0.0014919705, -0.0020345052, 0.0016276042, 0.00013563368, 0.0050726997, 0.0069173177, -0.0055338542, -0.00046115451, -0.002983941, -0.0040690104, 0.0032552083, 0.00027126736, -0.0036801939, -0.0050184462, 0.0040147569, 0.00033456308, + 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, -0.00081983025, 0.0035867573, 0.0091206115, 0.0018104585, 0.00048225309, -0.0021098573, -0.0053650656, -0.0010649756, 0.00059477881, -0.0026021573, -0.0066169142, -0.0013134699, -0.00036168981, 0.0015823929, 0.0040237992, 0.00079873167, 0.0012297454, -0.005380136, -0.013680917, -0.0027156877, -0.00072337963, 0.0031647859, 0.0080475984, 0.0015974633, -0.00089216821, 0.0039032359, 0.0099253713, 0.0019702048, -0.00036168981, 0.0015823929, 0.0040237992, 0.00079873167, 0.0012297454, -0.005380136, -0.013680917, -0.0027156877, -0.00072337963, 0.0031647859, 0.0080475984, 0.0015974633, -0.00089216821, 0.0039032359, 0.0099253713, 0.0019702048, 0.00012056327, -0.00052746431, -0.0013412664, -0.00026624389, -0.00040991512, 0.0017933787, 0.0045603057, 0.00090522923, 0.00024112654, -0.0010549286, -0.0026825328, -0.00053248778, 0.0002973894, -0.0013010786, -0.0033084571, -0.00065673493, + -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, 0.0005123939, -0.0017421393, 0.0010247878, 0.001263905, -0.00030140818, 0.0010247878, -0.00060281636, -0.00074347351, -0.00037173675, 0.001263905, -0.00074347351, -0.00091695066, 0.00022605613, -0.00076859086, 0.00045211227, 0.00055760513, -0.00076859086, 0.0026132089, -0.0015371817, -0.0018958574, 0.00045211227, -0.0015371817, 0.00090422454, 0.0011152103, 0.00055760513, -0.0018958574, 0.0011152103, 0.001375426, 0.00022605613, -0.00076859086, 0.00045211227, 0.00055760513, -0.00076859086, 0.0026132089, -0.0015371817, -0.0018958574, 0.00045211227, -0.0015371817, 0.00090422454, 0.0011152103, 0.00055760513, -0.0018958574, 0.0011152103, 0.001375426, -7.5352045e-05, 0.00025619695, -0.00015070409, -0.00018586838, 0.00025619695, -0.00087106964, 0.0005123939, 0.00063195248, -0.00015070409, 0.0005123939, -0.00030140818, -0.00037173675, -0.00018586838, 0.00063195248, -0.00037173675, -0.00045847533, + 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, -0.0018446181, 0.0027669271, 0.0027669271, -0.00092230903, 0.0010850694, -0.0016276042, -0.0016276042, 0.00054253472, 0.0013382523, -0.0020073785, -0.0020073785, 0.00066912616, -0.00081380208, 0.0012207031, 0.0012207031, -0.00040690104, 0.0027669271, -0.0041503906, -0.0041503906, 0.0013834635, -0.0016276042, 0.0024414062, 0.0024414063, -0.00081380208, -0.0020073785, 0.0030110677, 0.0030110677, -0.0010036892, -0.00081380208, 0.0012207031, 0.0012207031, -0.00040690104, 0.0027669271, -0.0041503906, -0.0041503906, 0.0013834635, -0.0016276042, 0.0024414063, 0.0024414063, -0.00081380208, -0.0020073785, 0.0030110677, 0.0030110677, -0.0010036892, 0.00027126736, -0.00040690104, -0.00040690104, 0.00013563368, -0.00092230903, 0.0013834635, 0.0013834635, -0.00046115451, 0.00054253472, -0.00081380208, -0.00081380208, 0.00027126736, 0.00066912616, -0.0010036892, -0.0010036892, 0.00033456308, + 0.010742188, 0.014648438, -0.01171875, -0.0009765625, -0.016113281, -0.021972656, 0.017578125, 0.0014648437, -0.016113281, -0.021972656, 0.017578125, 0.0014648438, 0.0053710938, 0.0073242187, -0.005859375, -0.00048828125, -0.016113281, -0.021972656, 0.017578125, 0.0014648437, 0.024169922, 0.032958984, -0.026367188, -0.0021972656, 0.024169922, 0.032958984, -0.026367187, -0.0021972656, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, -0.016113281, -0.021972656, 0.017578125, 0.0014648438, 0.024169922, 0.032958984, -0.026367187, -0.0021972656, 0.024169922, 0.032958984, -0.026367188, -0.0021972656, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, 0.0053710938, 0.0073242187, -0.005859375, -0.00048828125, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, -0.0080566406, -0.010986328, 0.0087890625, 0.00073242188, 0.0026855469, 0.0036621094, -0.0029296875, -0.00024414063, + -0.00086805556, 0.0037977431, 0.0096571181, 0.001916956, 0.0013020833, -0.0056966146, -0.014485677, -0.002875434, 0.0013020833, -0.0056966146, -0.014485677, -0.002875434, -0.00043402778, 0.0018988715, 0.004828559, 0.00095847801, 0.0013020833, -0.0056966146, -0.014485677, -0.002875434, -0.001953125, 0.0085449219, 0.021728516, 0.004313151, -0.001953125, 0.0085449219, 0.021728516, 0.004313151, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, 0.0013020833, -0.0056966146, -0.014485677, -0.002875434, -0.001953125, 0.0085449219, 0.021728516, 0.004313151, -0.001953125, 0.0085449219, 0.021728516, 0.004313151, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, -0.00043402778, 0.0018988715, 0.004828559, 0.00095847801, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, 0.00065104167, -0.0028483073, -0.0072428385, -0.001437717, -0.00021701389, 0.00094943576, 0.0024142795, 0.000479239, + 0.00054253472, -0.0018446181, 0.0010850694, 0.0013382523, -0.00081380208, 0.0027669271, -0.0016276042, -0.0020073785, -0.00081380208, 0.0027669271, -0.0016276042, -0.0020073785, 0.00027126736, -0.00092230903, 0.00054253472, 0.00066912616, -0.00081380208, 0.0027669271, -0.0016276042, -0.0020073785, 0.0012207031, -0.0041503906, 0.0024414062, 0.0030110677, 0.0012207031, -0.0041503906, 0.0024414063, 0.0030110677, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, -0.00081380208, 0.0027669271, -0.0016276042, -0.0020073785, 0.0012207031, -0.0041503906, 0.0024414063, 0.0030110677, 0.0012207031, -0.0041503906, 0.0024414062, 0.0030110677, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, 0.00027126736, -0.00092230903, 0.00054253472, 0.00066912616, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, -0.00040690104, 0.0013834635, -0.00081380208, -0.0010036892, 0.00013563368, -0.00046115451, 0.00027126736, 0.00033456308, + -0.001953125, 0.0029296875, 0.0029296875, -0.0009765625, 0.0029296875, -0.0043945313, -0.0043945312, 0.0014648438, 0.0029296875, -0.0043945312, -0.0043945313, 0.0014648437, -0.0009765625, 0.0014648438, 0.0014648438, -0.00048828125, 0.0029296875, -0.0043945313, -0.0043945312, 0.0014648438, -0.0043945313, 0.0065917969, 0.0065917969, -0.0021972656, -0.0043945312, 0.0065917969, 0.0065917969, -0.0021972656, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242187, 0.0029296875, -0.0043945312, -0.0043945313, 0.0014648437, -0.0043945312, 0.0065917969, 0.0065917969, -0.0021972656, -0.0043945313, 0.0065917969, 0.0065917969, -0.0021972656, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242187, -0.0009765625, 0.0014648438, 0.0014648438, -0.00048828125, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242188, 0.0014648438, -0.0021972656, -0.0021972656, 0.00073242187, -0.00048828125, 0.00073242188, 0.00073242188, -0.00024414062, +}; + +static double dgq4_refined_onto_dgq4[] = +{ + 0.38217423, 0.51200375, -0.54857544, 0.073143393, 0.0091429241, 0.51200375, 0.68593804, -0.73493361, 0.097991148, 0.012248893, -0.54857544, -0.73493361, 0.78742887, -0.10499052, -0.013123814, 0.073143393, 0.097991148, -0.10499052, 0.013998735, 0.0017498419, 0.0091429241, 0.012248893, -0.013123814, 0.0017498419, 0.00021873024, 0.51200375, 0.68593804, -0.73493361, 0.097991148, 0.012248893, 0.68593804, 0.91896005, -0.98460005, 0.13128001, 0.016410001, -0.73493361, -0.98460005, 1.0549286, -0.14065715, -0.017582144, 0.097991148, 0.13128001, -0.14065715, 0.018754287, 0.0023442858, 0.012248893, 0.016410001, -0.017582144, 0.0023442858, 0.00029303573, -0.54857544, -0.73493361, 0.78742887, -0.10499052, -0.013123814, -0.73493361, -0.98460005, 1.0549286, -0.14065715, -0.017582144, 0.78742887, 1.0549286, -1.1302807, 0.15070409, 0.018838011, -0.10499052, -0.14065715, 0.15070409, -0.020093879, -0.0025117348, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.073143393, 0.097991148, -0.10499052, 0.013998735, 0.0017498419, 0.097991148, 0.13128001, -0.14065715, 0.018754287, 0.0023442858, -0.10499052, -0.14065715, 0.15070409, -0.020093879, -0.0025117348, 0.013998735, 0.018754287, -0.020093879, 0.0026791838, 0.00033489798, 0.0017498419, 0.0023442858, -0.0025117348, 0.00033489798, 4.1862247e-05, 0.0091429241, 0.012248893, -0.013123814, 0.0017498419, 0.00021873024, 0.012248893, 0.016410001, -0.017582144, 0.0023442858, 0.00029303573, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.0017498419, 0.0023442858, -0.0025117348, 0.00033489798, 4.1862247e-05, 0.00021873024, 0.00029303573, -0.00031396685, 4.1862247e-05, 5.2327809e-06, + -0.035928834, 0.15828687, 0.27445915, 0.14800108, 0.016785837, -0.048134324, 0.21205897, 0.36769647, 0.19827896, 0.022488203, 0.05157249, -0.22720604, -0.39396051, -0.21244175, -0.024094503, -0.006876332, 0.030294138, 0.052528067, 0.028325566, 0.0032126004, -0.00085954149, 0.0037867673, 0.0065660084, 0.0035406958, 0.00040157505, -0.048134324, 0.21205897, 0.36769647, 0.19827896, 0.022488203, -0.064486175, 0.28409814, 0.49260771, 0.26563689, 0.030127736, 0.069092331, -0.30439086, -0.52779398, -0.28461095, -0.032279717, -0.0092123107, 0.040585449, 0.07037253, 0.037948127, 0.0043039623, -0.0011515388, 0.0050731811, 0.0087965663, 0.0047435159, 0.00053799528, 0.05157249, -0.22720604, -0.39396051, -0.21244175, -0.024094503, 0.069092331, -0.30439086, -0.52779398, -0.28461095, -0.032279717, -0.074027497, 0.32613307, 0.56549355, 0.30494031, 0.034585411, 0.0098703329, -0.043484409, -0.07539914, -0.040658707, -0.0046113882, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.006876332, 0.030294138, 0.052528067, 0.028325566, 0.0032126004, -0.0092123107, 0.040585449, 0.07037253, 0.037948127, 0.0043039623, 0.0098703329, -0.043484409, -0.07539914, -0.040658707, -0.0046113882, -0.0013160444, 0.0057979212, 0.010053219, 0.005421161, 0.00061485175, -0.00016450555, 0.00072474015, 0.0012566523, 0.00067764512, 7.6856469e-05, -0.00085954149, 0.0037867673, 0.0065660084, 0.0035406958, 0.00040157505, -0.0011515388, 0.0050731811, 0.0087965663, 0.0047435159, 0.00053799528, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.00016450555, 0.00072474015, 0.0012566523, 0.00067764512, 7.6856469e-05, -2.0563194e-05, 9.0592519e-05, 0.00015708154, 8.4705641e-05, 9.6070587e-06, + 0.01028579, -0.027428772, -0.041143158, 0.24685895, 0.074743404, 0.013780005, -0.03674668, -0.055120021, 0.33072012, 0.1001347, -0.014764291, 0.039371443, 0.059057165, -0.35434299, -0.10728718, 0.0019685722, -0.0052495258, -0.0078742887, 0.047245732, 0.014304958, 0.00024607152, -0.00065619072, -0.00098428608, 0.0059057165, 0.0017881197, 0.013780005, -0.03674668, -0.055120021, 0.33072012, 0.1001347, 0.018461251, -0.049230003, -0.073845004, 0.44307002, 0.13415176, -0.019779912, 0.052746431, 0.079119647, -0.47471788, -0.14373403, 0.0026373216, -0.0070328575, -0.010549286, 0.063295718, 0.019164537, 0.0003296652, -0.00087910719, -0.0013186608, 0.0079119647, 0.0023955671, -0.014764291, 0.039371443, 0.059057165, -0.35434299, -0.10728718, -0.019779912, 0.052746431, 0.079119647, -0.47471788, -0.14373403, 0.021192763, -0.056514034, -0.08477105, 0.5086263, 0.15400074, -0.0028257017, 0.0075352045, 0.011302807, -0.06781684, -0.020533432, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 0.0019685722, -0.0052495258, -0.0078742887, 0.047245732, 0.014304958, 0.0026373216, -0.0070328575, -0.010549286, 0.063295718, 0.019164537, -0.0028257017, 0.0075352045, 0.011302807, -0.06781684, -0.020533432, 0.00037676022, -0.0010046939, -0.0015070409, 0.0090422454, 0.002737791, 4.7095028e-05, -0.00012558674, -0.00018838011, 0.0011302807, 0.00034222387, 0.00024607152, -0.00065619072, -0.00098428608, 0.0059057165, 0.0017881197, 0.0003296652, -0.00087910719, -0.0013186608, 0.0079119647, 0.0023955671, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 4.7095028e-05, -0.00012558674, -0.00018838011, 0.0011302807, 0.00034222387, 5.8868785e-06, -1.5698343e-05, -2.3547514e-05, 0.00014128508, 4.2777984e-05, + -0.0039286002, 0.019314427, -0.016285834, -0.034857398, 0.00078572004, -0.0052631964, 0.025875788, -0.021818342, -0.046698906, 0.0010526393, 0.005639139, -0.027724058, 0.023376795, 0.050034543, -0.0011278278, -0.0007518852, 0.0036965411, -0.0031169059, -0.0066712724, 0.00015037704, -9.398565e-05, 0.00046206763, -0.00038961324, -0.00083390904, 1.879713e-05, -0.0052631964, 0.025875788, -0.021818342, -0.046698906, 0.0010526393, -0.0070511722, 0.034666127, -0.029230314, -0.062563128, 0.0014102344, 0.0075548274, -0.037142279, 0.031318194, 0.067031923, -0.0015109655, -0.0010073103, 0.0049523038, -0.0041757591, -0.0089375898, 0.00020146206, -0.00012591379, 0.00061903798, -0.00052196989, -0.0011171987, 2.5182758e-05, 0.005639139, -0.027724058, 0.023376795, 0.050034543, -0.0011278278, 0.0075548274, -0.037142279, 0.031318194, 0.067031923, -0.0015109655, -0.0080944579, 0.039795299, -0.033555207, -0.071819918, 0.0016188916, 0.0010792611, -0.0053060398, 0.0044740277, 0.009575989, -0.00021585221, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -0.0007518852, 0.0036965411, -0.0031169059, -0.0066712724, 0.00015037704, -0.0010073103, 0.0049523038, -0.0041757591, -0.0089375898, 0.00020146206, 0.0010792611, -0.0053060398, 0.0044740277, 0.009575989, -0.00021585221, -0.00014390147, 0.00070747198, -0.00059653702, -0.0012767985, 2.8780295e-05, -1.7987684e-05, 8.8433997e-05, -7.4567128e-05, -0.00015959982, 3.5975369e-06, -9.398565e-05, 0.00046206763, -0.00038961324, -0.00083390904, 1.879713e-05, -0.00012591379, 0.00061903798, -0.00052196989, -0.0011171987, 2.5182758e-05, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -1.7987684e-05, 8.8433997e-05, -7.4567128e-05, -0.00015959982, 3.5975369e-06, -2.2484605e-06, 1.105425e-05, -9.320891e-06, -1.9949977e-05, 4.4969211e-07, + 0.04571462, -0.073143393, -0.10971509, 0.19017282, 0.04571462, 0.061244467, -0.097991148, -0.14698672, 0.25477698, 0.061244467, -0.065619072, 0.10499052, 0.15748577, -0.27297534, -0.065619072, 0.0087492096, -0.013998735, -0.020998103, 0.036396712, 0.0087492096, 0.0010936512, -0.0017498419, -0.0026247629, 0.004549589, 0.0010936512, 0.061244467, -0.097991148, -0.14698672, 0.25477698, 0.061244467, 0.082050004, -0.13128001, -0.19692001, 0.34132802, 0.082050004, -0.087910719, 0.14065715, 0.21098573, -0.36570859, -0.087910719, 0.011721429, -0.018754287, -0.02813143, 0.048761145, 0.011721429, 0.0014651786, -0.0023442858, -0.0035164288, 0.0060951432, 0.0014651786, -0.065619072, 0.10499052, 0.15748577, -0.27297534, -0.065619072, -0.087910719, 0.14065715, 0.21098573, -0.36570859, -0.087910719, 0.094190056, -0.15070409, -0.22605613, 0.39183063, 0.094190056, -0.012558674, 0.020093879, 0.030140818, -0.052244084, -0.012558674, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.0087492096, -0.013998735, -0.020998103, 0.036396712, 0.0087492096, 0.011721429, -0.018754287, -0.02813143, 0.048761145, 0.011721429, -0.012558674, 0.020093879, 0.030140818, -0.052244084, -0.012558674, 0.0016744899, -0.0026791838, -0.0040187757, 0.0069658779, 0.0016744899, 0.00020931124, -0.00033489798, -0.00050234697, 0.00087073474, 0.00020931124, 0.0010936512, -0.0017498419, -0.0026247629, 0.004549589, 0.0010936512, 0.0014651786, -0.0023442858, -0.0035164288, 0.0060951432, 0.0014651786, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.00020931124, -0.00033489798, -0.00050234697, 0.00087073474, 0.00020931124, 2.6163904e-05, -4.1862247e-05, -6.2793371e-05, 0.00010884184, 2.6163904e-05, + -0.035928834, -0.048134324, 0.05157249, -0.006876332, -0.00085954149, 0.15828687, 0.21205897, -0.22720604, 0.030294138, 0.0037867673, 0.27445915, 0.36769647, -0.39396051, 0.052528067, 0.0065660084, 0.14800108, 0.19827896, -0.21244175, 0.028325566, 0.0035406958, 0.016785837, 0.022488203, -0.024094503, 0.0032126004, 0.00040157505, -0.048134324, -0.064486175, 0.069092331, -0.0092123107, -0.0011515388, 0.21205897, 0.28409814, -0.30439086, 0.040585449, 0.0050731811, 0.36769647, 0.49260771, -0.52779398, 0.07037253, 0.0087965663, 0.19827896, 0.26563689, -0.28461095, 0.037948127, 0.0047435159, 0.022488203, 0.030127736, -0.032279717, 0.0043039623, 0.00053799528, 0.05157249, 0.069092331, -0.074027497, 0.0098703329, 0.0012337916, -0.22720604, -0.30439086, 0.32613307, -0.043484409, -0.0054355511, -0.39396051, -0.52779398, 0.56549355, -0.07539914, -0.0094248925, -0.21244175, -0.28461095, 0.30494031, -0.040658707, -0.0050823384, -0.024094503, -0.032279717, 0.034585411, -0.0046113882, -0.00057642352, -0.006876332, -0.0092123107, 0.0098703329, -0.0013160444, -0.00016450555, 0.030294138, 0.040585449, -0.043484409, 0.0057979212, 0.00072474015, 0.052528067, 0.07037253, -0.07539914, 0.010053219, 0.0012566523, 0.028325566, 0.037948127, -0.040658707, 0.005421161, 0.00067764512, 0.0032126004, 0.0043039623, -0.0046113882, 0.00061485175, 7.6856469e-05, -0.00085954149, -0.0011515388, 0.0012337916, -0.00016450555, -2.0563194e-05, 0.0037867673, 0.0050731811, -0.0054355511, 0.00072474015, 9.0592519e-05, 0.0065660084, 0.0087965663, -0.0094248925, 0.0012566523, 0.00015708154, 0.0035406958, 0.0047435159, -0.0050823384, 0.00067764512, 8.4705641e-05, 0.00040157505, 0.00053799528, -0.00057642352, 7.6856469e-05, 9.6070587e-06, + 0.0033777295, -0.014880812, -0.025802361, -0.013913828, -0.0015780645, -0.014880812, 0.065558409, 0.11367402, 0.061298296, 0.0069522681, -0.025802361, 0.11367402, 0.19710337, 0.10628726, 0.012054781, -0.013913828, 0.061298296, 0.10628726, 0.057315013, 0.0065004962, -0.0015780645, 0.0069522681, 0.012054781, 0.0065004962, 0.0007372667, 0.0045251878, -0.019936016, -0.034567757, -0.018640535, -0.0021141533, -0.019936016, 0.087829447, 0.15229055, 0.082122119, 0.0093140434, -0.034567757, 0.15229055, 0.26406192, 0.14239442, 0.016149946, -0.018640535, 0.082122119, 0.14239442, 0.076785663, 0.0087087987, -0.0021141533, 0.0093140434, 0.016149946, 0.0087087987, 0.00098772572, -0.0048484155, 0.021360017, 0.037036882, 0.019972002, 0.0022651643, 0.021360017, -0.094102979, -0.16316845, -0.087987984, -0.0099793322, 0.037036882, -0.16316845, -0.28292349, -0.15256545, -0.017303514, 0.019972002, -0.087987984, -0.15256545, -0.082270353, -0.0093308557, 0.0022651643, -0.0099793322, -0.017303514, -0.0093308557, -0.0010582776, 0.0006464554, -0.0028480023, -0.004938251, -0.0026629336, -0.00030202191, -0.0028480023, 0.012547064, 0.021755793, 0.011731731, 0.0013305776, -0.004938251, 0.021755793, 0.037723132, 0.02034206, 0.0023071351, -0.0026629336, 0.011731731, 0.02034206, 0.01096938, 0.0012441141, -0.00030202191, 0.0013305776, 0.0023071351, 0.0012441141, 0.00014110367, 8.0806925e-05, -0.00035600029, -0.00061728137, -0.0003328667, -3.7752738e-05, -0.00035600029, 0.001568383, 0.0027194742, 0.0014664664, 0.0001663222, -0.00061728137, 0.0027194742, 0.0047153915, 0.0025427574, 0.00028839189, -0.0003328667, 0.0014664664, 0.0025427574, 0.0013711726, 0.00015551426, -3.7752738e-05, 0.0001663222, 0.00028839189, 0.00015551426, 1.7637959e-05, + -0.00096698418, 0.0025786245, 0.0038679367, -0.02320762, -0.0070267517, 0.0042601132, -0.011360302, -0.017040453, 0.10224272, 0.030956823, 0.0073867595, -0.019698025, -0.029547038, 0.17728223, 0.053677119, 0.0039832827, -0.010622087, -0.015933131, 0.095598786, 0.028945188, 0.00045177193, -0.0012047252, -0.0018070877, 0.010842526, 0.003282876, -0.0012954812, 0.0034546165, 0.0051819248, -0.031091549, -0.00941383, 0.0057073287, -0.015219543, -0.022829315, 0.13697589, 0.041473255, 0.0098961371, -0.026389699, -0.039584548, 0.23750729, 0.07191193, 0.0053364554, -0.014230548, -0.021345821, 0.12807493, 0.038778242, 0.0006052447, -0.0016139859, -0.0024209788, 0.014525873, 0.0043981115, 0.0013880156, -0.0037013749, -0.0055520623, 0.033312374, 0.010086246, -0.006114995, 0.016306653, 0.02445998, -0.14675988, -0.044435631, -0.010603004, 0.028274677, 0.042412016, -0.2544721, -0.077048496, -0.0057176307, 0.015247015, 0.022870523, -0.13722314, -0.041548117, -0.00064847646, 0.0017292706, 0.0025939058, -0.015563435, -0.0047122623, -0.00018506874, 0.00049351665, 0.00074027497, -0.0044416498, -0.0013448329, 0.00081533267, -0.0021742205, -0.0032613307, 0.019567984, 0.0059247507, 0.0014137339, -0.003769957, -0.0056549355, 0.033929613, 0.010273133, 0.00076235077, -0.0020329354, -0.0030494031, 0.018296418, 0.0055397489, 8.6463528e-05, -0.00023056941, -0.00034585411, 0.0020751247, 0.00062830164, -2.3133593e-05, 6.1689581e-05, 9.2534371e-05, -0.00055520623, -0.00016810411, 0.00010191658, -0.00027177756, -0.00040766634, 0.002445998, 0.00074059384, 0.00017671673, -0.00047124462, -0.00070686694, 0.0042412016, 0.0012841416, 9.5293846e-05, -0.00025411692, -0.00038117538, 0.0022870523, 0.00069246861, 1.0807941e-05, -2.8821176e-05, -4.3231764e-05, 0.00025939058, 7.8537705e-05, + 0.00036933424, -0.0018157814, 0.0015310583, 0.0032770019, -7.3866847e-05, -0.0016271266, 0.0079995459, -0.0067451792, -0.01443705, 0.00032542531, -0.0028213317, 0.013870693, -0.011695703, -0.025032907, 0.00056426635, -0.0015213927, 0.0074797198, -0.0063068644, -0.013498903, 0.00030427854, -0.00017255178, 0.0008483273, -0.00071530556, -0.0015310049, 3.4510356e-05, 0.00049480185, -0.0024326258, 0.0020511786, 0.0043902418, -9.8960369e-05, -0.0021798825, 0.010717095, -0.0090366038, -0.019341503, 0.0004359765, -0.0037797746, 0.018582746, -0.015668884, -0.033536909, 0.00075595492, -0.0020382295, 0.010020677, -0.0084493876, -0.018084654, 0.0004076459, -0.00023116985, 0.001136515, -0.0009583041, -0.002051107, 4.623397e-05, -0.00053014484, 0.0026063848, -0.0021976913, -0.0047038305, 0.00010602897, 0.0023355884, -0.011482602, 0.0096820755, 0.020723039, -0.00046711768, 0.0040497585, -0.019910085, 0.01678809, 0.035932403, -0.0008099517, 0.0021838173, -0.01073644, 0.0090529153, 0.019376415, -0.00043676346, 0.00024768198, -0.0012176947, 0.0010267544, 0.0021976147, -4.9536396e-05, 7.0685978e-05, -0.00034751797, 0.00029302551, 0.00062717741, -1.4137196e-05, -0.00031141178, 0.0015310136, -0.0012909434, -0.0027630718, 6.2282357e-05, -0.0005399678, 0.002654678, -0.002238412, -0.004790987, 0.00010799356, -0.00029117564, 0.0014315253, -0.0012070554, -0.002583522, 5.8235128e-05, -3.3024264e-05, 0.00016235929, -0.00013690059, -0.00029301529, 6.6048528e-06, 8.8357473e-06, -4.3439747e-05, 3.6628189e-05, 7.8397176e-05, -1.7671495e-06, -3.8926473e-05, 0.0001913767, -0.00016136792, -0.00034538398, 7.7852946e-06, -6.7495975e-05, 0.00033183476, -0.0002798015, -0.00059887338, 1.3499195e-05, -3.6396955e-05, 0.00017894067, -0.00015088192, -0.00032294025, 7.279391e-06, -4.128033e-06, 2.0294911e-05, -1.7112573e-05, -3.6626911e-05, 8.256066e-07, + -0.0042977075, 0.006876332, 0.010314498, -0.017878463, -0.0042977075, 0.018933836, -0.030294138, -0.045441208, 0.07876476, 0.018933836, 0.032830042, -0.052528067, -0.078792101, 0.13657298, 0.032830042, 0.017703479, -0.028325566, -0.042488349, 0.073646472, 0.017703479, 0.0020078753, -0.0032126004, -0.0048189006, 0.0083527611, 0.0020078753, -0.0057576942, 0.0092123107, 0.013818466, -0.023952008, -0.0057576942, 0.025365905, -0.040585449, -0.060878173, 0.10552217, 0.025365905, 0.043982832, -0.07037253, -0.1055588, 0.18296858, 0.043982832, 0.023717579, -0.037948127, -0.05692219, 0.09866513, 0.023717579, 0.0026899764, -0.0043039623, -0.0064559434, 0.011190302, 0.0026899764, 0.0061689581, -0.0098703329, -0.014805499, 0.025662866, 0.0061689581, -0.027177756, 0.043484409, 0.065226614, -0.11305946, -0.027177756, -0.047124462, 0.07539914, 0.11309871, -0.19603776, -0.047124462, -0.025411692, 0.040658707, 0.060988061, -0.10571264, -0.025411692, -0.0028821176, 0.0046113882, 0.0069170822, -0.011989609, -0.0028821176, -0.00082252775, 0.0013160444, 0.0019740666, -0.0034217154, -0.00082252775, 0.0036237008, -0.0057979212, -0.0086968818, 0.015074595, 0.0036237008, 0.0062832616, -0.010053219, -0.015079828, 0.026138368, 0.0062832616, 0.0033882256, -0.005421161, -0.0081317415, 0.014095019, 0.0033882256, 0.00038428235, -0.00061485175, -0.00092227763, 0.0015986146, 0.00038428235, -0.00010281597, 0.00016450555, 0.00024675832, -0.00042771443, -0.00010281597, 0.0004529626, -0.00072474015, -0.0010871102, 0.0018843244, 0.0004529626, 0.00078540771, -0.0012566523, -0.0018849785, 0.0032672961, 0.00078540771, 0.0004235282, -0.00067764512, -0.0010164677, 0.0017618773, 0.0004235282, 4.8035293e-05, -7.6856469e-05, -0.0001152847, 0.00019982682, 4.8035293e-05, + 0.01028579, 0.013780005, -0.014764291, 0.0019685722, 0.00024607152, -0.027428772, -0.03674668, 0.039371443, -0.0052495258, -0.00065619072, -0.041143158, -0.055120021, 0.059057165, -0.0078742887, -0.00098428608, 0.24685895, 0.33072012, -0.35434299, 0.047245732, 0.0059057165, 0.074743404, 0.1001347, -0.10728718, 0.014304958, 0.0017881197, 0.013780005, 0.018461251, -0.019779912, 0.0026373216, 0.0003296652, -0.03674668, -0.049230003, 0.052746431, -0.0070328575, -0.00087910719, -0.055120021, -0.073845004, 0.079119647, -0.010549286, -0.0013186608, 0.33072012, 0.44307002, -0.47471788, 0.063295718, 0.0079119647, 0.1001347, 0.13415176, -0.14373403, 0.019164537, 0.0023955671, -0.014764291, -0.019779912, 0.021192763, -0.0028257017, -0.00035321271, 0.039371443, 0.052746431, -0.056514034, 0.0075352045, 0.00094190056, 0.059057165, 0.079119647, -0.08477105, 0.011302807, 0.0014128508, -0.35434299, -0.47471788, 0.5086263, -0.06781684, -0.008477105, -0.10728718, -0.14373403, 0.15400074, -0.020533432, -0.002566679, 0.0019685722, 0.0026373216, -0.0028257017, 0.00037676022, 4.7095028e-05, -0.0052495258, -0.0070328575, 0.0075352045, -0.0010046939, -0.00012558674, -0.0078742887, -0.010549286, 0.011302807, -0.0015070409, -0.00018838011, 0.047245732, 0.063295718, -0.06781684, 0.0090422454, 0.0011302807, 0.014304958, 0.019164537, -0.020533432, 0.002737791, 0.00034222387, 0.00024607152, 0.0003296652, -0.00035321271, 4.7095028e-05, 5.8868785e-06, -0.00065619072, -0.00087910719, 0.00094190056, -0.00012558674, -1.5698343e-05, -0.00098428608, -0.0013186608, 0.0014128508, -0.00018838011, -2.3547514e-05, 0.0059057165, 0.0079119647, -0.008477105, 0.0011302807, 0.00014128508, 0.0017881197, 0.0023955671, -0.002566679, 0.00034222387, 4.2777984e-05, + -0.00096698418, 0.0042601132, 0.0073867595, 0.0039832827, 0.00045177193, 0.0025786245, -0.011360302, -0.019698025, -0.010622087, -0.0012047252, 0.0038679367, -0.017040453, -0.029547038, -0.015933131, -0.0018070877, -0.02320762, 0.10224272, 0.17728223, 0.095598786, 0.010842526, -0.0070267517, 0.030956823, 0.053677119, 0.028945188, 0.003282876, -0.0012954812, 0.0057073287, 0.0098961371, 0.0053364554, 0.0006052447, 0.0034546165, -0.015219543, -0.026389699, -0.014230548, -0.0016139859, 0.0051819248, -0.022829315, -0.039584548, -0.021345821, -0.0024209788, -0.031091549, 0.13697589, 0.23750729, 0.12807493, 0.014525873, -0.00941383, 0.041473255, 0.07191193, 0.038778242, 0.0043981115, 0.0013880156, -0.006114995, -0.010603004, -0.0057176307, -0.00064847646, -0.0037013749, 0.016306653, 0.028274677, 0.015247015, 0.0017292706, -0.0055520623, 0.02445998, 0.042412016, 0.022870523, 0.0025939058, 0.033312374, -0.14675988, -0.2544721, -0.13722314, -0.015563435, 0.010086246, -0.044435631, -0.077048496, -0.041548117, -0.0047122623, -0.00018506874, 0.00081533267, 0.0014137339, 0.00076235077, 8.6463528e-05, 0.00049351665, -0.0021742205, -0.003769957, -0.0020329354, -0.00023056941, 0.00074027497, -0.0032613307, -0.0056549355, -0.0030494031, -0.00034585411, -0.0044416498, 0.019567984, 0.033929613, 0.018296418, 0.0020751247, -0.0013448329, 0.0059247507, 0.010273133, 0.0055397489, 0.00062830164, -2.3133593e-05, 0.00010191658, 0.00017671673, 9.5293846e-05, 1.0807941e-05, 6.1689581e-05, -0.00027177756, -0.00047124462, -0.00025411692, -2.8821176e-05, 9.2534371e-05, -0.00040766634, -0.00070686694, -0.00038117538, -4.3231764e-05, -0.00055520623, 0.002445998, 0.0042412016, 0.0022870523, 0.00025939058, -0.00016810411, 0.00074059384, 0.0012841416, 0.00069246861, 7.8537705e-05, + 0.00027683046, -0.00073821456, -0.0011073218, 0.0066439311, 0.0020116347, -0.00073821456, 0.0019685722, 0.0029528583, -0.01771715, -0.0053643592, -0.0011073218, 0.0029528583, 0.0044292874, -0.026575724, -0.0080465387, 0.0066439311, -0.01771715, -0.026575724, 0.15945435, 0.048279232, 0.0020116347, -0.0053643592, -0.0080465387, 0.048279232, 0.014617879, 0.00037087335, -0.00098899559, -0.0014834934, 0.0089009603, 0.002695013, -0.00098899559, 0.0026373216, 0.0039559823, -0.023735894, -0.0071867013, -0.0014834934, 0.0039559823, 0.0059339735, -0.035603841, -0.010780052, 0.0089009603, -0.023735894, -0.035603841, 0.21362305, 0.064680311, 0.002695013, -0.0071867013, -0.010780052, 0.064680311, 0.019583761, -0.0003973643, 0.0010596381, 0.0015894572, -0.0095367432, -0.0028875139, 0.0010596381, -0.0028257017, -0.0042385525, 0.025431315, 0.0077000371, 0.0015894572, -0.0042385525, -0.0063578288, 0.038146973, 0.011550056, -0.0095367432, 0.025431315, 0.038146973, -0.22888184, -0.069300334, -0.0028875139, 0.0077000371, 0.011550056, -0.069300334, -0.020982601, 5.2981906e-05, -0.00014128508, -0.00021192763, 0.0012715658, 0.00038500185, -0.00014128508, 0.00037676022, 0.00056514034, -0.003390842, -0.0010266716, -0.00021192763, 0.00056514034, 0.0008477105, -0.005086263, -0.0015400074, 0.0012715658, -0.003390842, -0.005086263, 0.030517578, 0.0092400445, 0.00038500185, -0.0010266716, -0.0015400074, 0.0092400445, 0.0027976801, 6.6227383e-06, -1.7660635e-05, -2.6490953e-05, 0.00015894572, 4.8125232e-05, -1.7660635e-05, 4.7095028e-05, 7.0642542e-05, -0.00042385525, -0.00012833395, -2.6490953e-05, 7.0642542e-05, 0.00010596381, -0.00063578288, -0.00019250093, 0.00015894572, -0.00042385525, -0.00063578288, 0.0038146973, 0.0011550056, 4.8125232e-05, -0.00012833395, -0.00019250093, 0.0011550056, 0.00034971002, + -0.00010573386, 0.00051982609, -0.0004383149, -0.00093814767, 2.1146771e-05, 0.00028195695, -0.0013862029, 0.0011688397, 0.0025017271, -5.639139e-05, 0.00042293543, -0.0020793044, 0.0017532596, 0.0037525907, -8.4587085e-05, -0.0025376126, 0.012475826, -0.010519558, -0.022515544, 0.00050752251, -0.00076833269, 0.0037774029, -0.0031850883, -0.0068172064, 0.00015366654, -0.00014165301, 0.00069641773, -0.00058721613, -0.0012568486, 2.8330603e-05, 0.00037774137, -0.0018571139, 0.0015659097, 0.0033515962, -7.5548274e-05, 0.00056661206, -0.0027856709, 0.0023488645, 0.0050273942, -0.00011332241, -0.0033996723, 0.016714025, -0.014093187, -0.030164365, 0.00067993447, -0.0010293452, 0.0050606355, -0.0042671039, -0.0091330995, 0.00020586905, 0.00015177109, -0.00074616185, 0.00062916014, 0.0013466235, -3.0354217e-05, -0.0004047229, 0.0019897649, -0.0016777604, -0.0035909959, 8.0944579e-05, -0.00060708434, 0.0029846474, -0.0025166406, -0.0053864938, 0.00012141687, 0.0036425061, -0.017907884, 0.015099843, 0.032318963, -0.00072850121, 0.0011028699, -0.0054221094, 0.004571897, 0.0097854638, -0.00022057398, -2.0236145e-05, 9.9488247e-05, -8.3888019e-05, -0.00017954979, 4.047229e-06, 5.3963053e-05, -0.00026530199, 0.00022370138, 0.00047879945, -1.0792611e-05, 8.0944579e-05, -0.00039795299, 0.00033555207, 0.00071819918, -1.6188916e-05, -0.00048566748, 0.0023877179, -0.0020133124, -0.0043091951, 9.7133495e-05, -0.00014704932, 0.00072294793, -0.00060958627, -0.0013047285, 2.9409864e-05, -2.5295181e-06, 1.2436031e-05, -1.0486002e-05, -2.2443724e-05, 5.0590362e-07, 6.7453816e-06, -3.3162749e-05, 2.7962673e-05, 5.9849931e-05, -1.3490763e-06, 1.0118072e-05, -4.9744123e-05, 4.1944009e-05, 8.9774897e-05, -2.0236145e-06, -6.0708434e-05, 0.00029846474, -0.00025166406, -0.00053864938, 1.2141687e-05, -1.8381165e-05, 9.0368491e-05, -7.6198284e-05, -0.00016309106, 3.676233e-06, + 0.0012303576, -0.0019685722, -0.0029528583, 0.0051182876, 0.0012303576, -0.0032809536, 0.0052495258, 0.0078742887, -0.013648767, -0.0032809536, -0.0049214304, 0.0078742887, 0.011811433, -0.020473151, -0.0049214304, 0.029528583, -0.047245732, -0.070868598, 0.1228389, 0.029528583, 0.0089405986, -0.014304958, -0.021457437, 0.03719289, 0.0089405986, 0.001648326, -0.0026373216, -0.0039559823, 0.0068570361, 0.001648326, -0.0043955359, 0.0070328575, 0.010549286, -0.01828543, -0.0043955359, -0.0065933039, 0.010549286, 0.015823929, -0.027428144, -0.0065933039, 0.039559823, -0.063295718, -0.094943576, 0.16456887, 0.039559823, 0.011977835, -0.019164537, -0.028746805, 0.049827795, 0.011977835, -0.0017660635, 0.0028257017, 0.0042385525, -0.0073468244, -0.0017660635, 0.0047095028, -0.0075352045, -0.011302807, 0.019591532, 0.0047095028, 0.0070642542, -0.011302807, -0.01695421, 0.029387297, 0.0070642542, -0.042385525, 0.06781684, 0.10172526, -0.17632378, -0.042385525, -0.012833395, 0.020533432, 0.030800148, -0.053386924, -0.012833395, 0.00023547514, -0.00037676022, -0.00056514034, 0.00097957658, 0.00023547514, -0.00062793371, 0.0010046939, 0.0015070409, -0.0026122042, -0.00062793371, -0.00094190056, 0.0015070409, 0.0022605613, -0.0039183063, -0.00094190056, 0.0056514034, -0.0090422454, -0.013563368, 0.023509838, 0.0056514034, 0.0017111193, -0.002737791, -0.0041066864, 0.0071182565, 0.0017111193, 2.9434392e-05, -4.7095028e-05, -7.0642542e-05, 0.00012244707, 2.9434392e-05, -7.8491713e-05, 0.00012558674, 0.00018838011, -0.00032652553, -7.8491713e-05, -0.00011773757, 0.00018838011, 0.00028257017, -0.00048978829, -0.00011773757, 0.00070642542, -0.0011302807, -0.001695421, 0.0029387297, 0.00070642542, 0.00021388992, -0.00034222387, -0.0005133358, 0.00088978206, 0.00021388992, + -0.0039286002, -0.0052631964, 0.005639139, -0.0007518852, -9.398565e-05, 0.019314427, 0.025875788, -0.027724058, 0.0036965411, 0.00046206763, -0.016285834, -0.021818342, 0.023376795, -0.0031169059, -0.00038961324, -0.034857398, -0.046698906, 0.050034543, -0.0066712724, -0.00083390904, 0.00078572004, 0.0010526393, -0.0011278278, 0.00015037704, 1.879713e-05, -0.0052631964, -0.0070511722, 0.0075548274, -0.0010073103, -0.00012591379, 0.025875788, 0.034666127, -0.037142279, 0.0049523038, 0.00061903798, -0.021818342, -0.029230314, 0.031318194, -0.0041757591, -0.00052196989, -0.046698906, -0.062563128, 0.067031923, -0.0089375898, -0.0011171987, 0.0010526393, 0.0014102344, -0.0015109655, 0.00020146206, 2.5182758e-05, 0.005639139, 0.0075548274, -0.0080944579, 0.0010792611, 0.00013490763, -0.027724058, -0.037142279, 0.039795299, -0.0053060398, -0.00066325498, 0.023376795, 0.031318194, -0.033555207, 0.0044740277, 0.00055925346, 0.050034543, 0.067031923, -0.071819918, 0.009575989, 0.0011969986, -0.0011278278, -0.0015109655, 0.0016188916, -0.00021585221, -2.6981526e-05, -0.0007518852, -0.0010073103, 0.0010792611, -0.00014390147, -1.7987684e-05, 0.0036965411, 0.0049523038, -0.0053060398, 0.00070747198, 8.8433997e-05, -0.0031169059, -0.0041757591, 0.0044740277, -0.00059653702, -7.4567128e-05, -0.0066712724, -0.0089375898, 0.009575989, -0.0012767985, -0.00015959982, 0.00015037704, 0.00020146206, -0.00021585221, 2.8780295e-05, 3.5975369e-06, -9.398565e-05, -0.00012591379, 0.00013490763, -1.7987684e-05, -2.2484605e-06, 0.00046206763, 0.00061903798, -0.00066325498, 8.8433997e-05, 1.105425e-05, -0.00038961324, -0.00052196989, 0.00055925346, -7.4567128e-05, -9.320891e-06, -0.00083390904, -0.0011171987, 0.0011969986, -0.00015959982, -1.9949977e-05, 1.879713e-05, 2.5182758e-05, -2.6981526e-05, 3.5975369e-06, 4.4969211e-07, + 0.00036933424, -0.0016271266, -0.0028213317, -0.0015213927, -0.00017255178, -0.0018157814, 0.0079995459, 0.013870693, 0.0074797198, 0.0008483273, 0.0015310583, -0.0067451792, -0.011695703, -0.0063068644, -0.00071530556, 0.0032770019, -0.01443705, -0.025032907, -0.013498903, -0.0015310049, -7.3866847e-05, 0.00032542531, 0.00056426635, 0.00030427854, 3.4510356e-05, 0.00049480185, -0.0021798825, -0.0037797746, -0.0020382295, -0.00023116985, -0.0024326258, 0.010717095, 0.018582746, 0.010020677, 0.001136515, 0.0020511786, -0.0090366038, -0.015668884, -0.0084493876, -0.0009583041, 0.0043902418, -0.019341503, -0.033536909, -0.018084654, -0.002051107, -9.8960369e-05, 0.0004359765, 0.00075595492, 0.0004076459, 4.623397e-05, -0.00053014484, 0.0023355884, 0.0040497585, 0.0021838173, 0.00024768198, 0.0026063848, -0.011482602, -0.019910085, -0.01073644, -0.0012176947, -0.0021976913, 0.0096820755, 0.01678809, 0.0090529153, 0.0010267544, -0.0047038305, 0.020723039, 0.035932403, 0.019376415, 0.0021976147, 0.00010602897, -0.00046711768, -0.0008099517, -0.00043676346, -4.9536396e-05, 7.0685978e-05, -0.00031141178, -0.0005399678, -0.00029117564, -3.3024264e-05, -0.00034751797, 0.0015310136, 0.002654678, 0.0014315253, 0.00016235929, 0.00029302551, -0.0012909434, -0.002238412, -0.0012070554, -0.00013690059, 0.00062717741, -0.0027630718, -0.004790987, -0.002583522, -0.00029301529, -1.4137196e-05, 6.2282357e-05, 0.00010799356, 5.8235128e-05, 6.6048528e-06, 8.8357473e-06, -3.8926473e-05, -6.7495975e-05, -3.6396955e-05, -4.128033e-06, -4.3439747e-05, 0.0001913767, 0.00033183476, 0.00017894067, 2.0294911e-05, 3.6628189e-05, -0.00016136792, -0.0002798015, -0.00015088192, -1.7112573e-05, 7.8397176e-05, -0.00034538398, -0.00059887338, -0.00032294025, -3.6626911e-05, -1.7671495e-06, 7.7852946e-06, 1.3499195e-05, 7.279391e-06, 8.256066e-07, + -0.00010573386, 0.00028195695, 0.00042293543, -0.0025376126, -0.00076833269, 0.00051982609, -0.0013862029, -0.0020793044, 0.012475826, 0.0037774029, -0.0004383149, 0.0011688397, 0.0017532596, -0.010519558, -0.0031850883, -0.00093814767, 0.0025017271, 0.0037525907, -0.022515544, -0.0068172064, 2.1146771e-05, -5.639139e-05, -8.4587085e-05, 0.00050752251, 0.00015366654, -0.00014165301, 0.00037774137, 0.00056661206, -0.0033996723, -0.0010293452, 0.00069641773, -0.0018571139, -0.0027856709, 0.016714025, 0.0050606355, -0.00058721613, 0.0015659097, 0.0023488645, -0.014093187, -0.0042671039, -0.0012568486, 0.0033515962, 0.0050273942, -0.030164365, -0.0091330995, 2.8330603e-05, -7.5548274e-05, -0.00011332241, 0.00067993447, 0.00020586905, 0.00015177109, -0.0004047229, -0.00060708434, 0.0036425061, 0.0011028699, -0.00074616185, 0.0019897649, 0.0029846474, -0.017907884, -0.0054221094, 0.00062916014, -0.0016777604, -0.0025166406, 0.015099843, 0.004571897, 0.0013466235, -0.0035909959, -0.0053864938, 0.032318963, 0.0097854638, -3.0354217e-05, 8.0944579e-05, 0.00012141687, -0.00072850121, -0.00022057398, -2.0236145e-05, 5.3963053e-05, 8.0944579e-05, -0.00048566748, -0.00014704932, 9.9488247e-05, -0.00026530199, -0.00039795299, 0.0023877179, 0.00072294793, -8.3888019e-05, 0.00022370138, 0.00033555207, -0.0020133124, -0.00060958627, -0.00017954979, 0.00047879945, 0.00071819918, -0.0043091951, -0.0013047285, 4.047229e-06, -1.0792611e-05, -1.6188916e-05, 9.7133495e-05, 2.9409864e-05, -2.5295181e-06, 6.7453816e-06, 1.0118072e-05, -6.0708434e-05, -1.8381165e-05, 1.2436031e-05, -3.3162749e-05, -4.9744123e-05, 0.00029846474, 9.0368491e-05, -1.0486002e-05, 2.7962673e-05, 4.1944009e-05, -0.00025166406, -7.6198284e-05, -2.2443724e-05, 5.9849931e-05, 8.9774897e-05, -0.00053864938, -0.00016309106, 5.0590362e-07, -1.3490763e-06, -2.0236145e-06, 1.2141687e-05, 3.676233e-06, + 4.0384459e-05, -0.00019854469, 0.00016741194, 0.00035832029, -8.0768918e-06, -0.00019854469, 0.00097611788, -0.00082305797, -0.0017616329, 3.9708937e-05, 0.00016741194, -0.00082305797, 0.00069399859, 0.0014854005, -3.3482388e-05, 0.00035832029, -0.0017616329, 0.0014854005, 0.0031792782, -7.1664058e-05, -8.0768918e-06, 3.9708937e-05, -3.3482388e-05, -7.1664058e-05, 1.6153784e-06, 5.4103582e-05, -0.00026599288, 0.00022428394, 0.00048004632, -1.0820716e-05, -0.00026599288, 0.0013077177, -0.0011026614, -0.0023600823, 5.3198576e-05, 0.00022428394, -0.0011026614, 0.00092975887, 0.0019900102, -4.4856788e-05, 0.00048004632, -0.0023600823, 0.0019900102, 0.0042593201, -9.6009265e-05, -1.0820716e-05, 5.3198576e-05, -4.4856788e-05, -9.6009265e-05, 2.1641433e-06, -5.7968123e-05, 0.00028499237, -0.00024030422, -0.00051433535, 1.1593625e-05, 0.00028499237, -0.0014011261, 0.0011814229, 0.0025286596, -5.6998475e-05, -0.00024030422, 0.0011814229, -0.00099617022, -0.0021321538, 4.8060844e-05, -0.00051433535, 0.0025286596, -0.0021321538, -0.0045635573, 0.00010286707, 1.1593625e-05, -5.6998475e-05, 4.8060844e-05, 0.00010286707, -2.3187249e-06, 7.7290831e-06, -3.7998983e-05, 3.2040563e-05, 6.8578046e-05, -1.5458166e-06, -3.7998983e-05, 0.00018681682, -0.00015752306, -0.00033715461, 7.5997966e-06, 3.2040563e-05, -0.00015752306, 0.0001328227, 0.00028428717, -6.4081125e-06, 6.8578046e-05, -0.00033715461, 0.00028428717, 0.0006084743, -1.3715609e-05, -1.5458166e-06, 7.5997966e-06, -6.4081125e-06, -1.3715609e-05, 3.0916332e-07, 9.6613539e-07, -4.7498729e-06, 4.0050703e-06, 8.5722558e-06, -1.9322708e-07, -4.7498729e-06, 2.3352102e-05, -1.9690382e-05, -4.2144327e-05, 9.4997458e-07, 4.0050703e-06, -1.9690382e-05, 1.6602837e-05, 3.5535897e-05, -8.0101407e-07, 8.5722558e-06, -4.2144327e-05, 3.5535897e-05, 7.6059288e-05, -1.7144512e-06, -1.9322708e-07, 9.4997458e-07, -8.0101407e-07, -1.7144512e-06, 3.8645415e-08, + -0.00046992825, 0.0007518852, 0.0011278278, -0.0019549015, -0.00046992825, 0.0023103382, -0.0036965411, -0.0055448116, 0.0096110068, 0.0023103382, -0.0019480662, 0.0031169059, 0.0046753589, -0.0081039554, -0.0019480662, -0.0041695452, 0.0066712724, 0.010006909, -0.017345308, -0.0041695452, 9.398565e-05, -0.00015037704, -0.00022556556, 0.00039098031, 9.398565e-05, -0.00062956895, 0.0010073103, 0.0015109655, -0.0026190068, -0.00062956895, 0.0030951899, -0.0049523038, -0.0074284557, 0.01287599, 0.0030951899, -0.0026098495, 0.0041757591, 0.0062636387, -0.010856974, -0.0026098495, -0.0055859936, 0.0089375898, 0.013406385, -0.023237733, -0.0055859936, 0.00012591379, -0.00020146206, -0.0003021931, 0.00052380137, 0.00012591379, 0.00067453816, -0.0010792611, -0.0016188916, 0.0028060787, 0.00067453816, -0.0033162749, 0.0053060398, 0.0079590597, -0.013795704, -0.0033162749, 0.0027962673, -0.0044740277, -0.0067110415, 0.011632472, 0.0027962673, 0.0059849931, -0.009575989, -0.014363984, 0.024897571, 0.0059849931, -0.00013490763, 0.00021585221, 0.00032377832, -0.00056121575, -0.00013490763, -8.9938421e-05, 0.00014390147, 0.00021585221, -0.00037414383, -8.9938421e-05, 0.00044216998, -0.00070747198, -0.001061208, 0.0018394271, 0.00044216998, -0.00037283564, 0.00059653702, 0.00089480553, -0.0015509963, -0.00037283564, -0.00079799909, 0.0012767985, 0.0019151978, -0.0033196762, -0.00079799909, 1.7987684e-05, -2.8780295e-05, -4.3170442e-05, 7.4828767e-05, 1.7987684e-05, -1.1242303e-05, 1.7987684e-05, 2.6981526e-05, -4.6767979e-05, -1.1242303e-05, 5.5271248e-05, -8.8433997e-05, -0.000132651, 0.00022992839, 5.5271248e-05, -4.6604455e-05, 7.4567128e-05, 0.00011185069, -0.00019387453, -4.6604455e-05, -9.9749886e-05, 0.00015959982, 0.00023939973, -0.00041495952, -9.9749886e-05, 2.2484605e-06, -3.5975369e-06, -5.3963053e-06, 9.3535958e-06, 2.2484605e-06, + 0.04571462, 0.061244467, -0.065619072, 0.0087492096, 0.0010936512, -0.073143393, -0.097991148, 0.10499052, -0.013998735, -0.0017498419, -0.10971509, -0.14698672, 0.15748577, -0.020998103, -0.0026247629, 0.19017282, 0.25477698, -0.27297534, 0.036396712, 0.004549589, 0.04571462, 0.061244467, -0.065619072, 0.0087492096, 0.0010936512, 0.061244467, 0.082050004, -0.087910719, 0.011721429, 0.0014651786, -0.097991148, -0.13128001, 0.14065715, -0.018754287, -0.0023442858, -0.14698672, -0.19692001, 0.21098573, -0.02813143, -0.0035164288, 0.25477698, 0.34132802, -0.36570859, 0.048761145, 0.0060951432, 0.061244467, 0.082050004, -0.087910719, 0.011721429, 0.0014651786, -0.065619072, -0.087910719, 0.094190056, -0.012558674, -0.0015698343, 0.10499052, 0.14065715, -0.15070409, 0.020093879, 0.0025117348, 0.15748577, 0.21098573, -0.22605613, 0.030140818, 0.0037676022, -0.27297534, -0.36570859, 0.39183063, -0.052244084, -0.0065305105, -0.065619072, -0.087910719, 0.094190056, -0.012558674, -0.0015698343, 0.0087492096, 0.011721429, -0.012558674, 0.0016744899, 0.00020931124, -0.013998735, -0.018754287, 0.020093879, -0.0026791838, -0.00033489798, -0.020998103, -0.02813143, 0.030140818, -0.0040187757, -0.00050234697, 0.036396712, 0.048761145, -0.052244084, 0.0069658779, 0.00087073474, 0.0087492096, 0.011721429, -0.012558674, 0.0016744899, 0.00020931124, 0.0010936512, 0.0014651786, -0.0015698343, 0.00020931124, 2.6163904e-05, -0.0017498419, -0.0023442858, 0.0025117348, -0.00033489798, -4.1862247e-05, -0.0026247629, -0.0035164288, 0.0037676022, -0.00050234697, -6.2793371e-05, 0.004549589, 0.0060951432, -0.0065305105, 0.00087073474, 0.00010884184, 0.0010936512, 0.0014651786, -0.0015698343, 0.00020931124, 2.6163904e-05, + -0.0042977075, 0.018933836, 0.032830042, 0.017703479, 0.0020078753, 0.006876332, -0.030294138, -0.052528067, -0.028325566, -0.0032126004, 0.010314498, -0.045441208, -0.078792101, -0.042488349, -0.0048189006, -0.017878463, 0.07876476, 0.13657298, 0.073646472, 0.0083527611, -0.0042977075, 0.018933836, 0.032830042, 0.017703479, 0.0020078753, -0.0057576942, 0.025365905, 0.043982832, 0.023717579, 0.0026899764, 0.0092123107, -0.040585449, -0.07037253, -0.037948127, -0.0043039623, 0.013818466, -0.060878173, -0.1055588, -0.05692219, -0.0064559434, -0.023952008, 0.10552217, 0.18296858, 0.09866513, 0.011190302, -0.0057576942, 0.025365905, 0.043982832, 0.023717579, 0.0026899764, 0.0061689581, -0.027177756, -0.047124462, -0.025411692, -0.0028821176, -0.0098703329, 0.043484409, 0.07539914, 0.040658707, 0.0046113882, -0.014805499, 0.065226614, 0.11309871, 0.060988061, 0.0069170822, 0.025662866, -0.11305946, -0.19603776, -0.10571264, -0.011989609, 0.0061689581, -0.027177756, -0.047124462, -0.025411692, -0.0028821176, -0.00082252775, 0.0036237008, 0.0062832616, 0.0033882256, 0.00038428235, 0.0013160444, -0.0057979212, -0.010053219, -0.005421161, -0.00061485175, 0.0019740666, -0.0086968818, -0.015079828, -0.0081317415, -0.00092227763, -0.0034217154, 0.015074595, 0.026138368, 0.014095019, 0.0015986146, -0.00082252775, 0.0036237008, 0.0062832616, 0.0033882256, 0.00038428235, -0.00010281597, 0.0004529626, 0.00078540771, 0.0004235282, 4.8035293e-05, 0.00016450555, -0.00072474015, -0.0012566523, -0.00067764512, -7.6856469e-05, 0.00024675832, -0.0010871102, -0.0018849785, -0.0010164677, -0.0001152847, -0.00042771443, 0.0018843244, 0.0032672961, 0.0017618773, 0.00019982682, -0.00010281597, 0.0004529626, 0.00078540771, 0.0004235282, 4.8035293e-05, + 0.0012303576, -0.0032809536, -0.0049214304, 0.029528583, 0.0089405986, -0.0019685722, 0.0052495258, 0.0078742887, -0.047245732, -0.014304958, -0.0029528583, 0.0078742887, 0.011811433, -0.070868598, -0.021457437, 0.0051182876, -0.013648767, -0.020473151, 0.1228389, 0.03719289, 0.0012303576, -0.0032809536, -0.0049214304, 0.029528583, 0.0089405986, 0.001648326, -0.0043955359, -0.0065933039, 0.039559823, 0.011977835, -0.0026373216, 0.0070328575, 0.010549286, -0.063295718, -0.019164537, -0.0039559823, 0.010549286, 0.015823929, -0.094943576, -0.028746805, 0.0068570361, -0.01828543, -0.027428144, 0.16456887, 0.049827795, 0.001648326, -0.0043955359, -0.0065933039, 0.039559823, 0.011977835, -0.0017660635, 0.0047095028, 0.0070642542, -0.042385525, -0.012833395, 0.0028257017, -0.0075352045, -0.011302807, 0.06781684, 0.020533432, 0.0042385525, -0.011302807, -0.01695421, 0.10172526, 0.030800148, -0.0073468244, 0.019591532, 0.029387297, -0.17632378, -0.053386924, -0.0017660635, 0.0047095028, 0.0070642542, -0.042385525, -0.012833395, 0.00023547514, -0.00062793371, -0.00094190056, 0.0056514034, 0.0017111193, -0.00037676022, 0.0010046939, 0.0015070409, -0.0090422454, -0.002737791, -0.00056514034, 0.0015070409, 0.0022605613, -0.013563368, -0.0041066864, 0.00097957658, -0.0026122042, -0.0039183063, 0.023509838, 0.0071182565, 0.00023547514, -0.00062793371, -0.00094190056, 0.0056514034, 0.0017111193, 2.9434392e-05, -7.8491713e-05, -0.00011773757, 0.00070642542, 0.00021388992, -4.7095028e-05, 0.00012558674, 0.00018838011, -0.0011302807, -0.00034222387, -7.0642542e-05, 0.00018838011, 0.00028257017, -0.001695421, -0.0005133358, 0.00012244707, -0.00032652553, -0.00048978829, 0.0029387297, 0.00088978206, 2.9434392e-05, -7.8491713e-05, -0.00011773757, 0.00070642542, 0.00021388992, + -0.00046992825, 0.0023103382, -0.0019480662, -0.0041695452, 9.398565e-05, 0.0007518852, -0.0036965411, 0.0031169059, 0.0066712724, -0.00015037704, 0.0011278278, -0.0055448116, 0.0046753589, 0.010006909, -0.00022556556, -0.0019549015, 0.0096110068, -0.0081039554, -0.017345308, 0.00039098031, -0.00046992825, 0.0023103382, -0.0019480662, -0.0041695452, 9.398565e-05, -0.00062956895, 0.0030951899, -0.0026098495, -0.0055859936, 0.00012591379, 0.0010073103, -0.0049523038, 0.0041757591, 0.0089375898, -0.00020146206, 0.0015109655, -0.0074284557, 0.0062636387, 0.013406385, -0.0003021931, -0.0026190068, 0.01287599, -0.010856974, -0.023237733, 0.00052380137, -0.00062956895, 0.0030951899, -0.0026098495, -0.0055859936, 0.00012591379, 0.00067453816, -0.0033162749, 0.0027962673, 0.0059849931, -0.00013490763, -0.0010792611, 0.0053060398, -0.0044740277, -0.009575989, 0.00021585221, -0.0016188916, 0.0079590597, -0.0067110415, -0.014363984, 0.00032377832, 0.0028060787, -0.013795704, 0.011632472, 0.024897571, -0.00056121575, 0.00067453816, -0.0033162749, 0.0027962673, 0.0059849931, -0.00013490763, -8.9938421e-05, 0.00044216998, -0.00037283564, -0.00079799909, 1.7987684e-05, 0.00014390147, -0.00070747198, 0.00059653702, 0.0012767985, -2.8780295e-05, 0.00021585221, -0.001061208, 0.00089480553, 0.0019151978, -4.3170442e-05, -0.00037414383, 0.0018394271, -0.0015509963, -0.0033196762, 7.4828767e-05, -8.9938421e-05, 0.00044216998, -0.00037283564, -0.00079799909, 1.7987684e-05, -1.1242303e-05, 5.5271248e-05, -4.6604455e-05, -9.9749886e-05, 2.2484605e-06, 1.7987684e-05, -8.8433997e-05, 7.4567128e-05, 0.00015959982, -3.5975369e-06, 2.6981526e-05, -0.000132651, 0.00011185069, 0.00023939973, -5.3963053e-06, -4.6767979e-05, 0.00022992839, -0.00019387453, -0.00041495952, 9.3535958e-06, -1.1242303e-05, 5.5271248e-05, -4.6604455e-05, -9.9749886e-05, 2.2484605e-06, + 0.005468256, -0.0087492096, -0.013123814, 0.022747945, 0.005468256, -0.0087492096, 0.013998735, 0.020998103, -0.036396712, -0.0087492096, -0.013123814, 0.020998103, 0.031497155, -0.054595068, -0.013123814, 0.022747945, -0.036396712, -0.054595068, 0.094631451, 0.022747945, 0.005468256, -0.0087492096, -0.013123814, 0.022747945, 0.005468256, 0.0073258932, -0.011721429, -0.017582144, 0.030475716, 0.0073258932, -0.011721429, 0.018754287, 0.02813143, -0.048761145, -0.011721429, -0.017582144, 0.02813143, 0.042197145, -0.073141718, -0.017582144, 0.030475716, -0.048761145, -0.073141718, 0.12677898, 0.030475716, 0.0073258932, -0.011721429, -0.017582144, 0.030475716, 0.0073258932, -0.0078491713, 0.012558674, 0.018838011, -0.032652553, -0.0078491713, 0.012558674, -0.020093879, -0.030140818, 0.052244084, 0.012558674, 0.018838011, -0.030140818, -0.045211227, 0.078366127, 0.018838011, -0.032652553, 0.052244084, 0.078366127, -0.13583462, -0.032652553, -0.0078491713, 0.012558674, 0.018838011, -0.032652553, -0.0078491713, 0.0010465562, -0.0016744899, -0.0025117348, 0.0043536737, 0.0010465562, -0.0016744899, 0.0026791838, 0.0040187757, -0.0069658779, -0.0016744899, -0.0025117348, 0.0040187757, 0.0060281636, -0.010448817, -0.0025117348, 0.0043536737, -0.0069658779, -0.010448817, 0.018111283, 0.0043536737, 0.0010465562, -0.0016744899, -0.0025117348, 0.0043536737, 0.0010465562, 0.00013081952, -0.00020931124, -0.00031396685, 0.00054420921, 0.00013081952, -0.00020931124, 0.00033489798, 0.00050234697, -0.00087073474, -0.00020931124, -0.00031396685, 0.00050234697, 0.00075352045, -0.0013061021, -0.00031396685, 0.00054420921, -0.00087073474, -0.0013061021, 0.0022639103, 0.00054420921, 0.00013081952, -0.00020931124, -0.00031396685, 0.00054420921, 0.00013081952, + -0.035928834, -0.048134324, 0.05157249, -0.006876332, -0.00085954149, -0.048134324, -0.064486175, 0.069092331, -0.0092123107, -0.0011515388, 0.05157249, 0.069092331, -0.074027497, 0.0098703329, 0.0012337916, -0.006876332, -0.0092123107, 0.0098703329, -0.0013160444, -0.00016450555, -0.00085954149, -0.0011515388, 0.0012337916, -0.00016450555, -2.0563194e-05, 0.15828687, 0.21205897, -0.22720604, 0.030294138, 0.0037867673, 0.21205897, 0.28409814, -0.30439086, 0.040585449, 0.0050731811, -0.22720604, -0.30439086, 0.32613307, -0.043484409, -0.0054355511, 0.030294138, 0.040585449, -0.043484409, 0.0057979212, 0.00072474015, 0.0037867673, 0.0050731811, -0.0054355511, 0.00072474015, 9.0592519e-05, 0.27445915, 0.36769647, -0.39396051, 0.052528067, 0.0065660084, 0.36769647, 0.49260771, -0.52779398, 0.07037253, 0.0087965663, -0.39396051, -0.52779398, 0.56549355, -0.07539914, -0.0094248925, 0.052528067, 0.07037253, -0.07539914, 0.010053219, 0.0012566523, 0.0065660084, 0.0087965663, -0.0094248925, 0.0012566523, 0.00015708154, 0.14800108, 0.19827896, -0.21244175, 0.028325566, 0.0035406958, 0.19827896, 0.26563689, -0.28461095, 0.037948127, 0.0047435159, -0.21244175, -0.28461095, 0.30494031, -0.040658707, -0.0050823384, 0.028325566, 0.037948127, -0.040658707, 0.005421161, 0.00067764512, 0.0035406958, 0.0047435159, -0.0050823384, 0.00067764512, 8.4705641e-05, 0.016785837, 0.022488203, -0.024094503, 0.0032126004, 0.00040157505, 0.022488203, 0.030127736, -0.032279717, 0.0043039623, 0.00053799528, -0.024094503, -0.032279717, 0.034585411, -0.0046113882, -0.00057642352, 0.0032126004, 0.0043039623, -0.0046113882, 0.00061485175, 7.6856469e-05, 0.00040157505, 0.00053799528, -0.00057642352, 7.6856469e-05, 9.6070587e-06, + 0.0033777295, -0.014880812, -0.025802361, -0.013913828, -0.0015780645, 0.0045251878, -0.019936016, -0.034567757, -0.018640535, -0.0021141533, -0.0048484155, 0.021360017, 0.037036882, 0.019972002, 0.0022651643, 0.0006464554, -0.0028480023, -0.004938251, -0.0026629336, -0.00030202191, 8.0806925e-05, -0.00035600029, -0.00061728137, -0.0003328667, -3.7752738e-05, -0.014880812, 0.065558409, 0.11367402, 0.061298296, 0.0069522681, -0.019936016, 0.087829447, 0.15229055, 0.082122119, 0.0093140434, 0.021360017, -0.094102979, -0.16316845, -0.087987984, -0.0099793322, -0.0028480023, 0.012547064, 0.021755793, 0.011731731, 0.0013305776, -0.00035600029, 0.001568383, 0.0027194742, 0.0014664664, 0.0001663222, -0.025802361, 0.11367402, 0.19710337, 0.10628726, 0.012054781, -0.034567757, 0.15229055, 0.26406192, 0.14239442, 0.016149946, 0.037036882, -0.16316845, -0.28292349, -0.15256545, -0.017303514, -0.004938251, 0.021755793, 0.037723132, 0.02034206, 0.0023071351, -0.00061728137, 0.0027194742, 0.0047153915, 0.0025427574, 0.00028839189, -0.013913828, 0.061298296, 0.10628726, 0.057315013, 0.0065004962, -0.018640535, 0.082122119, 0.14239442, 0.076785663, 0.0087087987, 0.019972002, -0.087987984, -0.15256545, -0.082270353, -0.0093308557, -0.0026629336, 0.011731731, 0.02034206, 0.01096938, 0.0012441141, -0.0003328667, 0.0014664664, 0.0025427574, 0.0013711726, 0.00015551426, -0.0015780645, 0.0069522681, 0.012054781, 0.0065004962, 0.0007372667, -0.0021141533, 0.0093140434, 0.016149946, 0.0087087987, 0.00098772572, 0.0022651643, -0.0099793322, -0.017303514, -0.0093308557, -0.0010582776, -0.00030202191, 0.0013305776, 0.0023071351, 0.0012441141, 0.00014110367, -3.7752738e-05, 0.0001663222, 0.00028839189, 0.00015551426, 1.7637959e-05, + -0.00096698418, 0.0025786245, 0.0038679367, -0.02320762, -0.0070267517, -0.0012954812, 0.0034546165, 0.0051819248, -0.031091549, -0.00941383, 0.0013880156, -0.0037013749, -0.0055520623, 0.033312374, 0.010086246, -0.00018506874, 0.00049351665, 0.00074027497, -0.0044416498, -0.0013448329, -2.3133593e-05, 6.1689581e-05, 9.2534371e-05, -0.00055520623, -0.00016810411, 0.0042601132, -0.011360302, -0.017040453, 0.10224272, 0.030956823, 0.0057073287, -0.015219543, -0.022829315, 0.13697589, 0.041473255, -0.006114995, 0.016306653, 0.02445998, -0.14675988, -0.044435631, 0.00081533267, -0.0021742205, -0.0032613307, 0.019567984, 0.0059247507, 0.00010191658, -0.00027177756, -0.00040766634, 0.002445998, 0.00074059384, 0.0073867595, -0.019698025, -0.029547038, 0.17728223, 0.053677119, 0.0098961371, -0.026389699, -0.039584548, 0.23750729, 0.07191193, -0.010603004, 0.028274677, 0.042412016, -0.2544721, -0.077048496, 0.0014137339, -0.003769957, -0.0056549355, 0.033929613, 0.010273133, 0.00017671673, -0.00047124462, -0.00070686694, 0.0042412016, 0.0012841416, 0.0039832827, -0.010622087, -0.015933131, 0.095598786, 0.028945188, 0.0053364554, -0.014230548, -0.021345821, 0.12807493, 0.038778242, -0.0057176307, 0.015247015, 0.022870523, -0.13722314, -0.041548117, 0.00076235077, -0.0020329354, -0.0030494031, 0.018296418, 0.0055397489, 9.5293846e-05, -0.00025411692, -0.00038117538, 0.0022870523, 0.00069246861, 0.00045177193, -0.0012047252, -0.0018070877, 0.010842526, 0.003282876, 0.0006052447, -0.0016139859, -0.0024209788, 0.014525873, 0.0043981115, -0.00064847646, 0.0017292706, 0.0025939058, -0.015563435, -0.0047122623, 8.6463528e-05, -0.00023056941, -0.00034585411, 0.0020751247, 0.00062830164, 1.0807941e-05, -2.8821176e-05, -4.3231764e-05, 0.00025939058, 7.8537705e-05, + 0.00036933424, -0.0018157814, 0.0015310583, 0.0032770019, -7.3866847e-05, 0.00049480185, -0.0024326258, 0.0020511786, 0.0043902418, -9.8960369e-05, -0.00053014484, 0.0026063848, -0.0021976913, -0.0047038305, 0.00010602897, 7.0685978e-05, -0.00034751797, 0.00029302551, 0.00062717741, -1.4137196e-05, 8.8357473e-06, -4.3439747e-05, 3.6628189e-05, 7.8397176e-05, -1.7671495e-06, -0.0016271266, 0.0079995459, -0.0067451792, -0.01443705, 0.00032542531, -0.0021798825, 0.010717095, -0.0090366038, -0.019341503, 0.0004359765, 0.0023355884, -0.011482602, 0.0096820755, 0.020723039, -0.00046711768, -0.00031141178, 0.0015310136, -0.0012909434, -0.0027630718, 6.2282357e-05, -3.8926473e-05, 0.0001913767, -0.00016136792, -0.00034538398, 7.7852946e-06, -0.0028213317, 0.013870693, -0.011695703, -0.025032907, 0.00056426635, -0.0037797746, 0.018582746, -0.015668884, -0.033536909, 0.00075595492, 0.0040497585, -0.019910085, 0.01678809, 0.035932403, -0.0008099517, -0.0005399678, 0.002654678, -0.002238412, -0.004790987, 0.00010799356, -6.7495975e-05, 0.00033183476, -0.0002798015, -0.00059887338, 1.3499195e-05, -0.0015213927, 0.0074797198, -0.0063068644, -0.013498903, 0.00030427854, -0.0020382295, 0.010020677, -0.0084493876, -0.018084654, 0.0004076459, 0.0021838173, -0.01073644, 0.0090529153, 0.019376415, -0.00043676346, -0.00029117564, 0.0014315253, -0.0012070554, -0.002583522, 5.8235128e-05, -3.6396955e-05, 0.00017894067, -0.00015088192, -0.00032294025, 7.279391e-06, -0.00017255178, 0.0008483273, -0.00071530556, -0.0015310049, 3.4510356e-05, -0.00023116985, 0.001136515, -0.0009583041, -0.002051107, 4.623397e-05, 0.00024768198, -0.0012176947, 0.0010267544, 0.0021976147, -4.9536396e-05, -3.3024264e-05, 0.00016235929, -0.00013690059, -0.00029301529, 6.6048528e-06, -4.128033e-06, 2.0294911e-05, -1.7112573e-05, -3.6626911e-05, 8.256066e-07, + -0.0042977075, 0.006876332, 0.010314498, -0.017878463, -0.0042977075, -0.0057576942, 0.0092123107, 0.013818466, -0.023952008, -0.0057576942, 0.0061689581, -0.0098703329, -0.014805499, 0.025662866, 0.0061689581, -0.00082252775, 0.0013160444, 0.0019740666, -0.0034217154, -0.00082252775, -0.00010281597, 0.00016450555, 0.00024675832, -0.00042771443, -0.00010281597, 0.018933836, -0.030294138, -0.045441208, 0.07876476, 0.018933836, 0.025365905, -0.040585449, -0.060878173, 0.10552217, 0.025365905, -0.027177756, 0.043484409, 0.065226614, -0.11305946, -0.027177756, 0.0036237008, -0.0057979212, -0.0086968818, 0.015074595, 0.0036237008, 0.0004529626, -0.00072474015, -0.0010871102, 0.0018843244, 0.0004529626, 0.032830042, -0.052528067, -0.078792101, 0.13657298, 0.032830042, 0.043982832, -0.07037253, -0.1055588, 0.18296858, 0.043982832, -0.047124462, 0.07539914, 0.11309871, -0.19603776, -0.047124462, 0.0062832616, -0.010053219, -0.015079828, 0.026138368, 0.0062832616, 0.00078540771, -0.0012566523, -0.0018849785, 0.0032672961, 0.00078540771, 0.017703479, -0.028325566, -0.042488349, 0.073646472, 0.017703479, 0.023717579, -0.037948127, -0.05692219, 0.09866513, 0.023717579, -0.025411692, 0.040658707, 0.060988061, -0.10571264, -0.025411692, 0.0033882256, -0.005421161, -0.0081317415, 0.014095019, 0.0033882256, 0.0004235282, -0.00067764512, -0.0010164677, 0.0017618773, 0.0004235282, 0.0020078753, -0.0032126004, -0.0048189006, 0.0083527611, 0.0020078753, 0.0026899764, -0.0043039623, -0.0064559434, 0.011190302, 0.0026899764, -0.0028821176, 0.0046113882, 0.0069170822, -0.011989609, -0.0028821176, 0.00038428235, -0.00061485175, -0.00092227763, 0.0015986146, 0.00038428235, 4.8035293e-05, -7.6856469e-05, -0.0001152847, 0.00019982682, 4.8035293e-05, + 0.0033777295, 0.0045251878, -0.0048484155, 0.0006464554, 8.0806925e-05, -0.014880812, -0.019936016, 0.021360017, -0.0028480023, -0.00035600029, -0.025802361, -0.034567757, 0.037036882, -0.004938251, -0.00061728137, -0.013913828, -0.018640535, 0.019972002, -0.0026629336, -0.0003328667, -0.0015780645, -0.0021141533, 0.0022651643, -0.00030202191, -3.7752738e-05, -0.014880812, -0.019936016, 0.021360017, -0.0028480023, -0.00035600029, 0.065558409, 0.087829447, -0.094102979, 0.012547064, 0.001568383, 0.11367402, 0.15229055, -0.16316845, 0.021755793, 0.0027194742, 0.061298296, 0.082122119, -0.087987984, 0.011731731, 0.0014664664, 0.0069522681, 0.0093140434, -0.0099793322, 0.0013305776, 0.0001663222, -0.025802361, -0.034567757, 0.037036882, -0.004938251, -0.00061728137, 0.11367402, 0.15229055, -0.16316845, 0.021755793, 0.0027194742, 0.19710337, 0.26406192, -0.28292349, 0.037723132, 0.0047153915, 0.10628726, 0.14239442, -0.15256545, 0.02034206, 0.0025427574, 0.012054781, 0.016149946, -0.017303514, 0.0023071351, 0.00028839189, -0.013913828, -0.018640535, 0.019972002, -0.0026629336, -0.0003328667, 0.061298296, 0.082122119, -0.087987984, 0.011731731, 0.0014664664, 0.10628726, 0.14239442, -0.15256545, 0.02034206, 0.0025427574, 0.057315013, 0.076785663, -0.082270353, 0.01096938, 0.0013711726, 0.0065004962, 0.0087087987, -0.0093308557, 0.0012441141, 0.00015551426, -0.0015780645, -0.0021141533, 0.0022651643, -0.00030202191, -3.7752738e-05, 0.0069522681, 0.0093140434, -0.0099793322, 0.0013305776, 0.0001663222, 0.012054781, 0.016149946, -0.017303514, 0.0023071351, 0.00028839189, 0.0065004962, 0.0087087987, -0.0093308557, 0.0012441141, 0.00015551426, 0.0007372667, 0.00098772572, -0.0010582776, 0.00014110367, 1.7637959e-05, + -0.00031754596, 0.0013989699, 0.0024257229, 0.0013080621, 0.00014835646, 0.0013989699, -0.006163255, -0.010686684, -0.0057627547, -0.00065359428, 0.0024257229, -0.010686684, -0.018530015, -0.0099922422, -0.00113329, 0.0013080621, -0.0057627547, -0.0099922422, -0.0053882797, -0.00061112245, 0.00014835646, -0.00065359428, -0.00113329, -0.00061112245, -6.9311668e-05, 0.0013989699, -0.006163255, -0.010686684, -0.0057627547, -0.00065359428, -0.006163255, 0.02715263, 0.047080897, 0.0253882, 0.0028794531, -0.010686684, 0.047080897, 0.081635216, 0.044021488, 0.0049927846, -0.0057627547, 0.0253882, 0.044021488, 0.023738425, 0.0026923407, -0.00065359428, 0.0028794531, 0.0049927846, 0.0026923407, 0.00030535717, 0.0024257229, -0.010686684, -0.018530015, -0.0099922422, -0.00113329, -0.010686684, 0.047080897, 0.081635216, 0.044021488, 0.0049927846, -0.018530015, 0.081635216, 0.14155016, 0.0763304, 0.0086571641, -0.0099922422, 0.044021488, 0.0763304, 0.041160886, 0.0046683438, -0.00113329, 0.0049927846, 0.0086571641, 0.0046683438, 0.00052946949, 0.0013080621, -0.0057627547, -0.0099922422, -0.0053882797, -0.00061112245, -0.0057627547, 0.0253882, 0.044021488, 0.023738425, 0.0026923407, -0.0099922422, 0.044021488, 0.0763304, 0.041160886, 0.0046683438, -0.0053882797, 0.023738425, 0.041160886, 0.022195856, 0.0025173871, -0.00061112245, 0.0026923407, 0.0046683438, 0.0025173871, 0.00028551447, 0.00014835646, -0.00065359428, -0.00113329, -0.00061112245, -6.9311668e-05, -0.00065359428, 0.0028794531, 0.0049927846, 0.0026923407, 0.00030535717, -0.00113329, 0.0049927846, 0.0086571641, 0.0046683438, 0.00052946949, -0.00061112245, 0.0026923407, 0.0046683438, 0.0025173871, 0.00028551447, -6.9311668e-05, 0.00030535717, 0.00052946949, 0.00028551447, 3.2382191e-05, + 9.0907791e-05, -0.00024242077, -0.00036363116, 0.002181787, 0.00066059661, -0.00040050033, 0.0010680009, 0.0016020013, -0.0096120078, -0.0029103024, -0.00069444154, 0.0018518441, 0.0027777662, -0.016666597, -0.0050462752, -0.00037447503, 0.00099860009, 0.0014979001, -0.0089874008, -0.0027211852, -4.2471831e-05, 0.00011325821, 0.00016988732, -0.0010193239, -0.00030862864, -0.00040050033, 0.0010680009, 0.0016020013, -0.0096120078, -0.0029103024, 0.0017644309, -0.004705149, -0.0070577234, 0.042346341, 0.012821531, 0.0030594085, -0.0081584225, -0.012237634, 0.073425803, 0.022231701, 0.0016497747, -0.0043993992, -0.0065990988, 0.039594593, 0.011988363, 0.00018711248, -0.00049896661, -0.00074844991, 0.0044906995, 0.001359684, -0.00069444154, 0.0018518441, 0.0027777662, -0.016666597, -0.0050462752, 0.0030594085, -0.0081584225, -0.012237634, 0.073425803, 0.022231701, 0.0053048155, -0.014146175, -0.021219262, 0.12731557, 0.038548326, 0.0028606021, -0.0076282723, -0.011442409, 0.068654451, 0.020787042, 0.00032444088, -0.00086517568, -0.0012977635, 0.0077865811, 0.0023576037, -0.00037447503, 0.00099860009, 0.0014979001, -0.0089874008, -0.0027211852, 0.0016497747, -0.0043993992, -0.0065990988, 0.039594593, 0.011988363, 0.0028606021, -0.0076282723, -0.011442409, 0.068654451, 0.020787042, 0.0015425691, -0.0041135177, -0.0061702765, 0.037021659, 0.011209336, 0.00017495354, -0.00046654279, -0.00069981418, 0.0041988851, 0.0012713291, -4.2471831e-05, 0.00011325821, 0.00016988732, -0.0010193239, -0.00030862864, 0.00018711248, -0.00049896661, -0.00074844991, 0.0044906995, 0.001359684, 0.00032444088, -0.00086517568, -0.0012977635, 0.0077865811, 0.0023576037, 0.00017495354, -0.00046654279, -0.00069981418, 0.0041988851, 0.0012713291, 1.9842704e-05, -5.2913878e-05, -7.9370817e-05, 0.0004762249, 0.00014419032, + -3.4721726e-05, 0.00017070463, -0.00014393734, -0.0003080764, 6.9443451e-06, 0.00015296887, -0.00075205061, 0.00063412552, 0.0013572511, -3.0593775e-05, 0.00026523809, -0.0013040069, 0.0010995324, 0.0023533852, -5.3047618e-05, 0.00014302866, -0.0007031809, 0.0005929188, 0.0012690543, -2.8605732e-05, 1.622188e-05, -7.975266e-05, 6.7247065e-05, 0.00014393231, -3.2443759e-06, 0.00015296887, -0.00075205061, 0.00063412552, 0.0013572511, -3.0593775e-05, -0.00067391456, 0.0033132091, -0.0027936822, -0.0059794601, 0.00013478291, -0.0011685241, 0.0057448892, -0.0048440634, -0.010367995, 0.00023370481, -0.00063012228, 0.0030979103, -0.0026121433, -0.0055909032, 0.00012602446, -7.1466572e-05, 0.00035135565, -0.00029626142, -0.0006341034, 1.4293314e-05, 0.00026523809, -0.0013040069, 0.0010995324, 0.0023533852, -5.3047618e-05, -0.0011685241, 0.0057448892, -0.0048440634, -0.010367995, 0.00023370481, -0.0020261448, 0.0099612646, -0.0083992911, -0.01797743, 0.00040522896, -0.0010925911, 0.0053715751, -0.0045292867, -0.0096942628, 0.00021851822, -0.00012391839, 0.00060922787, -0.00051369806, -0.0010994941, 2.4783678e-05, 0.00014302866, -0.0007031809, 0.0005929188, 0.0012690543, -2.8605732e-05, -0.00063012228, 0.0030979103, -0.0026121433, -0.0055909032, 0.00012602446, -0.0010925911, 0.0053715751, -0.0045292867, -0.0096942628, 0.00021851822, -0.00058917571, 0.002896602, -0.0024424011, -0.0052275954, 0.00011783514, -6.6822534e-05, 0.00032852388, -0.00027700978, -0.00059289812, 1.3364507e-05, 1.622188e-05, -7.975266e-05, 6.7247065e-05, 0.00014393231, -3.2443759e-06, -7.1466572e-05, 0.00035135565, -0.00029626142, -0.0006341034, 1.4293314e-05, -0.00012391839, 0.00060922787, -0.00051369806, -0.0010994941, 2.4783678e-05, -6.6822534e-05, 0.00032852388, -0.00027700978, -0.00059289812, 1.3364507e-05, -7.5788106e-06, 3.7260189e-05, -3.1417615e-05, -6.724472e-05, 1.5157621e-06, + 0.00040403462, -0.0006464554, -0.0009696831, 0.001680784, 0.00040403462, -0.0017800014, 0.0028480023, 0.0042720035, -0.007404806, -0.0017800014, -0.0030864068, 0.004938251, 0.0074073764, -0.012839452, -0.0030864068, -0.0016643335, 0.0026629336, 0.0039944004, -0.0069236273, -0.0016643335, -0.00018876369, 0.00030202191, 0.00045303286, -0.00078525696, -0.00018876369, -0.0017800014, 0.0028480023, 0.0042720035, -0.007404806, -0.0017800014, 0.0078419149, -0.012547064, -0.018820596, 0.032622366, 0.0078419149, 0.013597371, -0.021755793, -0.03263369, 0.056565063, 0.013597371, 0.007332332, -0.011731731, -0.017597597, 0.030502501, 0.007332332, 0.00083161102, -0.0013305776, -0.0019958664, 0.0034595018, 0.00083161102, -0.0030864068, 0.004938251, 0.0074073764, -0.012839452, -0.0030864068, 0.013597371, -0.021755793, -0.03263369, 0.056565063, 0.013597371, 0.023576958, -0.037723132, -0.056584698, 0.098080144, 0.023576958, 0.012713787, -0.02034206, -0.030513089, 0.052889355, 0.012713787, 0.0014419595, -0.0023071351, -0.0034607027, 0.0059985514, 0.0014419595, -0.0016643335, 0.0026629336, 0.0039944004, -0.0069236273, -0.0016643335, 0.007332332, -0.011731731, -0.017597597, 0.030502501, 0.007332332, 0.012713787, -0.02034206, -0.030513089, 0.052889355, 0.012713787, 0.0068558628, -0.01096938, -0.016454071, 0.028520389, 0.0068558628, 0.00077757131, -0.0012441141, -0.0018661711, 0.0032346966, 0.00077757131, -0.00018876369, 0.00030202191, 0.00045303286, -0.00078525696, -0.00018876369, 0.00083161102, -0.0013305776, -0.0019958664, 0.0034595018, 0.00083161102, 0.0014419595, -0.0023071351, -0.0034607027, 0.0059985514, 0.0014419595, 0.00077757131, -0.0012441141, -0.0018661711, 0.0032346966, 0.00077757131, 8.8189796e-05, -0.00014110367, -0.00021165551, 0.00036686955, 8.8189796e-05, + -0.00096698418, -0.0012954812, 0.0013880156, -0.00018506874, -2.3133593e-05, 0.0025786245, 0.0034546165, -0.0037013749, 0.00049351665, 6.1689581e-05, 0.0038679367, 0.0051819248, -0.0055520623, 0.00074027497, 9.2534371e-05, -0.02320762, -0.031091549, 0.033312374, -0.0044416498, -0.00055520623, -0.0070267517, -0.00941383, 0.010086246, -0.0013448329, -0.00016810411, 0.0042601132, 0.0057073287, -0.006114995, 0.00081533267, 0.00010191658, -0.011360302, -0.015219543, 0.016306653, -0.0021742205, -0.00027177756, -0.017040453, -0.022829315, 0.02445998, -0.0032613307, -0.00040766634, 0.10224272, 0.13697589, -0.14675988, 0.019567984, 0.002445998, 0.030956823, 0.041473255, -0.044435631, 0.0059247507, 0.00074059384, 0.0073867595, 0.0098961371, -0.010603004, 0.0014137339, 0.00017671673, -0.019698025, -0.026389699, 0.028274677, -0.003769957, -0.00047124462, -0.029547038, -0.039584548, 0.042412016, -0.0056549355, -0.00070686694, 0.17728223, 0.23750729, -0.2544721, 0.033929613, 0.0042412016, 0.053677119, 0.07191193, -0.077048496, 0.010273133, 0.0012841416, 0.0039832827, 0.0053364554, -0.0057176307, 0.00076235077, 9.5293846e-05, -0.010622087, -0.014230548, 0.015247015, -0.0020329354, -0.00025411692, -0.015933131, -0.021345821, 0.022870523, -0.0030494031, -0.00038117538, 0.095598786, 0.12807493, -0.13722314, 0.018296418, 0.0022870523, 0.028945188, 0.038778242, -0.041548117, 0.0055397489, 0.00069246861, 0.00045177193, 0.0006052447, -0.00064847646, 8.6463528e-05, 1.0807941e-05, -0.0012047252, -0.0016139859, 0.0017292706, -0.00023056941, -2.8821176e-05, -0.0018070877, -0.0024209788, 0.0025939058, -0.00034585411, -4.3231764e-05, 0.010842526, 0.014525873, -0.015563435, 0.0020751247, 0.00025939058, 0.003282876, 0.0043981115, -0.0047122623, 0.00062830164, 7.8537705e-05, + 9.0907791e-05, -0.00040050033, -0.00069444154, -0.00037447503, -4.2471831e-05, -0.00024242077, 0.0010680009, 0.0018518441, 0.00099860009, 0.00011325821, -0.00036363116, 0.0016020013, 0.0027777662, 0.0014979001, 0.00016988732, 0.002181787, -0.0096120078, -0.016666597, -0.0089874008, -0.0010193239, 0.00066059661, -0.0029103024, -0.0050462752, -0.0027211852, -0.00030862864, -0.00040050033, 0.0017644309, 0.0030594085, 0.0016497747, 0.00018711248, 0.0010680009, -0.004705149, -0.0081584225, -0.0043993992, -0.00049896661, 0.0016020013, -0.0070577234, -0.012237634, -0.0065990988, -0.00074844991, -0.0096120078, 0.042346341, 0.073425803, 0.039594593, 0.0044906995, -0.0029103024, 0.012821531, 0.022231701, 0.011988363, 0.001359684, -0.00069444154, 0.0030594085, 0.0053048155, 0.0028606021, 0.00032444088, 0.0018518441, -0.0081584225, -0.014146175, -0.0076282723, -0.00086517568, 0.0027777662, -0.012237634, -0.021219262, -0.011442409, -0.0012977635, -0.016666597, 0.073425803, 0.12731557, 0.068654451, 0.0077865811, -0.0050462752, 0.022231701, 0.038548326, 0.020787042, 0.0023576037, -0.00037447503, 0.0016497747, 0.0028606021, 0.0015425691, 0.00017495354, 0.00099860009, -0.0043993992, -0.0076282723, -0.0041135177, -0.00046654279, 0.0014979001, -0.0065990988, -0.011442409, -0.0061702765, -0.00069981418, -0.0089874008, 0.039594593, 0.068654451, 0.037021659, 0.0041988851, -0.0027211852, 0.011988363, 0.020787042, 0.011209336, 0.0012713291, -4.2471831e-05, 0.00018711248, 0.00032444088, 0.00017495354, 1.9842704e-05, 0.00011325821, -0.00049896661, -0.00086517568, -0.00046654279, -5.2913878e-05, 0.00016988732, -0.00074844991, -0.0012977635, -0.00069981418, -7.9370817e-05, -0.0010193239, 0.0044906995, 0.0077865811, 0.0041988851, 0.0004762249, -0.00030862864, 0.001359684, 0.0023576037, 0.0012713291, 0.00014419032, + -2.6025292e-05, 6.9400779e-05, 0.00010410117, -0.00062460701, -0.00018911712, 6.9400779e-05, -0.00018506874, -0.00027760311, 0.0016656187, 0.00050431232, 0.00010410117, -0.00027760311, -0.00041640467, 0.002498428, 0.00075646849, -0.00062460701, 0.0016656187, 0.002498428, -0.014990568, -0.0045388109, -0.00018911712, 0.00050431232, 0.00075646849, -0.0045388109, -0.0013742511, 0.00011465616, -0.00030574975, -0.00045862463, 0.0027517478, 0.00083316807, -0.00030574975, 0.00081533267, 0.001222999, -0.007337994, -0.0022217815, -0.00045862463, 0.001222999, 0.0018344985, -0.011006991, -0.0033326723, 0.0027517478, -0.007337994, -0.011006991, 0.066041946, 0.019996034, 0.00083316807, -0.0022217815, -0.0033326723, 0.019996034, 0.0060543547, 0.00019880633, -0.0005301502, -0.0007952253, 0.0047713518, 0.0014446593, -0.0005301502, 0.0014137339, 0.0021206008, -0.012723605, -0.0038524248, -0.0007952253, 0.0021206008, 0.0031809012, -0.019085407, -0.0057786372, 0.0047713518, -0.012723605, -0.019085407, 0.11451244, 0.034671823, 0.0014446593, -0.0038524248, -0.0057786372, 0.034671823, 0.010497858, 0.00010720558, -0.00028588154, -0.00042882231, 0.0025729338, 0.00077902719, -0.00028588154, 0.00076235077, 0.0011435261, -0.0068611569, -0.0020774058, -0.00042882231, 0.0011435261, 0.0017152892, -0.010291735, -0.0031161088, 0.0025729338, -0.0068611569, -0.010291735, 0.061750412, 0.018696653, 0.00077902719, -0.0020774058, -0.0031161088, 0.018696653, 0.0056609309, 1.2158934e-05, -3.2423823e-05, -4.8635734e-05, 0.00029181441, 8.8354918e-05, -3.2423823e-05, 8.6463528e-05, 0.00012969529, -0.00077817175, -0.00023561311, -4.8635734e-05, 0.00012969529, 0.00019454294, -0.0011672576, -0.00035341967, 0.00029181441, -0.00077817175, -0.0011672576, 0.0070035458, 0.002120518, 8.8354918e-05, -0.00023561311, -0.00035341967, 0.002120518, 0.00064204573, + 9.9402157e-06, -4.8869715e-05, 4.1206712e-05, 8.8196823e-05, -1.9880431e-06, -2.6507242e-05, 0.00013031924, -0.00010988457, -0.00023519153, 5.3014484e-06, -3.9760863e-05, 0.00019547886, -0.00016482685, -0.00035278729, 7.9521725e-06, 0.00023856518, -0.0011728732, 0.00098896109, 0.0021167237, -4.7713035e-05, 7.2232234e-05, -0.00035511993, 0.00029943544, 0.00064089691, -1.4446447e-05, -4.3792282e-05, 0.00021529878, -0.00018153892, -0.00038855698, 8.7584564e-06, 0.00011677942, -0.00057413009, 0.00048410377, 0.0010361519, -2.3355884e-05, 0.00017516913, -0.00086119513, 0.00072615566, 0.0015542279, -3.5033826e-05, -0.0010510148, 0.0051671708, -0.004356934, -0.0093253674, 0.00021020295, -0.00031822392, 0.0015645045, -0.0013191828, -0.002823514, 6.3644783e-05, -7.5932972e-05, 0.0003733141, -0.00031477668, -0.00067373255, 1.5186594e-05, 0.00020248792, -0.00099550427, 0.00083940449, 0.0017966201, -4.0497585e-05, 0.00030373189, -0.0014932564, 0.0012591067, 0.0026949302, -6.0746377e-05, -0.0018223913, 0.0089595384, -0.0075546404, -0.016169581, 0.00036447826, -0.00055177959, 0.0027127491, -0.0022873772, -0.0048957898, 0.00011035592, -4.0946574e-05, 0.00020130825, -0.00016974216, -0.00036330779, 8.1893149e-06, 0.00010919086, -0.000536822, 0.00045264577, 0.00096882076, -2.1838173e-05, 0.0001637863, -0.000805233, 0.00067896865, 0.0014532311, -3.2757259e-05, -0.00098271778, 0.004831398, -0.0040738119, -0.0087193869, 0.00019654356, -0.00029754511, 0.0014628399, -0.0012334597, -0.0026400366, 5.9509021e-05, -4.6440371e-06, 2.2831775e-05, -1.9251645e-05, -4.1205275e-05, 9.2880743e-07, 1.2384099e-05, -6.0884734e-05, 5.133772e-05, 0.00010988073, -2.4768198e-06, 1.8576149e-05, -9.1327101e-05, 7.700658e-05, 0.0001648211, -3.7152297e-06, -0.00011145689, 0.00054796261, -0.00046203948, -0.0009889266, 2.2291378e-05, -3.374667e-05, 0.0001659109, -0.00013989529, -0.000299425, 6.749334e-06, + -0.00011566796, 0.00018506874, 0.00027760311, -0.00048117873, -0.00011566796, 0.0003084479, -0.00049351665, -0.00074027497, 0.0012831433, 0.0003084479, 0.00046267186, -0.00074027497, -0.0011104125, 0.0019247149, 0.00046267186, -0.0027760311, 0.0044416498, 0.0066624747, -0.01154829, -0.0027760311, -0.00084052054, 0.0013448329, 0.0020172493, -0.0034965654, -0.00084052054, 0.00050958292, -0.00081533267, -0.001222999, 0.0021198649, 0.00050958292, -0.0013588878, 0.0021742205, 0.0032613307, -0.0056529732, -0.0013588878, -0.0020383317, 0.0032613307, 0.004891996, -0.0084794598, -0.0020383317, 0.01222999, -0.019567984, -0.029351976, 0.050876759, 0.01222999, 0.0037029692, -0.0059247507, -0.0088871261, 0.015404352, 0.0037029692, 0.00088358367, -0.0014137339, -0.0021206008, 0.0036757081, 0.00088358367, -0.0023562231, 0.003769957, 0.0056549355, -0.0098018882, -0.0023562231, -0.0035343347, 0.0056549355, 0.0084824032, -0.014702832, -0.0035343347, 0.021206008, -0.033929613, -0.050894419, 0.088216994, 0.021206008, 0.006420708, -0.010273133, -0.015409699, 0.026710145, 0.006420708, 0.00047646923, -0.00076235077, -0.0011435261, 0.001982112, 0.00047646923, -0.0012705846, 0.0020329354, 0.0030494031, -0.005285632, -0.0012705846, -0.0019058769, 0.0030494031, 0.0045741046, -0.007928448, -0.0019058769, 0.011435261, -0.018296418, -0.027444628, 0.047570688, 0.011435261, 0.0034623431, -0.0055397489, -0.0083096233, 0.014403347, 0.0034623431, 5.4039705e-05, -8.6463528e-05, -0.00012969529, 0.00022480517, 5.4039705e-05, -0.00014410588, 0.00023056941, 0.00034585411, -0.00059948046, -0.00014410588, -0.00021615882, 0.00034585411, 0.00051878117, -0.00089922069, -0.00021615882, 0.0012969529, -0.0020751247, -0.003112687, 0.0053953241, 0.0012969529, 0.00039268852, -0.00062830164, -0.00094245245, 0.0016335843, 0.00039268852, + 0.00036933424, 0.00049480185, -0.00053014484, 7.0685978e-05, 8.8357473e-06, -0.0018157814, -0.0024326258, 0.0026063848, -0.00034751797, -4.3439747e-05, 0.0015310583, 0.0020511786, -0.0021976913, 0.00029302551, 3.6628189e-05, 0.0032770019, 0.0043902418, -0.0047038305, 0.00062717741, 7.8397176e-05, -7.3866847e-05, -9.8960369e-05, 0.00010602897, -1.4137196e-05, -1.7671495e-06, -0.0016271266, -0.0021798825, 0.0023355884, -0.00031141178, -3.8926473e-05, 0.0079995459, 0.010717095, -0.011482602, 0.0015310136, 0.0001913767, -0.0067451792, -0.0090366038, 0.0096820755, -0.0012909434, -0.00016136792, -0.01443705, -0.019341503, 0.020723039, -0.0027630718, -0.00034538398, 0.00032542531, 0.0004359765, -0.00046711768, 6.2282357e-05, 7.7852946e-06, -0.0028213317, -0.0037797746, 0.0040497585, -0.0005399678, -6.7495975e-05, 0.013870693, 0.018582746, -0.019910085, 0.002654678, 0.00033183476, -0.011695703, -0.015668884, 0.01678809, -0.002238412, -0.0002798015, -0.025032907, -0.033536909, 0.035932403, -0.004790987, -0.00059887338, 0.00056426635, 0.00075595492, -0.0008099517, 0.00010799356, 1.3499195e-05, -0.0015213927, -0.0020382295, 0.0021838173, -0.00029117564, -3.6396955e-05, 0.0074797198, 0.010020677, -0.01073644, 0.0014315253, 0.00017894067, -0.0063068644, -0.0084493876, 0.0090529153, -0.0012070554, -0.00015088192, -0.013498903, -0.018084654, 0.019376415, -0.002583522, -0.00032294025, 0.00030427854, 0.0004076459, -0.00043676346, 5.8235128e-05, 7.279391e-06, -0.00017255178, -0.00023116985, 0.00024768198, -3.3024264e-05, -4.128033e-06, 0.0008483273, 0.001136515, -0.0012176947, 0.00016235929, 2.0294911e-05, -0.00071530556, -0.0009583041, 0.0010267544, -0.00013690059, -1.7112573e-05, -0.0015310049, -0.002051107, 0.0021976147, -0.00029301529, -3.6626911e-05, 3.4510356e-05, 4.623397e-05, -4.9536396e-05, 6.6048528e-06, 8.256066e-07, + -3.4721726e-05, 0.00015296887, 0.00026523809, 0.00014302866, 1.622188e-05, 0.00017070463, -0.00075205061, -0.0013040069, -0.0007031809, -7.975266e-05, -0.00014393734, 0.00063412552, 0.0010995324, 0.0005929188, 6.7247065e-05, -0.0003080764, 0.0013572511, 0.0023533852, 0.0012690543, 0.00014393231, 6.9443451e-06, -3.0593775e-05, -5.3047618e-05, -2.8605732e-05, -3.2443759e-06, 0.00015296887, -0.00067391456, -0.0011685241, -0.00063012228, -7.1466572e-05, -0.00075205061, 0.0033132091, 0.0057448892, 0.0030979103, 0.00035135565, 0.00063412552, -0.0027936822, -0.0048440634, -0.0026121433, -0.00029626142, 0.0013572511, -0.0059794601, -0.010367995, -0.0055909032, -0.0006341034, -3.0593775e-05, 0.00013478291, 0.00023370481, 0.00012602446, 1.4293314e-05, 0.00026523809, -0.0011685241, -0.0020261448, -0.0010925911, -0.00012391839, -0.0013040069, 0.0057448892, 0.0099612646, 0.0053715751, 0.00060922787, 0.0010995324, -0.0048440634, -0.0083992911, -0.0045292867, -0.00051369806, 0.0023533852, -0.010367995, -0.01797743, -0.0096942628, -0.0010994941, -5.3047618e-05, 0.00023370481, 0.00040522896, 0.00021851822, 2.4783678e-05, 0.00014302866, -0.00063012228, -0.0010925911, -0.00058917571, -6.6822534e-05, -0.0007031809, 0.0030979103, 0.0053715751, 0.002896602, 0.00032852388, 0.0005929188, -0.0026121433, -0.0045292867, -0.0024424011, -0.00027700978, 0.0012690543, -0.0055909032, -0.0096942628, -0.0052275954, -0.00059289812, -2.8605732e-05, 0.00012602446, 0.00021851822, 0.00011783514, 1.3364507e-05, 1.622188e-05, -7.1466572e-05, -0.00012391839, -6.6822534e-05, -7.5788106e-06, -7.975266e-05, 0.00035135565, 0.00060922787, 0.00032852388, 3.7260189e-05, 6.7247065e-05, -0.00029626142, -0.00051369806, -0.00027700978, -3.1417615e-05, 0.00014393231, -0.0006341034, -0.0010994941, -0.00059289812, -6.724472e-05, -3.2443759e-06, 1.4293314e-05, 2.4783678e-05, 1.3364507e-05, 1.5157621e-06, + 9.9402157e-06, -2.6507242e-05, -3.9760863e-05, 0.00023856518, 7.2232234e-05, -4.8869715e-05, 0.00013031924, 0.00019547886, -0.0011728732, -0.00035511993, 4.1206712e-05, -0.00010988457, -0.00016482685, 0.00098896109, 0.00029943544, 8.8196823e-05, -0.00023519153, -0.00035278729, 0.0021167237, 0.00064089691, -1.9880431e-06, 5.3014484e-06, 7.9521725e-06, -4.7713035e-05, -1.4446447e-05, -4.3792282e-05, 0.00011677942, 0.00017516913, -0.0010510148, -0.00031822392, 0.00021529878, -0.00057413009, -0.00086119513, 0.0051671708, 0.0015645045, -0.00018153892, 0.00048410377, 0.00072615566, -0.004356934, -0.0013191828, -0.00038855698, 0.0010361519, 0.0015542279, -0.0093253674, -0.002823514, 8.7584564e-06, -2.3355884e-05, -3.5033826e-05, 0.00021020295, 6.3644783e-05, -7.5932972e-05, 0.00020248792, 0.00030373189, -0.0018223913, -0.00055177959, 0.0003733141, -0.00099550427, -0.0014932564, 0.0089595384, 0.0027127491, -0.00031477668, 0.00083940449, 0.0012591067, -0.0075546404, -0.0022873772, -0.00067373255, 0.0017966201, 0.0026949302, -0.016169581, -0.0048957898, 1.5186594e-05, -4.0497585e-05, -6.0746377e-05, 0.00036447826, 0.00011035592, -4.0946574e-05, 0.00010919086, 0.0001637863, -0.00098271778, -0.00029754511, 0.00020130825, -0.000536822, -0.000805233, 0.004831398, 0.0014628399, -0.00016974216, 0.00045264577, 0.00067896865, -0.0040738119, -0.0012334597, -0.00036330779, 0.00096882076, 0.0014532311, -0.0087193869, -0.0026400366, 8.1893149e-06, -2.1838173e-05, -3.2757259e-05, 0.00019654356, 5.9509021e-05, -4.6440371e-06, 1.2384099e-05, 1.8576149e-05, -0.00011145689, -3.374667e-05, 2.2831775e-05, -6.0884734e-05, -9.1327101e-05, 0.00054796261, 0.0001659109, -1.9251645e-05, 5.133772e-05, 7.700658e-05, -0.00046203948, -0.00013989529, -4.1205275e-05, 0.00010988073, 0.0001648211, -0.0009889266, -0.000299425, 9.2880743e-07, -2.4768198e-06, -3.7152297e-06, 2.2291378e-05, 6.749334e-06, + -3.7966102e-06, 1.8665516e-05, -1.5738675e-05, -3.3686286e-05, 7.5932203e-07, 1.8665516e-05, -9.1766465e-05, 7.7377049e-05, 0.00016561403, -3.7331032e-06, -1.5738675e-05, 7.7377049e-05, -6.5243961e-05, -0.00013964497, 3.147735e-06, -3.3686286e-05, 0.00016561403, -0.00013964497, -0.00029888923, 6.7372573e-06, 7.5932203e-07, -3.7331032e-06, 3.147735e-06, 6.7372573e-06, -1.5186441e-07, 1.6726219e-05, -8.2232174e-05, 6.933778e-05, 0.00014840718, -3.3452438e-06, -8.2232174e-05, 0.00040428327, -0.00034088974, -0.00072962366, 1.6446435e-05, 6.933778e-05, -0.00034088974, 0.00028743662, 0.00061521521, -1.3867556e-05, 0.00014840718, -0.00072962366, 0.00061521521, 0.0013167764, -2.9681436e-05, -3.3452438e-06, 1.6446435e-05, -1.3867556e-05, -2.9681436e-05, 6.6904876e-07, 2.9002177e-05, -0.00014258525, 0.00012022721, 0.0002573284, -5.8004353e-06, -0.00014258525, 0.00070100092, -0.00059108066, -0.00126512, 2.8517049e-05, 0.00012022721, -0.00059108066, 0.00049839641, 0.0010667432, -2.4045441e-05, 0.0002573284, -0.00126512, 0.0010667432, 0.0022832047, -5.1465681e-05, -5.8004353e-06, 2.8517049e-05, -2.4045441e-05, -5.1465681e-05, 1.1600871e-06, 1.5639317e-05, -7.6888567e-05, 6.4832076e-05, 0.00013876339, -3.1278633e-06, -7.6888567e-05, 0.00037801216, -0.00031873806, -0.00068221129, 1.5377713e-05, 6.4832076e-05, -0.00031873806, 0.00026875842, 0.00057523733, -1.2966415e-05, 0.00013876339, -0.00068221129, 0.00057523733, 0.0012312097, -2.7752678e-05, -3.1278633e-06, 1.5377713e-05, -1.2966415e-05, -2.7752678e-05, 6.2557266e-07, 1.7737642e-06, -8.7204697e-06, 7.3530588e-06, 1.5738126e-05, -3.5475284e-07, -8.7204697e-06, 4.2873e-05, -3.6150311e-05, -7.737435e-05, 1.7440939e-06, 7.3530588e-06, -3.6150311e-05, 3.0481771e-05, 6.5241685e-05, -1.4706118e-06, 1.5738126e-05, -7.737435e-05, 6.5241685e-05, 0.0001396401, -3.1476252e-06, -3.5475284e-07, 1.7440939e-06, -1.4706118e-06, -3.1476252e-06, 7.0950567e-08, + 4.4178736e-05, -7.0685978e-05, -0.00010602897, 0.00018378354, 4.4178736e-05, -0.00021719873, 0.00034751797, 0.00052127696, -0.00090354673, -0.00021719873, 0.00018314094, -0.00029302551, -0.00043953826, 0.00076186632, 0.00018314094, 0.00039198588, -0.00062717741, -0.00094076611, 0.0016306613, 0.00039198588, -8.8357473e-06, 1.4137196e-05, 2.1205793e-05, -3.6756709e-05, -8.8357473e-06, -0.00019463237, 0.00031141178, 0.00046711768, -0.00080967064, -0.00019463237, 0.00095688348, -0.0015310136, -0.0022965204, 0.0039806353, 0.00095688348, -0.00080683962, 0.0012909434, 0.0019364151, -0.0033564528, -0.00080683962, -0.0017269199, 0.0027630718, 0.0041446077, -0.0071839868, -0.0017269199, 3.8926473e-05, -6.2282357e-05, -9.3423535e-05, 0.00016193413, 3.8926473e-05, -0.00033747987, 0.0005399678, 0.0008099517, -0.0014039163, -0.00033747987, 0.0016591738, -0.002654678, -0.0039820171, 0.0069021629, 0.0016591738, -0.0013990075, 0.002238412, 0.0033576179, -0.0058198711, -0.0013990075, -0.0029943669, 0.004790987, 0.0071864805, -0.012456566, -0.0029943669, 6.7495975e-05, -0.00010799356, -0.00016199034, 0.00028078325, 6.7495975e-05, -0.00018198477, 0.00029117564, 0.00043676346, -0.00075705666, -0.00018198477, 0.00089470333, -0.0014315253, -0.002147288, 0.0037219658, 0.00089470333, -0.00075440961, 0.0012070554, 0.0018105831, -0.003138344, -0.00075440961, -0.0016147013, 0.002583522, 0.0038752831, -0.0067171573, -0.0016147013, 3.6396955e-05, -5.8235128e-05, -8.7352692e-05, 0.00015141133, 3.6396955e-05, -2.0640165e-05, 3.3024264e-05, 4.9536396e-05, -8.5863087e-05, -2.0640165e-05, 0.00010147456, -0.00016235929, -0.00024353894, 0.00042213416, 0.00010147456, -8.5562866e-05, 0.00013690059, 0.00020535088, -0.00035594152, -8.5562866e-05, -0.00018313456, 0.00029301529, 0.00043952293, -0.00076183975, -0.00018313456, 4.128033e-06, -6.6048528e-06, -9.9072792e-06, 1.7172617e-05, 4.128033e-06, + -0.0042977075, -0.0057576942, 0.0061689581, -0.00082252775, -0.00010281597, 0.006876332, 0.0092123107, -0.0098703329, 0.0013160444, 0.00016450555, 0.010314498, 0.013818466, -0.014805499, 0.0019740666, 0.00024675832, -0.017878463, -0.023952008, 0.025662866, -0.0034217154, -0.00042771443, -0.0042977075, -0.0057576942, 0.0061689581, -0.00082252775, -0.00010281597, 0.018933836, 0.025365905, -0.027177756, 0.0036237008, 0.0004529626, -0.030294138, -0.040585449, 0.043484409, -0.0057979212, -0.00072474015, -0.045441208, -0.060878173, 0.065226614, -0.0086968818, -0.0010871102, 0.07876476, 0.10552217, -0.11305946, 0.015074595, 0.0018843244, 0.018933836, 0.025365905, -0.027177756, 0.0036237008, 0.0004529626, 0.032830042, 0.043982832, -0.047124462, 0.0062832616, 0.00078540771, -0.052528067, -0.07037253, 0.07539914, -0.010053219, -0.0012566523, -0.078792101, -0.1055588, 0.11309871, -0.015079828, -0.0018849785, 0.13657298, 0.18296858, -0.19603776, 0.026138368, 0.0032672961, 0.032830042, 0.043982832, -0.047124462, 0.0062832616, 0.00078540771, 0.017703479, 0.023717579, -0.025411692, 0.0033882256, 0.0004235282, -0.028325566, -0.037948127, 0.040658707, -0.005421161, -0.00067764512, -0.042488349, -0.05692219, 0.060988061, -0.0081317415, -0.0010164677, 0.073646472, 0.09866513, -0.10571264, 0.014095019, 0.0017618773, 0.017703479, 0.023717579, -0.025411692, 0.0033882256, 0.0004235282, 0.0020078753, 0.0026899764, -0.0028821176, 0.00038428235, 4.8035293e-05, -0.0032126004, -0.0043039623, 0.0046113882, -0.00061485175, -7.6856469e-05, -0.0048189006, -0.0064559434, 0.0069170822, -0.00092227763, -0.0001152847, 0.0083527611, 0.011190302, -0.011989609, 0.0015986146, 0.00019982682, 0.0020078753, 0.0026899764, -0.0028821176, 0.00038428235, 4.8035293e-05, + 0.00040403462, -0.0017800014, -0.0030864068, -0.0016643335, -0.00018876369, -0.0006464554, 0.0028480023, 0.004938251, 0.0026629336, 0.00030202191, -0.0009696831, 0.0042720035, 0.0074073764, 0.0039944004, 0.00045303286, 0.001680784, -0.007404806, -0.012839452, -0.0069236273, -0.00078525696, 0.00040403462, -0.0017800014, -0.0030864068, -0.0016643335, -0.00018876369, -0.0017800014, 0.0078419149, 0.013597371, 0.007332332, 0.00083161102, 0.0028480023, -0.012547064, -0.021755793, -0.011731731, -0.0013305776, 0.0042720035, -0.018820596, -0.03263369, -0.017597597, -0.0019958664, -0.007404806, 0.032622366, 0.056565063, 0.030502501, 0.0034595018, -0.0017800014, 0.0078419149, 0.013597371, 0.007332332, 0.00083161102, -0.0030864068, 0.013597371, 0.023576958, 0.012713787, 0.0014419595, 0.004938251, -0.021755793, -0.037723132, -0.02034206, -0.0023071351, 0.0074073764, -0.03263369, -0.056584698, -0.030513089, -0.0034607027, -0.012839452, 0.056565063, 0.098080144, 0.052889355, 0.0059985514, -0.0030864068, 0.013597371, 0.023576958, 0.012713787, 0.0014419595, -0.0016643335, 0.007332332, 0.012713787, 0.0068558628, 0.00077757131, 0.0026629336, -0.011731731, -0.02034206, -0.01096938, -0.0012441141, 0.0039944004, -0.017597597, -0.030513089, -0.016454071, -0.0018661711, -0.0069236273, 0.030502501, 0.052889355, 0.028520389, 0.0032346966, -0.0016643335, 0.007332332, 0.012713787, 0.0068558628, 0.00077757131, -0.00018876369, 0.00083161102, 0.0014419595, 0.00077757131, 8.8189796e-05, 0.00030202191, -0.0013305776, -0.0023071351, -0.0012441141, -0.00014110367, 0.00045303286, -0.0019958664, -0.0034607027, -0.0018661711, -0.00021165551, -0.00078525696, 0.0034595018, 0.0059985514, 0.0032346966, 0.00036686955, -0.00018876369, 0.00083161102, 0.0014419595, 0.00077757131, 8.8189796e-05, + -0.00011566796, 0.0003084479, 0.00046267186, -0.0027760311, -0.00084052054, 0.00018506874, -0.00049351665, -0.00074027497, 0.0044416498, 0.0013448329, 0.00027760311, -0.00074027497, -0.0011104125, 0.0066624747, 0.0020172493, -0.00048117873, 0.0012831433, 0.0019247149, -0.01154829, -0.0034965654, -0.00011566796, 0.0003084479, 0.00046267186, -0.0027760311, -0.00084052054, 0.00050958292, -0.0013588878, -0.0020383317, 0.01222999, 0.0037029692, -0.00081533267, 0.0021742205, 0.0032613307, -0.019567984, -0.0059247507, -0.001222999, 0.0032613307, 0.004891996, -0.029351976, -0.0088871261, 0.0021198649, -0.0056529732, -0.0084794598, 0.050876759, 0.015404352, 0.00050958292, -0.0013588878, -0.0020383317, 0.01222999, 0.0037029692, 0.00088358367, -0.0023562231, -0.0035343347, 0.021206008, 0.006420708, -0.0014137339, 0.003769957, 0.0056549355, -0.033929613, -0.010273133, -0.0021206008, 0.0056549355, 0.0084824032, -0.050894419, -0.015409699, 0.0036757081, -0.0098018882, -0.014702832, 0.088216994, 0.026710145, 0.00088358367, -0.0023562231, -0.0035343347, 0.021206008, 0.006420708, 0.00047646923, -0.0012705846, -0.0019058769, 0.011435261, 0.0034623431, -0.00076235077, 0.0020329354, 0.0030494031, -0.018296418, -0.0055397489, -0.0011435261, 0.0030494031, 0.0045741046, -0.027444628, -0.0083096233, 0.001982112, -0.005285632, -0.007928448, 0.047570688, 0.014403347, 0.00047646923, -0.0012705846, -0.0019058769, 0.011435261, 0.0034623431, 5.4039705e-05, -0.00014410588, -0.00021615882, 0.0012969529, 0.00039268852, -8.6463528e-05, 0.00023056941, 0.00034585411, -0.0020751247, -0.00062830164, -0.00012969529, 0.00034585411, 0.00051878117, -0.003112687, -0.00094245245, 0.00022480517, -0.00059948046, -0.00089922069, 0.0053953241, 0.0016335843, 5.4039705e-05, -0.00014410588, -0.00021615882, 0.0012969529, 0.00039268852, + 4.4178736e-05, -0.00021719873, 0.00018314094, 0.00039198588, -8.8357473e-06, -7.0685978e-05, 0.00034751797, -0.00029302551, -0.00062717741, 1.4137196e-05, -0.00010602897, 0.00052127696, -0.00043953826, -0.00094076611, 2.1205793e-05, 0.00018378354, -0.00090354673, 0.00076186632, 0.0016306613, -3.6756709e-05, 4.4178736e-05, -0.00021719873, 0.00018314094, 0.00039198588, -8.8357473e-06, -0.00019463237, 0.00095688348, -0.00080683962, -0.0017269199, 3.8926473e-05, 0.00031141178, -0.0015310136, 0.0012909434, 0.0027630718, -6.2282357e-05, 0.00046711768, -0.0022965204, 0.0019364151, 0.0041446077, -9.3423535e-05, -0.00080967064, 0.0039806353, -0.0033564528, -0.0071839868, 0.00016193413, -0.00019463237, 0.00095688348, -0.00080683962, -0.0017269199, 3.8926473e-05, -0.00033747987, 0.0016591738, -0.0013990075, -0.0029943669, 6.7495975e-05, 0.0005399678, -0.002654678, 0.002238412, 0.004790987, -0.00010799356, 0.0008099517, -0.0039820171, 0.0033576179, 0.0071864805, -0.00016199034, -0.0014039163, 0.0069021629, -0.0058198711, -0.012456566, 0.00028078325, -0.00033747987, 0.0016591738, -0.0013990075, -0.0029943669, 6.7495975e-05, -0.00018198477, 0.00089470333, -0.00075440961, -0.0016147013, 3.6396955e-05, 0.00029117564, -0.0014315253, 0.0012070554, 0.002583522, -5.8235128e-05, 0.00043676346, -0.002147288, 0.0018105831, 0.0038752831, -8.7352692e-05, -0.00075705666, 0.0037219658, -0.003138344, -0.0067171573, 0.00015141133, -0.00018198477, 0.00089470333, -0.00075440961, -0.0016147013, 3.6396955e-05, -2.0640165e-05, 0.00010147456, -8.5562866e-05, -0.00018313456, 4.128033e-06, 3.3024264e-05, -0.00016235929, 0.00013690059, 0.00029301529, -6.6048528e-06, 4.9536396e-05, -0.00024353894, 0.00020535088, 0.00043952293, -9.9072792e-06, -8.5863087e-05, 0.00042213416, -0.00035594152, -0.00076183975, 1.7172617e-05, -2.0640165e-05, 0.00010147456, -8.5562866e-05, -0.00018313456, 4.128033e-06, + -0.00051407984, 0.00082252775, 0.0012337916, -0.0021385721, -0.00051407984, 0.00082252775, -0.0013160444, -0.0019740666, 0.0034217154, 0.00082252775, 0.0012337916, -0.0019740666, -0.0029610999, 0.0051325731, 0.0012337916, -0.0021385721, 0.0034217154, 0.0051325731, -0.0088964601, -0.0021385721, -0.00051407984, 0.00082252775, 0.0012337916, -0.0021385721, -0.00051407984, 0.002264813, -0.0036237008, -0.0054355511, 0.009421622, 0.002264813, -0.0036237008, 0.0057979212, 0.0086968818, -0.015074595, -0.0036237008, -0.0054355511, 0.0086968818, 0.013045323, -0.022611893, -0.0054355511, 0.009421622, -0.015074595, -0.022611893, 0.039193947, 0.009421622, 0.002264813, -0.0036237008, -0.0054355511, 0.009421622, 0.002264813, 0.0039270385, -0.0062832616, -0.0094248925, 0.01633648, 0.0039270385, -0.0062832616, 0.010053219, 0.015079828, -0.026138368, -0.0062832616, -0.0094248925, 0.015079828, 0.022619742, -0.039207553, -0.0094248925, 0.01633648, -0.026138368, -0.039207553, 0.067959758, 0.01633648, 0.0039270385, -0.0062832616, -0.0094248925, 0.01633648, 0.0039270385, 0.002117641, -0.0033882256, -0.0050823384, 0.0088093866, 0.002117641, -0.0033882256, 0.005421161, 0.0081317415, -0.014095019, -0.0033882256, -0.0050823384, 0.0081317415, 0.012197612, -0.021142528, -0.0050823384, 0.0088093866, -0.014095019, -0.021142528, 0.036647048, 0.0088093866, 0.002117641, -0.0033882256, -0.0050823384, 0.0088093866, 0.002117641, 0.00024017647, -0.00038428235, -0.00057642352, 0.0009991341, 0.00024017647, -0.00038428235, 0.00061485175, 0.00092227763, -0.0015986146, -0.00038428235, -0.00057642352, 0.00092227763, 0.0013834164, -0.0023979218, -0.00057642352, 0.0009991341, -0.0015986146, -0.0023979218, 0.0041563979, 0.0009991341, 0.00024017647, -0.00038428235, -0.00057642352, 0.0009991341, 0.00024017647, + 0.01028579, 0.013780005, -0.014764291, 0.0019685722, 0.00024607152, 0.013780005, 0.018461251, -0.019779912, 0.0026373216, 0.0003296652, -0.014764291, -0.019779912, 0.021192763, -0.0028257017, -0.00035321271, 0.0019685722, 0.0026373216, -0.0028257017, 0.00037676022, 4.7095028e-05, 0.00024607152, 0.0003296652, -0.00035321271, 4.7095028e-05, 5.8868785e-06, -0.027428772, -0.03674668, 0.039371443, -0.0052495258, -0.00065619072, -0.03674668, -0.049230003, 0.052746431, -0.0070328575, -0.00087910719, 0.039371443, 0.052746431, -0.056514034, 0.0075352045, 0.00094190056, -0.0052495258, -0.0070328575, 0.0075352045, -0.0010046939, -0.00012558674, -0.00065619072, -0.00087910719, 0.00094190056, -0.00012558674, -1.5698343e-05, -0.041143158, -0.055120021, 0.059057165, -0.0078742887, -0.00098428608, -0.055120021, -0.073845004, 0.079119647, -0.010549286, -0.0013186608, 0.059057165, 0.079119647, -0.08477105, 0.011302807, 0.0014128508, -0.0078742887, -0.010549286, 0.011302807, -0.0015070409, -0.00018838011, -0.00098428608, -0.0013186608, 0.0014128508, -0.00018838011, -2.3547514e-05, 0.24685895, 0.33072012, -0.35434299, 0.047245732, 0.0059057165, 0.33072012, 0.44307002, -0.47471788, 0.063295718, 0.0079119647, -0.35434299, -0.47471788, 0.5086263, -0.06781684, -0.008477105, 0.047245732, 0.063295718, -0.06781684, 0.0090422454, 0.0011302807, 0.0059057165, 0.0079119647, -0.008477105, 0.0011302807, 0.00014128508, 0.074743404, 0.1001347, -0.10728718, 0.014304958, 0.0017881197, 0.1001347, 0.13415176, -0.14373403, 0.019164537, 0.0023955671, -0.10728718, -0.14373403, 0.15400074, -0.020533432, -0.002566679, 0.014304958, 0.019164537, -0.020533432, 0.002737791, 0.00034222387, 0.0017881197, 0.0023955671, -0.002566679, 0.00034222387, 4.2777984e-05, + -0.00096698418, 0.0042601132, 0.0073867595, 0.0039832827, 0.00045177193, -0.0012954812, 0.0057073287, 0.0098961371, 0.0053364554, 0.0006052447, 0.0013880156, -0.006114995, -0.010603004, -0.0057176307, -0.00064847646, -0.00018506874, 0.00081533267, 0.0014137339, 0.00076235077, 8.6463528e-05, -2.3133593e-05, 0.00010191658, 0.00017671673, 9.5293846e-05, 1.0807941e-05, 0.0025786245, -0.011360302, -0.019698025, -0.010622087, -0.0012047252, 0.0034546165, -0.015219543, -0.026389699, -0.014230548, -0.0016139859, -0.0037013749, 0.016306653, 0.028274677, 0.015247015, 0.0017292706, 0.00049351665, -0.0021742205, -0.003769957, -0.0020329354, -0.00023056941, 6.1689581e-05, -0.00027177756, -0.00047124462, -0.00025411692, -2.8821176e-05, 0.0038679367, -0.017040453, -0.029547038, -0.015933131, -0.0018070877, 0.0051819248, -0.022829315, -0.039584548, -0.021345821, -0.0024209788, -0.0055520623, 0.02445998, 0.042412016, 0.022870523, 0.0025939058, 0.00074027497, -0.0032613307, -0.0056549355, -0.0030494031, -0.00034585411, 9.2534371e-05, -0.00040766634, -0.00070686694, -0.00038117538, -4.3231764e-05, -0.02320762, 0.10224272, 0.17728223, 0.095598786, 0.010842526, -0.031091549, 0.13697589, 0.23750729, 0.12807493, 0.014525873, 0.033312374, -0.14675988, -0.2544721, -0.13722314, -0.015563435, -0.0044416498, 0.019567984, 0.033929613, 0.018296418, 0.0020751247, -0.00055520623, 0.002445998, 0.0042412016, 0.0022870523, 0.00025939058, -0.0070267517, 0.030956823, 0.053677119, 0.028945188, 0.003282876, -0.00941383, 0.041473255, 0.07191193, 0.038778242, 0.0043981115, 0.010086246, -0.044435631, -0.077048496, -0.041548117, -0.0047122623, -0.0013448329, 0.0059247507, 0.010273133, 0.0055397489, 0.00062830164, -0.00016810411, 0.00074059384, 0.0012841416, 0.00069246861, 7.8537705e-05, + 0.00027683046, -0.00073821456, -0.0011073218, 0.0066439311, 0.0020116347, 0.00037087335, -0.00098899559, -0.0014834934, 0.0089009603, 0.002695013, -0.0003973643, 0.0010596381, 0.0015894572, -0.0095367432, -0.0028875139, 5.2981906e-05, -0.00014128508, -0.00021192763, 0.0012715658, 0.00038500185, 6.6227383e-06, -1.7660635e-05, -2.6490953e-05, 0.00015894572, 4.8125232e-05, -0.00073821456, 0.0019685722, 0.0029528583, -0.01771715, -0.0053643592, -0.00098899559, 0.0026373216, 0.0039559823, -0.023735894, -0.0071867013, 0.0010596381, -0.0028257017, -0.0042385525, 0.025431315, 0.0077000371, -0.00014128508, 0.00037676022, 0.00056514034, -0.003390842, -0.0010266716, -1.7660635e-05, 4.7095028e-05, 7.0642542e-05, -0.00042385525, -0.00012833395, -0.0011073218, 0.0029528583, 0.0044292874, -0.026575724, -0.0080465387, -0.0014834934, 0.0039559823, 0.0059339735, -0.035603841, -0.010780052, 0.0015894572, -0.0042385525, -0.0063578288, 0.038146973, 0.011550056, -0.00021192763, 0.00056514034, 0.0008477105, -0.005086263, -0.0015400074, -2.6490953e-05, 7.0642542e-05, 0.00010596381, -0.00063578288, -0.00019250093, 0.0066439311, -0.01771715, -0.026575724, 0.15945435, 0.048279232, 0.0089009603, -0.023735894, -0.035603841, 0.21362305, 0.064680311, -0.0095367432, 0.025431315, 0.038146973, -0.22888184, -0.069300334, 0.0012715658, -0.003390842, -0.005086263, 0.030517578, 0.0092400445, 0.00015894572, -0.00042385525, -0.00063578288, 0.0038146973, 0.0011550056, 0.0020116347, -0.0053643592, -0.0080465387, 0.048279232, 0.014617879, 0.002695013, -0.0071867013, -0.010780052, 0.064680311, 0.019583761, -0.0028875139, 0.0077000371, 0.011550056, -0.069300334, -0.020982601, 0.00038500185, -0.0010266716, -0.0015400074, 0.0092400445, 0.0027976801, 4.8125232e-05, -0.00012833395, -0.00019250093, 0.0011550056, 0.00034971002, + -0.00010573386, 0.00051982609, -0.0004383149, -0.00093814767, 2.1146771e-05, -0.00014165301, 0.00069641773, -0.00058721613, -0.0012568486, 2.8330603e-05, 0.00015177109, -0.00074616185, 0.00062916014, 0.0013466235, -3.0354217e-05, -2.0236145e-05, 9.9488247e-05, -8.3888019e-05, -0.00017954979, 4.047229e-06, -2.5295181e-06, 1.2436031e-05, -1.0486002e-05, -2.2443724e-05, 5.0590362e-07, 0.00028195695, -0.0013862029, 0.0011688397, 0.0025017271, -5.639139e-05, 0.00037774137, -0.0018571139, 0.0015659097, 0.0033515962, -7.5548274e-05, -0.0004047229, 0.0019897649, -0.0016777604, -0.0035909959, 8.0944579e-05, 5.3963053e-05, -0.00026530199, 0.00022370138, 0.00047879945, -1.0792611e-05, 6.7453816e-06, -3.3162749e-05, 2.7962673e-05, 5.9849931e-05, -1.3490763e-06, 0.00042293543, -0.0020793044, 0.0017532596, 0.0037525907, -8.4587085e-05, 0.00056661206, -0.0027856709, 0.0023488645, 0.0050273942, -0.00011332241, -0.00060708434, 0.0029846474, -0.0025166406, -0.0053864938, 0.00012141687, 8.0944579e-05, -0.00039795299, 0.00033555207, 0.00071819918, -1.6188916e-05, 1.0118072e-05, -4.9744123e-05, 4.1944009e-05, 8.9774897e-05, -2.0236145e-06, -0.0025376126, 0.012475826, -0.010519558, -0.022515544, 0.00050752251, -0.0033996723, 0.016714025, -0.014093187, -0.030164365, 0.00067993447, 0.0036425061, -0.017907884, 0.015099843, 0.032318963, -0.00072850121, -0.00048566748, 0.0023877179, -0.0020133124, -0.0043091951, 9.7133495e-05, -6.0708434e-05, 0.00029846474, -0.00025166406, -0.00053864938, 1.2141687e-05, -0.00076833269, 0.0037774029, -0.0031850883, -0.0068172064, 0.00015366654, -0.0010293452, 0.0050606355, -0.0042671039, -0.0091330995, 0.00020586905, 0.0011028699, -0.0054221094, 0.004571897, 0.0097854638, -0.00022057398, -0.00014704932, 0.00072294793, -0.00060958627, -0.0013047285, 2.9409864e-05, -1.8381165e-05, 9.0368491e-05, -7.6198284e-05, -0.00016309106, 3.676233e-06, + 0.0012303576, -0.0019685722, -0.0029528583, 0.0051182876, 0.0012303576, 0.001648326, -0.0026373216, -0.0039559823, 0.0068570361, 0.001648326, -0.0017660635, 0.0028257017, 0.0042385525, -0.0073468244, -0.0017660635, 0.00023547514, -0.00037676022, -0.00056514034, 0.00097957658, 0.00023547514, 2.9434392e-05, -4.7095028e-05, -7.0642542e-05, 0.00012244707, 2.9434392e-05, -0.0032809536, 0.0052495258, 0.0078742887, -0.013648767, -0.0032809536, -0.0043955359, 0.0070328575, 0.010549286, -0.01828543, -0.0043955359, 0.0047095028, -0.0075352045, -0.011302807, 0.019591532, 0.0047095028, -0.00062793371, 0.0010046939, 0.0015070409, -0.0026122042, -0.00062793371, -7.8491713e-05, 0.00012558674, 0.00018838011, -0.00032652553, -7.8491713e-05, -0.0049214304, 0.0078742887, 0.011811433, -0.020473151, -0.0049214304, -0.0065933039, 0.010549286, 0.015823929, -0.027428144, -0.0065933039, 0.0070642542, -0.011302807, -0.01695421, 0.029387297, 0.0070642542, -0.00094190056, 0.0015070409, 0.0022605613, -0.0039183063, -0.00094190056, -0.00011773757, 0.00018838011, 0.00028257017, -0.00048978829, -0.00011773757, 0.029528583, -0.047245732, -0.070868598, 0.1228389, 0.029528583, 0.039559823, -0.063295718, -0.094943576, 0.16456887, 0.039559823, -0.042385525, 0.06781684, 0.10172526, -0.17632378, -0.042385525, 0.0056514034, -0.0090422454, -0.013563368, 0.023509838, 0.0056514034, 0.00070642542, -0.0011302807, -0.001695421, 0.0029387297, 0.00070642542, 0.0089405986, -0.014304958, -0.021457437, 0.03719289, 0.0089405986, 0.011977835, -0.019164537, -0.028746805, 0.049827795, 0.011977835, -0.012833395, 0.020533432, 0.030800148, -0.053386924, -0.012833395, 0.0017111193, -0.002737791, -0.0041066864, 0.0071182565, 0.0017111193, 0.00021388992, -0.00034222387, -0.0005133358, 0.00088978206, 0.00021388992, + -0.00096698418, -0.0012954812, 0.0013880156, -0.00018506874, -2.3133593e-05, 0.0042601132, 0.0057073287, -0.006114995, 0.00081533267, 0.00010191658, 0.0073867595, 0.0098961371, -0.010603004, 0.0014137339, 0.00017671673, 0.0039832827, 0.0053364554, -0.0057176307, 0.00076235077, 9.5293846e-05, 0.00045177193, 0.0006052447, -0.00064847646, 8.6463528e-05, 1.0807941e-05, 0.0025786245, 0.0034546165, -0.0037013749, 0.00049351665, 6.1689581e-05, -0.011360302, -0.015219543, 0.016306653, -0.0021742205, -0.00027177756, -0.019698025, -0.026389699, 0.028274677, -0.003769957, -0.00047124462, -0.010622087, -0.014230548, 0.015247015, -0.0020329354, -0.00025411692, -0.0012047252, -0.0016139859, 0.0017292706, -0.00023056941, -2.8821176e-05, 0.0038679367, 0.0051819248, -0.0055520623, 0.00074027497, 9.2534371e-05, -0.017040453, -0.022829315, 0.02445998, -0.0032613307, -0.00040766634, -0.029547038, -0.039584548, 0.042412016, -0.0056549355, -0.00070686694, -0.015933131, -0.021345821, 0.022870523, -0.0030494031, -0.00038117538, -0.0018070877, -0.0024209788, 0.0025939058, -0.00034585411, -4.3231764e-05, -0.02320762, -0.031091549, 0.033312374, -0.0044416498, -0.00055520623, 0.10224272, 0.13697589, -0.14675988, 0.019567984, 0.002445998, 0.17728223, 0.23750729, -0.2544721, 0.033929613, 0.0042412016, 0.095598786, 0.12807493, -0.13722314, 0.018296418, 0.0022870523, 0.010842526, 0.014525873, -0.015563435, 0.0020751247, 0.00025939058, -0.0070267517, -0.00941383, 0.010086246, -0.0013448329, -0.00016810411, 0.030956823, 0.041473255, -0.044435631, 0.0059247507, 0.00074059384, 0.053677119, 0.07191193, -0.077048496, 0.010273133, 0.0012841416, 0.028945188, 0.038778242, -0.041548117, 0.0055397489, 0.00069246861, 0.003282876, 0.0043981115, -0.0047122623, 0.00062830164, 7.8537705e-05, + 9.0907791e-05, -0.00040050033, -0.00069444154, -0.00037447503, -4.2471831e-05, -0.00040050033, 0.0017644309, 0.0030594085, 0.0016497747, 0.00018711248, -0.00069444154, 0.0030594085, 0.0053048155, 0.0028606021, 0.00032444088, -0.00037447503, 0.0016497747, 0.0028606021, 0.0015425691, 0.00017495354, -4.2471831e-05, 0.00018711248, 0.00032444088, 0.00017495354, 1.9842704e-05, -0.00024242077, 0.0010680009, 0.0018518441, 0.00099860009, 0.00011325821, 0.0010680009, -0.004705149, -0.0081584225, -0.0043993992, -0.00049896661, 0.0018518441, -0.0081584225, -0.014146175, -0.0076282723, -0.00086517568, 0.00099860009, -0.0043993992, -0.0076282723, -0.0041135177, -0.00046654279, 0.00011325821, -0.00049896661, -0.00086517568, -0.00046654279, -5.2913878e-05, -0.00036363116, 0.0016020013, 0.0027777662, 0.0014979001, 0.00016988732, 0.0016020013, -0.0070577234, -0.012237634, -0.0065990988, -0.00074844991, 0.0027777662, -0.012237634, -0.021219262, -0.011442409, -0.0012977635, 0.0014979001, -0.0065990988, -0.011442409, -0.0061702765, -0.00069981418, 0.00016988732, -0.00074844991, -0.0012977635, -0.00069981418, -7.9370817e-05, 0.002181787, -0.0096120078, -0.016666597, -0.0089874008, -0.0010193239, -0.0096120078, 0.042346341, 0.073425803, 0.039594593, 0.0044906995, -0.016666597, 0.073425803, 0.12731557, 0.068654451, 0.0077865811, -0.0089874008, 0.039594593, 0.068654451, 0.037021659, 0.0041988851, -0.0010193239, 0.0044906995, 0.0077865811, 0.0041988851, 0.0004762249, 0.00066059661, -0.0029103024, -0.0050462752, -0.0027211852, -0.00030862864, -0.0029103024, 0.012821531, 0.022231701, 0.011988363, 0.001359684, -0.0050462752, 0.022231701, 0.038548326, 0.020787042, 0.0023576037, -0.0027211852, 0.011988363, 0.020787042, 0.011209336, 0.0012713291, -0.00030862864, 0.001359684, 0.0023576037, 0.0012713291, 0.00014419032, + -2.6025292e-05, 6.9400779e-05, 0.00010410117, -0.00062460701, -0.00018911712, 0.00011465616, -0.00030574975, -0.00045862463, 0.0027517478, 0.00083316807, 0.00019880633, -0.0005301502, -0.0007952253, 0.0047713518, 0.0014446593, 0.00010720558, -0.00028588154, -0.00042882231, 0.0025729338, 0.00077902719, 1.2158934e-05, -3.2423823e-05, -4.8635734e-05, 0.00029181441, 8.8354918e-05, 6.9400779e-05, -0.00018506874, -0.00027760311, 0.0016656187, 0.00050431232, -0.00030574975, 0.00081533267, 0.001222999, -0.007337994, -0.0022217815, -0.0005301502, 0.0014137339, 0.0021206008, -0.012723605, -0.0038524248, -0.00028588154, 0.00076235077, 0.0011435261, -0.0068611569, -0.0020774058, -3.2423823e-05, 8.6463528e-05, 0.00012969529, -0.00077817175, -0.00023561311, 0.00010410117, -0.00027760311, -0.00041640467, 0.002498428, 0.00075646849, -0.00045862463, 0.001222999, 0.0018344985, -0.011006991, -0.0033326723, -0.0007952253, 0.0021206008, 0.0031809012, -0.019085407, -0.0057786372, -0.00042882231, 0.0011435261, 0.0017152892, -0.010291735, -0.0031161088, -4.8635734e-05, 0.00012969529, 0.00019454294, -0.0011672576, -0.00035341967, -0.00062460701, 0.0016656187, 0.002498428, -0.014990568, -0.0045388109, 0.0027517478, -0.007337994, -0.011006991, 0.066041946, 0.019996034, 0.0047713518, -0.012723605, -0.019085407, 0.11451244, 0.034671823, 0.0025729338, -0.0068611569, -0.010291735, 0.061750412, 0.018696653, 0.00029181441, -0.00077817175, -0.0011672576, 0.0070035458, 0.002120518, -0.00018911712, 0.00050431232, 0.00075646849, -0.0045388109, -0.0013742511, 0.00083316807, -0.0022217815, -0.0033326723, 0.019996034, 0.0060543547, 0.0014446593, -0.0038524248, -0.0057786372, 0.034671823, 0.010497858, 0.00077902719, -0.0020774058, -0.0031161088, 0.018696653, 0.0056609309, 8.8354918e-05, -0.00023561311, -0.00035341967, 0.002120518, 0.00064204573, + 9.9402157e-06, -4.8869715e-05, 4.1206712e-05, 8.8196823e-05, -1.9880431e-06, -4.3792282e-05, 0.00021529878, -0.00018153892, -0.00038855698, 8.7584564e-06, -7.5932972e-05, 0.0003733141, -0.00031477668, -0.00067373255, 1.5186594e-05, -4.0946574e-05, 0.00020130825, -0.00016974216, -0.00036330779, 8.1893149e-06, -4.6440371e-06, 2.2831775e-05, -1.9251645e-05, -4.1205275e-05, 9.2880743e-07, -2.6507242e-05, 0.00013031924, -0.00010988457, -0.00023519153, 5.3014484e-06, 0.00011677942, -0.00057413009, 0.00048410377, 0.0010361519, -2.3355884e-05, 0.00020248792, -0.00099550427, 0.00083940449, 0.0017966201, -4.0497585e-05, 0.00010919086, -0.000536822, 0.00045264577, 0.00096882076, -2.1838173e-05, 1.2384099e-05, -6.0884734e-05, 5.133772e-05, 0.00010988073, -2.4768198e-06, -3.9760863e-05, 0.00019547886, -0.00016482685, -0.00035278729, 7.9521725e-06, 0.00017516913, -0.00086119513, 0.00072615566, 0.0015542279, -3.5033826e-05, 0.00030373189, -0.0014932564, 0.0012591067, 0.0026949302, -6.0746377e-05, 0.0001637863, -0.000805233, 0.00067896865, 0.0014532311, -3.2757259e-05, 1.8576149e-05, -9.1327101e-05, 7.700658e-05, 0.0001648211, -3.7152297e-06, 0.00023856518, -0.0011728732, 0.00098896109, 0.0021167237, -4.7713035e-05, -0.0010510148, 0.0051671708, -0.004356934, -0.0093253674, 0.00021020295, -0.0018223913, 0.0089595384, -0.0075546404, -0.016169581, 0.00036447826, -0.00098271778, 0.004831398, -0.0040738119, -0.0087193869, 0.00019654356, -0.00011145689, 0.00054796261, -0.00046203948, -0.0009889266, 2.2291378e-05, 7.2232234e-05, -0.00035511993, 0.00029943544, 0.00064089691, -1.4446447e-05, -0.00031822392, 0.0015645045, -0.0013191828, -0.002823514, 6.3644783e-05, -0.00055177959, 0.0027127491, -0.0022873772, -0.0048957898, 0.00011035592, -0.00029754511, 0.0014628399, -0.0012334597, -0.0026400366, 5.9509021e-05, -3.374667e-05, 0.0001659109, -0.00013989529, -0.000299425, 6.749334e-06, + -0.00011566796, 0.00018506874, 0.00027760311, -0.00048117873, -0.00011566796, 0.00050958292, -0.00081533267, -0.001222999, 0.0021198649, 0.00050958292, 0.00088358367, -0.0014137339, -0.0021206008, 0.0036757081, 0.00088358367, 0.00047646923, -0.00076235077, -0.0011435261, 0.001982112, 0.00047646923, 5.4039705e-05, -8.6463528e-05, -0.00012969529, 0.00022480517, 5.4039705e-05, 0.0003084479, -0.00049351665, -0.00074027497, 0.0012831433, 0.0003084479, -0.0013588878, 0.0021742205, 0.0032613307, -0.0056529732, -0.0013588878, -0.0023562231, 0.003769957, 0.0056549355, -0.0098018882, -0.0023562231, -0.0012705846, 0.0020329354, 0.0030494031, -0.005285632, -0.0012705846, -0.00014410588, 0.00023056941, 0.00034585411, -0.00059948046, -0.00014410588, 0.00046267186, -0.00074027497, -0.0011104125, 0.0019247149, 0.00046267186, -0.0020383317, 0.0032613307, 0.004891996, -0.0084794598, -0.0020383317, -0.0035343347, 0.0056549355, 0.0084824032, -0.014702832, -0.0035343347, -0.0019058769, 0.0030494031, 0.0045741046, -0.007928448, -0.0019058769, -0.00021615882, 0.00034585411, 0.00051878117, -0.00089922069, -0.00021615882, -0.0027760311, 0.0044416498, 0.0066624747, -0.01154829, -0.0027760311, 0.01222999, -0.019567984, -0.029351976, 0.050876759, 0.01222999, 0.021206008, -0.033929613, -0.050894419, 0.088216994, 0.021206008, 0.011435261, -0.018296418, -0.027444628, 0.047570688, 0.011435261, 0.0012969529, -0.0020751247, -0.003112687, 0.0053953241, 0.0012969529, -0.00084052054, 0.0013448329, 0.0020172493, -0.0034965654, -0.00084052054, 0.0037029692, -0.0059247507, -0.0088871261, 0.015404352, 0.0037029692, 0.006420708, -0.010273133, -0.015409699, 0.026710145, 0.006420708, 0.0034623431, -0.0055397489, -0.0083096233, 0.014403347, 0.0034623431, 0.00039268852, -0.00062830164, -0.00094245245, 0.0016335843, 0.00039268852, + 0.00027683046, 0.00037087335, -0.0003973643, 5.2981906e-05, 6.6227383e-06, -0.00073821456, -0.00098899559, 0.0010596381, -0.00014128508, -1.7660635e-05, -0.0011073218, -0.0014834934, 0.0015894572, -0.00021192763, -2.6490953e-05, 0.0066439311, 0.0089009603, -0.0095367432, 0.0012715658, 0.00015894572, 0.0020116347, 0.002695013, -0.0028875139, 0.00038500185, 4.8125232e-05, -0.00073821456, -0.00098899559, 0.0010596381, -0.00014128508, -1.7660635e-05, 0.0019685722, 0.0026373216, -0.0028257017, 0.00037676022, 4.7095028e-05, 0.0029528583, 0.0039559823, -0.0042385525, 0.00056514034, 7.0642542e-05, -0.01771715, -0.023735894, 0.025431315, -0.003390842, -0.00042385525, -0.0053643592, -0.0071867013, 0.0077000371, -0.0010266716, -0.00012833395, -0.0011073218, -0.0014834934, 0.0015894572, -0.00021192763, -2.6490953e-05, 0.0029528583, 0.0039559823, -0.0042385525, 0.00056514034, 7.0642542e-05, 0.0044292874, 0.0059339735, -0.0063578288, 0.0008477105, 0.00010596381, -0.026575724, -0.035603841, 0.038146973, -0.005086263, -0.00063578288, -0.0080465387, -0.010780052, 0.011550056, -0.0015400074, -0.00019250093, 0.0066439311, 0.0089009603, -0.0095367432, 0.0012715658, 0.00015894572, -0.01771715, -0.023735894, 0.025431315, -0.003390842, -0.00042385525, -0.026575724, -0.035603841, 0.038146973, -0.005086263, -0.00063578288, 0.15945435, 0.21362305, -0.22888184, 0.030517578, 0.0038146973, 0.048279232, 0.064680311, -0.069300334, 0.0092400445, 0.0011550056, 0.0020116347, 0.002695013, -0.0028875139, 0.00038500185, 4.8125232e-05, -0.0053643592, -0.0071867013, 0.0077000371, -0.0010266716, -0.00012833395, -0.0080465387, -0.010780052, 0.011550056, -0.0015400074, -0.00019250093, 0.048279232, 0.064680311, -0.069300334, 0.0092400445, 0.0011550056, 0.014617879, 0.019583761, -0.020982601, 0.0027976801, 0.00034971002, + -2.6025292e-05, 0.00011465616, 0.00019880633, 0.00010720558, 1.2158934e-05, 6.9400779e-05, -0.00030574975, -0.0005301502, -0.00028588154, -3.2423823e-05, 0.00010410117, -0.00045862463, -0.0007952253, -0.00042882231, -4.8635734e-05, -0.00062460701, 0.0027517478, 0.0047713518, 0.0025729338, 0.00029181441, -0.00018911712, 0.00083316807, 0.0014446593, 0.00077902719, 8.8354918e-05, 6.9400779e-05, -0.00030574975, -0.0005301502, -0.00028588154, -3.2423823e-05, -0.00018506874, 0.00081533267, 0.0014137339, 0.00076235077, 8.6463528e-05, -0.00027760311, 0.001222999, 0.0021206008, 0.0011435261, 0.00012969529, 0.0016656187, -0.007337994, -0.012723605, -0.0068611569, -0.00077817175, 0.00050431232, -0.0022217815, -0.0038524248, -0.0020774058, -0.00023561311, 0.00010410117, -0.00045862463, -0.0007952253, -0.00042882231, -4.8635734e-05, -0.00027760311, 0.001222999, 0.0021206008, 0.0011435261, 0.00012969529, -0.00041640467, 0.0018344985, 0.0031809012, 0.0017152892, 0.00019454294, 0.002498428, -0.011006991, -0.019085407, -0.010291735, -0.0011672576, 0.00075646849, -0.0033326723, -0.0057786372, -0.0031161088, -0.00035341967, -0.00062460701, 0.0027517478, 0.0047713518, 0.0025729338, 0.00029181441, 0.0016656187, -0.007337994, -0.012723605, -0.0068611569, -0.00077817175, 0.002498428, -0.011006991, -0.019085407, -0.010291735, -0.0011672576, -0.014990568, 0.066041946, 0.11451244, 0.061750412, 0.0070035458, -0.0045388109, 0.019996034, 0.034671823, 0.018696653, 0.002120518, -0.00018911712, 0.00083316807, 0.0014446593, 0.00077902719, 8.8354918e-05, 0.00050431232, -0.0022217815, -0.0038524248, -0.0020774058, -0.00023561311, 0.00075646849, -0.0033326723, -0.0057786372, -0.0031161088, -0.00035341967, -0.0045388109, 0.019996034, 0.034671823, 0.018696653, 0.002120518, -0.0013742511, 0.0060543547, 0.010497858, 0.0056609309, 0.00064204573, + 7.4505806e-06, -1.9868215e-05, -2.9802322e-05, 0.00017881393, 5.4140886e-05, -1.9868215e-05, 5.2981906e-05, 7.947286e-05, -0.00047683716, -0.0001443757, -2.9802322e-05, 7.947286e-05, 0.00011920929, -0.00071525574, -0.00021656354, 0.00017881393, -0.00047683716, -0.00071525574, 0.0042915344, 0.0012993813, 5.4140886e-05, -0.0001443757, -0.00021656354, 0.0012993813, 0.00039342377, -1.9868215e-05, 5.2981906e-05, 7.947286e-05, -0.00047683716, -0.0001443757, 5.2981906e-05, -0.00014128508, -0.00021192763, 0.0012715658, 0.00038500185, 7.947286e-05, -0.00021192763, -0.00031789144, 0.0019073486, 0.00057750278, -0.00047683716, 0.0012715658, 0.0019073486, -0.011444092, -0.0034650167, -0.0001443757, 0.00038500185, 0.00057750278, -0.0034650167, -0.0010491301, -2.9802322e-05, 7.947286e-05, 0.00011920929, -0.00071525574, -0.00021656354, 7.947286e-05, -0.00021192763, -0.00031789144, 0.0019073486, 0.00057750278, 0.00011920929, -0.00031789144, -0.00047683716, 0.0028610229, 0.00086625417, -0.00071525574, 0.0019073486, 0.0028610229, -0.017166138, -0.005197525, -0.00021656354, 0.00057750278, 0.00086625417, -0.005197525, -0.0015736951, 0.00017881393, -0.00047683716, -0.00071525574, 0.0042915344, 0.0012993813, -0.00047683716, 0.0012715658, 0.0019073486, -0.011444092, -0.0034650167, -0.00071525574, 0.0019073486, 0.0028610229, -0.017166138, -0.005197525, 0.0042915344, -0.011444092, -0.017166138, 0.10299683, 0.03118515, 0.0012993813, -0.0034650167, -0.005197525, 0.03118515, 0.0094421705, 5.4140886e-05, -0.0001443757, -0.00021656354, 0.0012993813, 0.00039342377, -0.0001443757, 0.00038500185, 0.00057750278, -0.0034650167, -0.0010491301, -0.00021656354, 0.00057750278, 0.00086625417, -0.005197525, -0.0015736951, 0.0012993813, -0.0034650167, -0.005197525, 0.03118515, 0.0094421705, 0.00039342377, -0.0010491301, -0.0015736951, 0.0094421705, 0.0028588794, + -2.8457079e-06, 1.3990535e-05, -1.1796753e-05, -2.524919e-05, 5.6914157e-07, 7.5885543e-06, -3.7308092e-05, 3.1458007e-05, 6.7331173e-05, -1.5177109e-06, 1.1382831e-05, -5.5962139e-05, 4.718701e-05, 0.00010099676, -2.2765663e-06, -6.8296989e-05, 0.00033577283, -0.00028312206, -0.00060598056, 1.3659398e-05, -2.067881e-05, 0.00010166455, -8.5723069e-05, -0.00018347745, 4.1357621e-06, 7.5885543e-06, -3.7308092e-05, 3.1458007e-05, 6.7331173e-05, -1.5177109e-06, -2.0236145e-05, 9.9488247e-05, -8.3888019e-05, -0.00017954979, 4.047229e-06, -3.0354217e-05, 0.00014923237, -0.00012583203, -0.00026932469, 6.0708434e-06, 0.0001821253, -0.00089539422, 0.00075499217, 0.0016159481, -3.6425061e-05, 5.5143495e-05, -0.00027110547, 0.00022859485, 0.00048927319, -1.1028699e-05, 1.1382831e-05, -5.5962139e-05, 4.718701e-05, 0.00010099676, -2.2765663e-06, -3.0354217e-05, 0.00014923237, -0.00012583203, -0.00026932469, 6.0708434e-06, -4.5531326e-05, 0.00022384855, -0.00018874804, -0.00040398704, 9.1062652e-06, 0.00027318796, -0.0013430913, 0.0011324883, 0.0024239222, -5.4637591e-05, 8.2715242e-05, -0.00040665821, 0.00034289228, 0.00073390978, -1.6543048e-05, -6.8296989e-05, 0.00033577283, -0.00028312206, -0.00060598056, 1.3659398e-05, 0.0001821253, -0.00089539422, 0.00075499217, 0.0016159481, -3.6425061e-05, 0.00027318796, -0.0013430913, 0.0011324883, 0.0024239222, -5.4637591e-05, -0.0016391277, 0.008058548, -0.0067949295, -0.014543533, 0.00032782555, -0.00049629145, 0.0024399492, -0.0020573537, -0.0044034587, 9.925829e-05, -2.067881e-05, 0.00010166455, -8.5723069e-05, -0.00018347745, 4.1357621e-06, 5.5143495e-05, -0.00027110547, 0.00022859485, 0.00048927319, -1.1028699e-05, 8.2715242e-05, -0.00040665821, 0.00034289228, 0.00073390978, -1.6543048e-05, -0.00049629145, 0.0024399492, -0.0020573537, -0.0044034587, 9.925829e-05, -0.00015026602, 0.00073876241, -0.00062292097, -0.0013332694, 3.0053205e-05, + 3.3113692e-05, -5.2981906e-05, -7.947286e-05, 0.00013775296, 3.3113692e-05, -8.8303177e-05, 0.00014128508, 0.00021192763, -0.00036734122, -8.8303177e-05, -0.00013245477, 0.00021192763, 0.00031789144, -0.00055101183, -0.00013245477, 0.0007947286, -0.0012715658, -0.0019073486, 0.003306071, 0.0007947286, 0.00024062616, -0.00038500185, -0.00057750278, 0.0010010048, 0.00024062616, -8.8303177e-05, 0.00014128508, 0.00021192763, -0.00036734122, -8.8303177e-05, 0.00023547514, -0.00037676022, -0.00056514034, 0.00097957658, 0.00023547514, 0.00035321271, -0.00056514034, -0.0008477105, 0.0014693649, 0.00035321271, -0.0021192763, 0.003390842, 0.005086263, -0.0088161892, -0.0021192763, -0.00064166976, 0.0010266716, 0.0015400074, -0.0026693462, -0.00064166976, -0.00013245477, 0.00021192763, 0.00031789144, -0.00055101183, -0.00013245477, 0.00035321271, -0.00056514034, -0.0008477105, 0.0014693649, 0.00035321271, 0.00052981906, -0.0008477105, -0.0012715658, 0.0022040473, 0.00052981906, -0.0031789144, 0.005086263, 0.0076293945, -0.013224284, -0.0031789144, -0.00096250463, 0.0015400074, 0.0023100111, -0.0040040193, -0.00096250463, 0.0007947286, -0.0012715658, -0.0019073486, 0.003306071, 0.0007947286, -0.0021192763, 0.003390842, 0.005086263, -0.0088161892, -0.0021192763, -0.0031789144, 0.005086263, 0.0076293945, -0.013224284, -0.0031789144, 0.019073486, -0.030517578, -0.045776367, 0.079345703, 0.019073486, 0.0057750278, -0.0092400445, -0.013860067, 0.024024116, 0.0057750278, 0.00024062616, -0.00038500185, -0.00057750278, 0.0010010048, 0.00024062616, -0.00064166976, 0.0010266716, 0.0015400074, -0.0026693462, -0.00064166976, -0.00096250463, 0.0015400074, 0.0023100111, -0.0040040193, -0.00096250463, 0.0057750278, -0.0092400445, -0.013860067, 0.024024116, 0.0057750278, 0.0017485501, -0.0027976801, -0.0041965202, 0.0072739684, 0.0017485501, + -0.00010573386, -0.00014165301, 0.00015177109, -2.0236145e-05, -2.5295181e-06, 0.00051982609, 0.00069641773, -0.00074616185, 9.9488247e-05, 1.2436031e-05, -0.0004383149, -0.00058721613, 0.00062916014, -8.3888019e-05, -1.0486002e-05, -0.00093814767, -0.0012568486, 0.0013466235, -0.00017954979, -2.2443724e-05, 2.1146771e-05, 2.8330603e-05, -3.0354217e-05, 4.047229e-06, 5.0590362e-07, 0.00028195695, 0.00037774137, -0.0004047229, 5.3963053e-05, 6.7453816e-06, -0.0013862029, -0.0018571139, 0.0019897649, -0.00026530199, -3.3162749e-05, 0.0011688397, 0.0015659097, -0.0016777604, 0.00022370138, 2.7962673e-05, 0.0025017271, 0.0033515962, -0.0035909959, 0.00047879945, 5.9849931e-05, -5.639139e-05, -7.5548274e-05, 8.0944579e-05, -1.0792611e-05, -1.3490763e-06, 0.00042293543, 0.00056661206, -0.00060708434, 8.0944579e-05, 1.0118072e-05, -0.0020793044, -0.0027856709, 0.0029846474, -0.00039795299, -4.9744123e-05, 0.0017532596, 0.0023488645, -0.0025166406, 0.00033555207, 4.1944009e-05, 0.0037525907, 0.0050273942, -0.0053864938, 0.00071819918, 8.9774897e-05, -8.4587085e-05, -0.00011332241, 0.00012141687, -1.6188916e-05, -2.0236145e-06, -0.0025376126, -0.0033996723, 0.0036425061, -0.00048566748, -6.0708434e-05, 0.012475826, 0.016714025, -0.017907884, 0.0023877179, 0.00029846474, -0.010519558, -0.014093187, 0.015099843, -0.0020133124, -0.00025166406, -0.022515544, -0.030164365, 0.032318963, -0.0043091951, -0.00053864938, 0.00050752251, 0.00067993447, -0.00072850121, 9.7133495e-05, 1.2141687e-05, -0.00076833269, -0.0010293452, 0.0011028699, -0.00014704932, -1.8381165e-05, 0.0037774029, 0.0050606355, -0.0054221094, 0.00072294793, 9.0368491e-05, -0.0031850883, -0.0042671039, 0.004571897, -0.00060958627, -7.6198284e-05, -0.0068172064, -0.0091330995, 0.0097854638, -0.0013047285, -0.00016309106, 0.00015366654, 0.00020586905, -0.00022057398, 2.9409864e-05, 3.676233e-06, + 9.9402157e-06, -4.3792282e-05, -7.5932972e-05, -4.0946574e-05, -4.6440371e-06, -4.8869715e-05, 0.00021529878, 0.0003733141, 0.00020130825, 2.2831775e-05, 4.1206712e-05, -0.00018153892, -0.00031477668, -0.00016974216, -1.9251645e-05, 8.8196823e-05, -0.00038855698, -0.00067373255, -0.00036330779, -4.1205275e-05, -1.9880431e-06, 8.7584564e-06, 1.5186594e-05, 8.1893149e-06, 9.2880743e-07, -2.6507242e-05, 0.00011677942, 0.00020248792, 0.00010919086, 1.2384099e-05, 0.00013031924, -0.00057413009, -0.00099550427, -0.000536822, -6.0884734e-05, -0.00010988457, 0.00048410377, 0.00083940449, 0.00045264577, 5.133772e-05, -0.00023519153, 0.0010361519, 0.0017966201, 0.00096882076, 0.00010988073, 5.3014484e-06, -2.3355884e-05, -4.0497585e-05, -2.1838173e-05, -2.4768198e-06, -3.9760863e-05, 0.00017516913, 0.00030373189, 0.0001637863, 1.8576149e-05, 0.00019547886, -0.00086119513, -0.0014932564, -0.000805233, -9.1327101e-05, -0.00016482685, 0.00072615566, 0.0012591067, 0.00067896865, 7.700658e-05, -0.00035278729, 0.0015542279, 0.0026949302, 0.0014532311, 0.0001648211, 7.9521725e-06, -3.5033826e-05, -6.0746377e-05, -3.2757259e-05, -3.7152297e-06, 0.00023856518, -0.0010510148, -0.0018223913, -0.00098271778, -0.00011145689, -0.0011728732, 0.0051671708, 0.0089595384, 0.004831398, 0.00054796261, 0.00098896109, -0.004356934, -0.0075546404, -0.0040738119, -0.00046203948, 0.0021167237, -0.0093253674, -0.016169581, -0.0087193869, -0.0009889266, -4.7713035e-05, 0.00021020295, 0.00036447826, 0.00019654356, 2.2291378e-05, 7.2232234e-05, -0.00031822392, -0.00055177959, -0.00029754511, -3.374667e-05, -0.00035511993, 0.0015645045, 0.0027127491, 0.0014628399, 0.0001659109, 0.00029943544, -0.0013191828, -0.0022873772, -0.0012334597, -0.00013989529, 0.00064089691, -0.002823514, -0.0048957898, -0.0026400366, -0.000299425, -1.4446447e-05, 6.3644783e-05, 0.00011035592, 5.9509021e-05, 6.749334e-06, + -2.8457079e-06, 7.5885543e-06, 1.1382831e-05, -6.8296989e-05, -2.067881e-05, 1.3990535e-05, -3.7308092e-05, -5.5962139e-05, 0.00033577283, 0.00010166455, -1.1796753e-05, 3.1458007e-05, 4.718701e-05, -0.00028312206, -8.5723069e-05, -2.524919e-05, 6.7331173e-05, 0.00010099676, -0.00060598056, -0.00018347745, 5.6914157e-07, -1.5177109e-06, -2.2765663e-06, 1.3659398e-05, 4.1357621e-06, 7.5885543e-06, -2.0236145e-05, -3.0354217e-05, 0.0001821253, 5.5143495e-05, -3.7308092e-05, 9.9488247e-05, 0.00014923237, -0.00089539422, -0.00027110547, 3.1458007e-05, -8.3888019e-05, -0.00012583203, 0.00075499217, 0.00022859485, 6.7331173e-05, -0.00017954979, -0.00026932469, 0.0016159481, 0.00048927319, -1.5177109e-06, 4.047229e-06, 6.0708434e-06, -3.6425061e-05, -1.1028699e-05, 1.1382831e-05, -3.0354217e-05, -4.5531326e-05, 0.00027318796, 8.2715242e-05, -5.5962139e-05, 0.00014923237, 0.00022384855, -0.0013430913, -0.00040665821, 4.718701e-05, -0.00012583203, -0.00018874804, 0.0011324883, 0.00034289228, 0.00010099676, -0.00026932469, -0.00040398704, 0.0024239222, 0.00073390978, -2.2765663e-06, 6.0708434e-06, 9.1062652e-06, -5.4637591e-05, -1.6543048e-05, -6.8296989e-05, 0.0001821253, 0.00027318796, -0.0016391277, -0.00049629145, 0.00033577283, -0.00089539422, -0.0013430913, 0.008058548, 0.0024399492, -0.00028312206, 0.00075499217, 0.0011324883, -0.0067949295, -0.0020573537, -0.00060598056, 0.0016159481, 0.0024239222, -0.014543533, -0.0044034587, 1.3659398e-05, -3.6425061e-05, -5.4637591e-05, 0.00032782555, 9.925829e-05, -2.067881e-05, 5.5143495e-05, 8.2715242e-05, -0.00049629145, -0.00015026602, 0.00010166455, -0.00027110547, -0.00040665821, 0.0024399492, 0.00073876241, -8.5723069e-05, 0.00022859485, 0.00034289228, -0.0020573537, -0.00062292097, -0.00018347745, 0.00048927319, 0.00073390978, -0.0044034587, -0.0013332694, 4.1357621e-06, -1.1028699e-05, -1.6543048e-05, 9.925829e-05, 3.0053205e-05, + 1.0869023e-06, -5.343607e-06, 4.5057041e-06, 9.6437878e-06, -2.1738046e-07, -5.343607e-06, 2.6271115e-05, -2.215168e-05, -4.7412368e-05, 1.0687214e-06, 4.5057041e-06, -2.215168e-05, 1.8678192e-05, 3.9977884e-05, -9.0114082e-07, 9.6437878e-06, -4.7412368e-05, 3.9977884e-05, 8.5566699e-05, -1.9287576e-06, -2.1738046e-07, 1.0687214e-06, -9.0114082e-07, -1.9287576e-06, 4.3476092e-08, -2.8984062e-06, 1.4249619e-05, -1.2015211e-05, -2.5716767e-05, 5.7968123e-07, 1.4249619e-05, -7.0056307e-05, 5.9071146e-05, 0.00012643298, -2.8499237e-06, -1.2015211e-05, 5.9071146e-05, -4.9808511e-05, -0.00010660769, 2.4030422e-06, -2.5716767e-05, 0.00012643298, -0.00010660769, -0.00022817786, 5.1433535e-06, 5.7968123e-07, -2.8499237e-06, 2.4030422e-06, 5.1433535e-06, -1.1593625e-07, -4.3476092e-06, 2.1374428e-05, -1.8022816e-05, -3.8575151e-05, 8.6952185e-07, 2.1374428e-05, -0.00010508446, 8.860672e-05, 0.00018964947, -4.2748856e-06, -1.8022816e-05, 8.860672e-05, -7.4712767e-05, -0.00015991154, 3.6045633e-06, -3.8575151e-05, 0.00018964947, -0.00015991154, -0.0003422668, 7.7150302e-06, 8.6952185e-07, -4.2748856e-06, 3.6045633e-06, 7.7150302e-06, -1.7390437e-07, 2.6085655e-05, -0.00012824657, 0.0001081369, 0.00023145091, -5.2171311e-06, -0.00012824657, 0.00063050676, -0.00053164032, -0.0011378968, 2.5649314e-05, 0.0001081369, -0.00053164032, 0.0004482766, 0.00095946921, -2.162738e-05, 0.00023145091, -0.0011378968, 0.00095946921, 0.0020536008, -4.6290181e-05, -5.2171311e-06, 2.5649314e-05, -2.162738e-05, -4.6290181e-05, 1.0434262e-06, 7.8981568e-06, -3.8830211e-05, 3.274145e-05, 7.0078191e-05, -1.5796314e-06, -3.8830211e-05, 0.00019090344, -0.00016096887, -0.00034452987, 7.7660422e-06, 3.274145e-05, -0.00016096887, 0.00013572819, 0.00029050596, -6.54829e-06, 7.0078191e-05, -0.00034452987, 0.00029050596, 0.00062178468, -1.4015638e-05, -1.5796314e-06, 7.7660422e-06, -6.54829e-06, -1.4015638e-05, 3.1592627e-07, + -1.2647591e-05, 2.0236145e-05, 3.0354217e-05, -5.2613977e-05, -1.2647591e-05, 6.2180154e-05, -9.9488247e-05, -0.00014923237, 0.00025866944, 6.2180154e-05, -5.2430012e-05, 8.3888019e-05, 0.00012583203, -0.00021810885, -5.2430012e-05, -0.00011221862, 0.00017954979, 0.00026932469, -0.00046682946, -0.00011221862, 2.5295181e-06, -4.047229e-06, -6.0708434e-06, 1.0522795e-05, 2.5295181e-06, 3.3726908e-05, -5.3963053e-05, -8.0944579e-05, 0.00014030394, 3.3726908e-05, -0.00016581374, 0.00026530199, 0.00039795299, -0.00068978518, -0.00016581374, 0.00013981336, -0.00022370138, -0.00033555207, 0.0005816236, 0.00013981336, 0.00029924966, -0.00047879945, -0.00071819918, 0.0012448786, 0.00029924966, -6.7453816e-06, 1.0792611e-05, 1.6188916e-05, -2.8060787e-05, -6.7453816e-06, 5.0590362e-05, -8.0944579e-05, -0.00012141687, 0.00021045591, 5.0590362e-05, -0.00024872062, 0.00039795299, 0.00059692948, -0.0010346778, -0.00024872062, 0.00020972005, -0.00033555207, -0.00050332811, 0.00087243539, 0.00020972005, 0.00044887449, -0.00071819918, -0.0010772988, 0.0018673179, 0.00044887449, -1.0118072e-05, 1.6188916e-05, 2.4283374e-05, -4.2091181e-05, -1.0118072e-05, -0.00030354217, 0.00048566748, 0.00072850121, -0.0012627354, -0.00030354217, 0.0014923237, -0.0023877179, -0.0035815769, 0.0062080666, 0.0014923237, -0.0012583203, 0.0020133124, 0.0030199687, -0.0052346124, -0.0012583203, -0.0026932469, 0.0043091951, 0.0064637926, -0.011203907, -0.0026932469, 6.0708434e-05, -9.7133495e-05, -0.00014570024, 0.00025254709, 6.0708434e-05, -9.1905824e-05, 0.00014704932, 0.00022057398, -0.00038232823, -9.1905824e-05, 0.00045184245, -0.00072294793, -0.0010844219, 0.0018796646, 0.00045184245, -0.00038099142, 0.00060958627, 0.0009143794, -0.0015849243, -0.00038099142, -0.00081545532, 0.0013047285, 0.0019570928, -0.0033922941, -0.00081545532, 1.8381165e-05, -2.9409864e-05, -4.4114796e-05, 7.6465646e-05, 1.8381165e-05, + 0.0012303576, 0.001648326, -0.0017660635, 0.00023547514, 2.9434392e-05, -0.0019685722, -0.0026373216, 0.0028257017, -0.00037676022, -4.7095028e-05, -0.0029528583, -0.0039559823, 0.0042385525, -0.00056514034, -7.0642542e-05, 0.0051182876, 0.0068570361, -0.0073468244, 0.00097957658, 0.00012244707, 0.0012303576, 0.001648326, -0.0017660635, 0.00023547514, 2.9434392e-05, -0.0032809536, -0.0043955359, 0.0047095028, -0.00062793371, -7.8491713e-05, 0.0052495258, 0.0070328575, -0.0075352045, 0.0010046939, 0.00012558674, 0.0078742887, 0.010549286, -0.011302807, 0.0015070409, 0.00018838011, -0.013648767, -0.01828543, 0.019591532, -0.0026122042, -0.00032652553, -0.0032809536, -0.0043955359, 0.0047095028, -0.00062793371, -7.8491713e-05, -0.0049214304, -0.0065933039, 0.0070642542, -0.00094190056, -0.00011773757, 0.0078742887, 0.010549286, -0.011302807, 0.0015070409, 0.00018838011, 0.011811433, 0.015823929, -0.01695421, 0.0022605613, 0.00028257017, -0.020473151, -0.027428144, 0.029387297, -0.0039183063, -0.00048978829, -0.0049214304, -0.0065933039, 0.0070642542, -0.00094190056, -0.00011773757, 0.029528583, 0.039559823, -0.042385525, 0.0056514034, 0.00070642542, -0.047245732, -0.063295718, 0.06781684, -0.0090422454, -0.0011302807, -0.070868598, -0.094943576, 0.10172526, -0.013563368, -0.001695421, 0.1228389, 0.16456887, -0.17632378, 0.023509838, 0.0029387297, 0.029528583, 0.039559823, -0.042385525, 0.0056514034, 0.00070642542, 0.0089405986, 0.011977835, -0.012833395, 0.0017111193, 0.00021388992, -0.014304958, -0.019164537, 0.020533432, -0.002737791, -0.00034222387, -0.021457437, -0.028746805, 0.030800148, -0.0041066864, -0.0005133358, 0.03719289, 0.049827795, -0.053386924, 0.0071182565, 0.00088978206, 0.0089405986, 0.011977835, -0.012833395, 0.0017111193, 0.00021388992, + -0.00011566796, 0.00050958292, 0.00088358367, 0.00047646923, 5.4039705e-05, 0.00018506874, -0.00081533267, -0.0014137339, -0.00076235077, -8.6463528e-05, 0.00027760311, -0.001222999, -0.0021206008, -0.0011435261, -0.00012969529, -0.00048117873, 0.0021198649, 0.0036757081, 0.001982112, 0.00022480517, -0.00011566796, 0.00050958292, 0.00088358367, 0.00047646923, 5.4039705e-05, 0.0003084479, -0.0013588878, -0.0023562231, -0.0012705846, -0.00014410588, -0.00049351665, 0.0021742205, 0.003769957, 0.0020329354, 0.00023056941, -0.00074027497, 0.0032613307, 0.0056549355, 0.0030494031, 0.00034585411, 0.0012831433, -0.0056529732, -0.0098018882, -0.005285632, -0.00059948046, 0.0003084479, -0.0013588878, -0.0023562231, -0.0012705846, -0.00014410588, 0.00046267186, -0.0020383317, -0.0035343347, -0.0019058769, -0.00021615882, -0.00074027497, 0.0032613307, 0.0056549355, 0.0030494031, 0.00034585411, -0.0011104125, 0.004891996, 0.0084824032, 0.0045741046, 0.00051878117, 0.0019247149, -0.0084794598, -0.014702832, -0.007928448, -0.00089922069, 0.00046267186, -0.0020383317, -0.0035343347, -0.0019058769, -0.00021615882, -0.0027760311, 0.01222999, 0.021206008, 0.011435261, 0.0012969529, 0.0044416498, -0.019567984, -0.033929613, -0.018296418, -0.0020751247, 0.0066624747, -0.029351976, -0.050894419, -0.027444628, -0.003112687, -0.01154829, 0.050876759, 0.088216994, 0.047570688, 0.0053953241, -0.0027760311, 0.01222999, 0.021206008, 0.011435261, 0.0012969529, -0.00084052054, 0.0037029692, 0.006420708, 0.0034623431, 0.00039268852, 0.0013448329, -0.0059247507, -0.010273133, -0.0055397489, -0.00062830164, 0.0020172493, -0.0088871261, -0.015409699, -0.0083096233, -0.00094245245, -0.0034965654, 0.015404352, 0.026710145, 0.014403347, 0.0016335843, -0.00084052054, 0.0037029692, 0.006420708, 0.0034623431, 0.00039268852, + 3.3113692e-05, -8.8303177e-05, -0.00013245477, 0.0007947286, 0.00024062616, -5.2981906e-05, 0.00014128508, 0.00021192763, -0.0012715658, -0.00038500185, -7.947286e-05, 0.00021192763, 0.00031789144, -0.0019073486, -0.00057750278, 0.00013775296, -0.00036734122, -0.00055101183, 0.003306071, 0.0010010048, 3.3113692e-05, -8.8303177e-05, -0.00013245477, 0.0007947286, 0.00024062616, -8.8303177e-05, 0.00023547514, 0.00035321271, -0.0021192763, -0.00064166976, 0.00014128508, -0.00037676022, -0.00056514034, 0.003390842, 0.0010266716, 0.00021192763, -0.00056514034, -0.0008477105, 0.005086263, 0.0015400074, -0.00036734122, 0.00097957658, 0.0014693649, -0.0088161892, -0.0026693462, -8.8303177e-05, 0.00023547514, 0.00035321271, -0.0021192763, -0.00064166976, -0.00013245477, 0.00035321271, 0.00052981906, -0.0031789144, -0.00096250463, 0.00021192763, -0.00056514034, -0.0008477105, 0.005086263, 0.0015400074, 0.00031789144, -0.0008477105, -0.0012715658, 0.0076293945, 0.0023100111, -0.00055101183, 0.0014693649, 0.0022040473, -0.013224284, -0.0040040193, -0.00013245477, 0.00035321271, 0.00052981906, -0.0031789144, -0.00096250463, 0.0007947286, -0.0021192763, -0.0031789144, 0.019073486, 0.0057750278, -0.0012715658, 0.003390842, 0.005086263, -0.030517578, -0.0092400445, -0.0019073486, 0.005086263, 0.0076293945, -0.045776367, -0.013860067, 0.003306071, -0.0088161892, -0.013224284, 0.079345703, 0.024024116, 0.0007947286, -0.0021192763, -0.0031789144, 0.019073486, 0.0057750278, 0.00024062616, -0.00064166976, -0.00096250463, 0.0057750278, 0.0017485501, -0.00038500185, 0.0010266716, 0.0015400074, -0.0092400445, -0.0027976801, -0.00057750278, 0.0015400074, 0.0023100111, -0.013860067, -0.0041965202, 0.0010010048, -0.0026693462, -0.0040040193, 0.024024116, 0.0072739684, 0.00024062616, -0.00064166976, -0.00096250463, 0.0057750278, 0.0017485501, + -1.2647591e-05, 6.2180154e-05, -5.2430012e-05, -0.00011221862, 2.5295181e-06, 2.0236145e-05, -9.9488247e-05, 8.3888019e-05, 0.00017954979, -4.047229e-06, 3.0354217e-05, -0.00014923237, 0.00012583203, 0.00026932469, -6.0708434e-06, -5.2613977e-05, 0.00025866944, -0.00021810885, -0.00046682946, 1.0522795e-05, -1.2647591e-05, 6.2180154e-05, -5.2430012e-05, -0.00011221862, 2.5295181e-06, 3.3726908e-05, -0.00016581374, 0.00013981336, 0.00029924966, -6.7453816e-06, -5.3963053e-05, 0.00026530199, -0.00022370138, -0.00047879945, 1.0792611e-05, -8.0944579e-05, 0.00039795299, -0.00033555207, -0.00071819918, 1.6188916e-05, 0.00014030394, -0.00068978518, 0.0005816236, 0.0012448786, -2.8060787e-05, 3.3726908e-05, -0.00016581374, 0.00013981336, 0.00029924966, -6.7453816e-06, 5.0590362e-05, -0.00024872062, 0.00020972005, 0.00044887449, -1.0118072e-05, -8.0944579e-05, 0.00039795299, -0.00033555207, -0.00071819918, 1.6188916e-05, -0.00012141687, 0.00059692948, -0.00050332811, -0.0010772988, 2.4283374e-05, 0.00021045591, -0.0010346778, 0.00087243539, 0.0018673179, -4.2091181e-05, 5.0590362e-05, -0.00024872062, 0.00020972005, 0.00044887449, -1.0118072e-05, -0.00030354217, 0.0014923237, -0.0012583203, -0.0026932469, 6.0708434e-05, 0.00048566748, -0.0023877179, 0.0020133124, 0.0043091951, -9.7133495e-05, 0.00072850121, -0.0035815769, 0.0030199687, 0.0064637926, -0.00014570024, -0.0012627354, 0.0062080666, -0.0052346124, -0.011203907, 0.00025254709, -0.00030354217, 0.0014923237, -0.0012583203, -0.0026932469, 6.0708434e-05, -9.1905824e-05, 0.00045184245, -0.00038099142, -0.00081545532, 1.8381165e-05, 0.00014704932, -0.00072294793, 0.00060958627, 0.0013047285, -2.9409864e-05, 0.00022057398, -0.0010844219, 0.0009143794, 0.0019570928, -4.4114796e-05, -0.00038232823, 0.0018796646, -0.0015849243, -0.0033922941, 7.6465646e-05, -9.1905824e-05, 0.00045184245, -0.00038099142, -0.00081545532, 1.8381165e-05, + 0.00014717196, -0.00023547514, -0.00035321271, 0.00061223536, 0.00014717196, -0.00023547514, 0.00037676022, 0.00056514034, -0.00097957658, -0.00023547514, -0.00035321271, 0.00056514034, 0.0008477105, -0.0014693649, -0.00035321271, 0.00061223536, -0.00097957658, -0.0014693649, 0.0025468991, 0.00061223536, 0.00014717196, -0.00023547514, -0.00035321271, 0.00061223536, 0.00014717196, -0.00039245857, 0.00062793371, 0.00094190056, -0.0016326276, -0.00039245857, 0.00062793371, -0.0010046939, -0.0015070409, 0.0026122042, 0.00062793371, 0.00094190056, -0.0015070409, -0.0022605613, 0.0039183063, 0.00094190056, -0.0016326276, 0.0026122042, 0.0039183063, -0.006791731, -0.0016326276, -0.00039245857, 0.00062793371, 0.00094190056, -0.0016326276, -0.00039245857, -0.00058868785, 0.00094190056, 0.0014128508, -0.0024489415, -0.00058868785, 0.00094190056, -0.0015070409, -0.0022605613, 0.0039183063, 0.00094190056, 0.0014128508, -0.0022605613, -0.003390842, 0.0058774595, 0.0014128508, -0.0024489415, 0.0039183063, 0.0058774595, -0.010187596, -0.0024489415, -0.00058868785, 0.00094190056, 0.0014128508, -0.0024489415, -0.00058868785, 0.0035321271, -0.0056514034, -0.008477105, 0.014693649, 0.0035321271, -0.0056514034, 0.0090422454, 0.013563368, -0.023509838, -0.0056514034, -0.008477105, 0.013563368, 0.020345052, -0.035264757, -0.008477105, 0.014693649, -0.023509838, -0.035264757, 0.061125579, 0.014693649, 0.0035321271, -0.0056514034, -0.008477105, 0.014693649, 0.0035321271, 0.0010694496, -0.0017111193, -0.002566679, 0.0044489103, 0.0010694496, -0.0017111193, 0.002737791, 0.0041066864, -0.0071182565, -0.0017111193, -0.002566679, 0.0041066864, 0.0061600297, -0.010677385, -0.002566679, 0.0044489103, -0.0071182565, -0.010677385, 0.018507467, 0.0044489103, 0.0010694496, -0.0017111193, -0.002566679, 0.0044489103, 0.0010694496, + -0.0039286002, -0.0052631964, 0.005639139, -0.0007518852, -9.398565e-05, -0.0052631964, -0.0070511722, 0.0075548274, -0.0010073103, -0.00012591379, 0.005639139, 0.0075548274, -0.0080944579, 0.0010792611, 0.00013490763, -0.0007518852, -0.0010073103, 0.0010792611, -0.00014390147, -1.7987684e-05, -9.398565e-05, -0.00012591379, 0.00013490763, -1.7987684e-05, -2.2484605e-06, 0.019314427, 0.025875788, -0.027724058, 0.0036965411, 0.00046206763, 0.025875788, 0.034666127, -0.037142279, 0.0049523038, 0.00061903798, -0.027724058, -0.037142279, 0.039795299, -0.0053060398, -0.00066325498, 0.0036965411, 0.0049523038, -0.0053060398, 0.00070747198, 8.8433997e-05, 0.00046206763, 0.00061903798, -0.00066325498, 8.8433997e-05, 1.105425e-05, -0.016285834, -0.021818342, 0.023376795, -0.0031169059, -0.00038961324, -0.021818342, -0.029230314, 0.031318194, -0.0041757591, -0.00052196989, 0.023376795, 0.031318194, -0.033555207, 0.0044740277, 0.00055925346, -0.0031169059, -0.0041757591, 0.0044740277, -0.00059653702, -7.4567128e-05, -0.00038961324, -0.00052196989, 0.00055925346, -7.4567128e-05, -9.320891e-06, -0.034857398, -0.046698906, 0.050034543, -0.0066712724, -0.00083390904, -0.046698906, -0.062563128, 0.067031923, -0.0089375898, -0.0011171987, 0.050034543, 0.067031923, -0.071819918, 0.009575989, 0.0011969986, -0.0066712724, -0.0089375898, 0.009575989, -0.0012767985, -0.00015959982, -0.00083390904, -0.0011171987, 0.0011969986, -0.00015959982, -1.9949977e-05, 0.00078572004, 0.0010526393, -0.0011278278, 0.00015037704, 1.879713e-05, 0.0010526393, 0.0014102344, -0.0015109655, 0.00020146206, 2.5182758e-05, -0.0011278278, -0.0015109655, 0.0016188916, -0.00021585221, -2.6981526e-05, 0.00015037704, 0.00020146206, -0.00021585221, 2.8780295e-05, 3.5975369e-06, 1.879713e-05, 2.5182758e-05, -2.6981526e-05, 3.5975369e-06, 4.4969211e-07, + 0.00036933424, -0.0016271266, -0.0028213317, -0.0015213927, -0.00017255178, 0.00049480185, -0.0021798825, -0.0037797746, -0.0020382295, -0.00023116985, -0.00053014484, 0.0023355884, 0.0040497585, 0.0021838173, 0.00024768198, 7.0685978e-05, -0.00031141178, -0.0005399678, -0.00029117564, -3.3024264e-05, 8.8357473e-06, -3.8926473e-05, -6.7495975e-05, -3.6396955e-05, -4.128033e-06, -0.0018157814, 0.0079995459, 0.013870693, 0.0074797198, 0.0008483273, -0.0024326258, 0.010717095, 0.018582746, 0.010020677, 0.001136515, 0.0026063848, -0.011482602, -0.019910085, -0.01073644, -0.0012176947, -0.00034751797, 0.0015310136, 0.002654678, 0.0014315253, 0.00016235929, -4.3439747e-05, 0.0001913767, 0.00033183476, 0.00017894067, 2.0294911e-05, 0.0015310583, -0.0067451792, -0.011695703, -0.0063068644, -0.00071530556, 0.0020511786, -0.0090366038, -0.015668884, -0.0084493876, -0.0009583041, -0.0021976913, 0.0096820755, 0.01678809, 0.0090529153, 0.0010267544, 0.00029302551, -0.0012909434, -0.002238412, -0.0012070554, -0.00013690059, 3.6628189e-05, -0.00016136792, -0.0002798015, -0.00015088192, -1.7112573e-05, 0.0032770019, -0.01443705, -0.025032907, -0.013498903, -0.0015310049, 0.0043902418, -0.019341503, -0.033536909, -0.018084654, -0.002051107, -0.0047038305, 0.020723039, 0.035932403, 0.019376415, 0.0021976147, 0.00062717741, -0.0027630718, -0.004790987, -0.002583522, -0.00029301529, 7.8397176e-05, -0.00034538398, -0.00059887338, -0.00032294025, -3.6626911e-05, -7.3866847e-05, 0.00032542531, 0.00056426635, 0.00030427854, 3.4510356e-05, -9.8960369e-05, 0.0004359765, 0.00075595492, 0.0004076459, 4.623397e-05, 0.00010602897, -0.00046711768, -0.0008099517, -0.00043676346, -4.9536396e-05, -1.4137196e-05, 6.2282357e-05, 0.00010799356, 5.8235128e-05, 6.6048528e-06, -1.7671495e-06, 7.7852946e-06, 1.3499195e-05, 7.279391e-06, 8.256066e-07, + -0.00010573386, 0.00028195695, 0.00042293543, -0.0025376126, -0.00076833269, -0.00014165301, 0.00037774137, 0.00056661206, -0.0033996723, -0.0010293452, 0.00015177109, -0.0004047229, -0.00060708434, 0.0036425061, 0.0011028699, -2.0236145e-05, 5.3963053e-05, 8.0944579e-05, -0.00048566748, -0.00014704932, -2.5295181e-06, 6.7453816e-06, 1.0118072e-05, -6.0708434e-05, -1.8381165e-05, 0.00051982609, -0.0013862029, -0.0020793044, 0.012475826, 0.0037774029, 0.00069641773, -0.0018571139, -0.0027856709, 0.016714025, 0.0050606355, -0.00074616185, 0.0019897649, 0.0029846474, -0.017907884, -0.0054221094, 9.9488247e-05, -0.00026530199, -0.00039795299, 0.0023877179, 0.00072294793, 1.2436031e-05, -3.3162749e-05, -4.9744123e-05, 0.00029846474, 9.0368491e-05, -0.0004383149, 0.0011688397, 0.0017532596, -0.010519558, -0.0031850883, -0.00058721613, 0.0015659097, 0.0023488645, -0.014093187, -0.0042671039, 0.00062916014, -0.0016777604, -0.0025166406, 0.015099843, 0.004571897, -8.3888019e-05, 0.00022370138, 0.00033555207, -0.0020133124, -0.00060958627, -1.0486002e-05, 2.7962673e-05, 4.1944009e-05, -0.00025166406, -7.6198284e-05, -0.00093814767, 0.0025017271, 0.0037525907, -0.022515544, -0.0068172064, -0.0012568486, 0.0033515962, 0.0050273942, -0.030164365, -0.0091330995, 0.0013466235, -0.0035909959, -0.0053864938, 0.032318963, 0.0097854638, -0.00017954979, 0.00047879945, 0.00071819918, -0.0043091951, -0.0013047285, -2.2443724e-05, 5.9849931e-05, 8.9774897e-05, -0.00053864938, -0.00016309106, 2.1146771e-05, -5.639139e-05, -8.4587085e-05, 0.00050752251, 0.00015366654, 2.8330603e-05, -7.5548274e-05, -0.00011332241, 0.00067993447, 0.00020586905, -3.0354217e-05, 8.0944579e-05, 0.00012141687, -0.00072850121, -0.00022057398, 4.047229e-06, -1.0792611e-05, -1.6188916e-05, 9.7133495e-05, 2.9409864e-05, 5.0590362e-07, -1.3490763e-06, -2.0236145e-06, 1.2141687e-05, 3.676233e-06, + 4.0384459e-05, -0.00019854469, 0.00016741194, 0.00035832029, -8.0768918e-06, 5.4103582e-05, -0.00026599288, 0.00022428394, 0.00048004632, -1.0820716e-05, -5.7968123e-05, 0.00028499237, -0.00024030422, -0.00051433535, 1.1593625e-05, 7.7290831e-06, -3.7998983e-05, 3.2040563e-05, 6.8578046e-05, -1.5458166e-06, 9.6613539e-07, -4.7498729e-06, 4.0050703e-06, 8.5722558e-06, -1.9322708e-07, -0.00019854469, 0.00097611788, -0.00082305797, -0.0017616329, 3.9708937e-05, -0.00026599288, 0.0013077177, -0.0011026614, -0.0023600823, 5.3198576e-05, 0.00028499237, -0.0014011261, 0.0011814229, 0.0025286596, -5.6998475e-05, -3.7998983e-05, 0.00018681682, -0.00015752306, -0.00033715461, 7.5997966e-06, -4.7498729e-06, 2.3352102e-05, -1.9690382e-05, -4.2144327e-05, 9.4997458e-07, 0.00016741194, -0.00082305797, 0.00069399859, 0.0014854005, -3.3482388e-05, 0.00022428394, -0.0011026614, 0.00092975887, 0.0019900102, -4.4856788e-05, -0.00024030422, 0.0011814229, -0.00099617022, -0.0021321538, 4.8060844e-05, 3.2040563e-05, -0.00015752306, 0.0001328227, 0.00028428717, -6.4081125e-06, 4.0050703e-06, -1.9690382e-05, 1.6602837e-05, 3.5535897e-05, -8.0101407e-07, 0.00035832029, -0.0017616329, 0.0014854005, 0.0031792782, -7.1664058e-05, 0.00048004632, -0.0023600823, 0.0019900102, 0.0042593201, -9.6009265e-05, -0.00051433535, 0.0025286596, -0.0021321538, -0.0045635573, 0.00010286707, 6.8578046e-05, -0.00033715461, 0.00028428717, 0.0006084743, -1.3715609e-05, 8.5722558e-06, -4.2144327e-05, 3.5535897e-05, 7.6059288e-05, -1.7144512e-06, -8.0768918e-06, 3.9708937e-05, -3.3482388e-05, -7.1664058e-05, 1.6153784e-06, -1.0820716e-05, 5.3198576e-05, -4.4856788e-05, -9.6009265e-05, 2.1641433e-06, 1.1593625e-05, -5.6998475e-05, 4.8060844e-05, 0.00010286707, -2.3187249e-06, -1.5458166e-06, 7.5997966e-06, -6.4081125e-06, -1.3715609e-05, 3.0916332e-07, -1.9322708e-07, 9.4997458e-07, -8.0101407e-07, -1.7144512e-06, 3.8645415e-08, + -0.00046992825, 0.0007518852, 0.0011278278, -0.0019549015, -0.00046992825, -0.00062956895, 0.0010073103, 0.0015109655, -0.0026190068, -0.00062956895, 0.00067453816, -0.0010792611, -0.0016188916, 0.0028060787, 0.00067453816, -8.9938421e-05, 0.00014390147, 0.00021585221, -0.00037414383, -8.9938421e-05, -1.1242303e-05, 1.7987684e-05, 2.6981526e-05, -4.6767979e-05, -1.1242303e-05, 0.0023103382, -0.0036965411, -0.0055448116, 0.0096110068, 0.0023103382, 0.0030951899, -0.0049523038, -0.0074284557, 0.01287599, 0.0030951899, -0.0033162749, 0.0053060398, 0.0079590597, -0.013795704, -0.0033162749, 0.00044216998, -0.00070747198, -0.001061208, 0.0018394271, 0.00044216998, 5.5271248e-05, -8.8433997e-05, -0.000132651, 0.00022992839, 5.5271248e-05, -0.0019480662, 0.0031169059, 0.0046753589, -0.0081039554, -0.0019480662, -0.0026098495, 0.0041757591, 0.0062636387, -0.010856974, -0.0026098495, 0.0027962673, -0.0044740277, -0.0067110415, 0.011632472, 0.0027962673, -0.00037283564, 0.00059653702, 0.00089480553, -0.0015509963, -0.00037283564, -4.6604455e-05, 7.4567128e-05, 0.00011185069, -0.00019387453, -4.6604455e-05, -0.0041695452, 0.0066712724, 0.010006909, -0.017345308, -0.0041695452, -0.0055859936, 0.0089375898, 0.013406385, -0.023237733, -0.0055859936, 0.0059849931, -0.009575989, -0.014363984, 0.024897571, 0.0059849931, -0.00079799909, 0.0012767985, 0.0019151978, -0.0033196762, -0.00079799909, -9.9749886e-05, 0.00015959982, 0.00023939973, -0.00041495952, -9.9749886e-05, 9.398565e-05, -0.00015037704, -0.00022556556, 0.00039098031, 9.398565e-05, 0.00012591379, -0.00020146206, -0.0003021931, 0.00052380137, 0.00012591379, -0.00013490763, 0.00021585221, 0.00032377832, -0.00056121575, -0.00013490763, 1.7987684e-05, -2.8780295e-05, -4.3170442e-05, 7.4828767e-05, 1.7987684e-05, 2.2484605e-06, -3.5975369e-06, -5.3963053e-06, 9.3535958e-06, 2.2484605e-06, + 0.00036933424, 0.00049480185, -0.00053014484, 7.0685978e-05, 8.8357473e-06, -0.0016271266, -0.0021798825, 0.0023355884, -0.00031141178, -3.8926473e-05, -0.0028213317, -0.0037797746, 0.0040497585, -0.0005399678, -6.7495975e-05, -0.0015213927, -0.0020382295, 0.0021838173, -0.00029117564, -3.6396955e-05, -0.00017255178, -0.00023116985, 0.00024768198, -3.3024264e-05, -4.128033e-06, -0.0018157814, -0.0024326258, 0.0026063848, -0.00034751797, -4.3439747e-05, 0.0079995459, 0.010717095, -0.011482602, 0.0015310136, 0.0001913767, 0.013870693, 0.018582746, -0.019910085, 0.002654678, 0.00033183476, 0.0074797198, 0.010020677, -0.01073644, 0.0014315253, 0.00017894067, 0.0008483273, 0.001136515, -0.0012176947, 0.00016235929, 2.0294911e-05, 0.0015310583, 0.0020511786, -0.0021976913, 0.00029302551, 3.6628189e-05, -0.0067451792, -0.0090366038, 0.0096820755, -0.0012909434, -0.00016136792, -0.011695703, -0.015668884, 0.01678809, -0.002238412, -0.0002798015, -0.0063068644, -0.0084493876, 0.0090529153, -0.0012070554, -0.00015088192, -0.00071530556, -0.0009583041, 0.0010267544, -0.00013690059, -1.7112573e-05, 0.0032770019, 0.0043902418, -0.0047038305, 0.00062717741, 7.8397176e-05, -0.01443705, -0.019341503, 0.020723039, -0.0027630718, -0.00034538398, -0.025032907, -0.033536909, 0.035932403, -0.004790987, -0.00059887338, -0.013498903, -0.018084654, 0.019376415, -0.002583522, -0.00032294025, -0.0015310049, -0.002051107, 0.0021976147, -0.00029301529, -3.6626911e-05, -7.3866847e-05, -9.8960369e-05, 0.00010602897, -1.4137196e-05, -1.7671495e-06, 0.00032542531, 0.0004359765, -0.00046711768, 6.2282357e-05, 7.7852946e-06, 0.00056426635, 0.00075595492, -0.0008099517, 0.00010799356, 1.3499195e-05, 0.00030427854, 0.0004076459, -0.00043676346, 5.8235128e-05, 7.279391e-06, 3.4510356e-05, 4.623397e-05, -4.9536396e-05, 6.6048528e-06, 8.256066e-07, + -3.4721726e-05, 0.00015296887, 0.00026523809, 0.00014302866, 1.622188e-05, 0.00015296887, -0.00067391456, -0.0011685241, -0.00063012228, -7.1466572e-05, 0.00026523809, -0.0011685241, -0.0020261448, -0.0010925911, -0.00012391839, 0.00014302866, -0.00063012228, -0.0010925911, -0.00058917571, -6.6822534e-05, 1.622188e-05, -7.1466572e-05, -0.00012391839, -6.6822534e-05, -7.5788106e-06, 0.00017070463, -0.00075205061, -0.0013040069, -0.0007031809, -7.975266e-05, -0.00075205061, 0.0033132091, 0.0057448892, 0.0030979103, 0.00035135565, -0.0013040069, 0.0057448892, 0.0099612646, 0.0053715751, 0.00060922787, -0.0007031809, 0.0030979103, 0.0053715751, 0.002896602, 0.00032852388, -7.975266e-05, 0.00035135565, 0.00060922787, 0.00032852388, 3.7260189e-05, -0.00014393734, 0.00063412552, 0.0010995324, 0.0005929188, 6.7247065e-05, 0.00063412552, -0.0027936822, -0.0048440634, -0.0026121433, -0.00029626142, 0.0010995324, -0.0048440634, -0.0083992911, -0.0045292867, -0.00051369806, 0.0005929188, -0.0026121433, -0.0045292867, -0.0024424011, -0.00027700978, 6.7247065e-05, -0.00029626142, -0.00051369806, -0.00027700978, -3.1417615e-05, -0.0003080764, 0.0013572511, 0.0023533852, 0.0012690543, 0.00014393231, 0.0013572511, -0.0059794601, -0.010367995, -0.0055909032, -0.0006341034, 0.0023533852, -0.010367995, -0.01797743, -0.0096942628, -0.0010994941, 0.0012690543, -0.0055909032, -0.0096942628, -0.0052275954, -0.00059289812, 0.00014393231, -0.0006341034, -0.0010994941, -0.00059289812, -6.724472e-05, 6.9443451e-06, -3.0593775e-05, -5.3047618e-05, -2.8605732e-05, -3.2443759e-06, -3.0593775e-05, 0.00013478291, 0.00023370481, 0.00012602446, 1.4293314e-05, -5.3047618e-05, 0.00023370481, 0.00040522896, 0.00021851822, 2.4783678e-05, -2.8605732e-05, 0.00012602446, 0.00021851822, 0.00011783514, 1.3364507e-05, -3.2443759e-06, 1.4293314e-05, 2.4783678e-05, 1.3364507e-05, 1.5157621e-06, + 9.9402157e-06, -2.6507242e-05, -3.9760863e-05, 0.00023856518, 7.2232234e-05, -4.3792282e-05, 0.00011677942, 0.00017516913, -0.0010510148, -0.00031822392, -7.5932972e-05, 0.00020248792, 0.00030373189, -0.0018223913, -0.00055177959, -4.0946574e-05, 0.00010919086, 0.0001637863, -0.00098271778, -0.00029754511, -4.6440371e-06, 1.2384099e-05, 1.8576149e-05, -0.00011145689, -3.374667e-05, -4.8869715e-05, 0.00013031924, 0.00019547886, -0.0011728732, -0.00035511993, 0.00021529878, -0.00057413009, -0.00086119513, 0.0051671708, 0.0015645045, 0.0003733141, -0.00099550427, -0.0014932564, 0.0089595384, 0.0027127491, 0.00020130825, -0.000536822, -0.000805233, 0.004831398, 0.0014628399, 2.2831775e-05, -6.0884734e-05, -9.1327101e-05, 0.00054796261, 0.0001659109, 4.1206712e-05, -0.00010988457, -0.00016482685, 0.00098896109, 0.00029943544, -0.00018153892, 0.00048410377, 0.00072615566, -0.004356934, -0.0013191828, -0.00031477668, 0.00083940449, 0.0012591067, -0.0075546404, -0.0022873772, -0.00016974216, 0.00045264577, 0.00067896865, -0.0040738119, -0.0012334597, -1.9251645e-05, 5.133772e-05, 7.700658e-05, -0.00046203948, -0.00013989529, 8.8196823e-05, -0.00023519153, -0.00035278729, 0.0021167237, 0.00064089691, -0.00038855698, 0.0010361519, 0.0015542279, -0.0093253674, -0.002823514, -0.00067373255, 0.0017966201, 0.0026949302, -0.016169581, -0.0048957898, -0.00036330779, 0.00096882076, 0.0014532311, -0.0087193869, -0.0026400366, -4.1205275e-05, 0.00010988073, 0.0001648211, -0.0009889266, -0.000299425, -1.9880431e-06, 5.3014484e-06, 7.9521725e-06, -4.7713035e-05, -1.4446447e-05, 8.7584564e-06, -2.3355884e-05, -3.5033826e-05, 0.00021020295, 6.3644783e-05, 1.5186594e-05, -4.0497585e-05, -6.0746377e-05, 0.00036447826, 0.00011035592, 8.1893149e-06, -2.1838173e-05, -3.2757259e-05, 0.00019654356, 5.9509021e-05, 9.2880743e-07, -2.4768198e-06, -3.7152297e-06, 2.2291378e-05, 6.749334e-06, + -3.7966102e-06, 1.8665516e-05, -1.5738675e-05, -3.3686286e-05, 7.5932203e-07, 1.6726219e-05, -8.2232174e-05, 6.933778e-05, 0.00014840718, -3.3452438e-06, 2.9002177e-05, -0.00014258525, 0.00012022721, 0.0002573284, -5.8004353e-06, 1.5639317e-05, -7.6888567e-05, 6.4832076e-05, 0.00013876339, -3.1278633e-06, 1.7737642e-06, -8.7204697e-06, 7.3530588e-06, 1.5738126e-05, -3.5475284e-07, 1.8665516e-05, -9.1766465e-05, 7.7377049e-05, 0.00016561403, -3.7331032e-06, -8.2232174e-05, 0.00040428327, -0.00034088974, -0.00072962366, 1.6446435e-05, -0.00014258525, 0.00070100092, -0.00059108066, -0.00126512, 2.8517049e-05, -7.6888567e-05, 0.00037801216, -0.00031873806, -0.00068221129, 1.5377713e-05, -8.7204697e-06, 4.2873e-05, -3.6150311e-05, -7.737435e-05, 1.7440939e-06, -1.5738675e-05, 7.7377049e-05, -6.5243961e-05, -0.00013964497, 3.147735e-06, 6.933778e-05, -0.00034088974, 0.00028743662, 0.00061521521, -1.3867556e-05, 0.00012022721, -0.00059108066, 0.00049839641, 0.0010667432, -2.4045441e-05, 6.4832076e-05, -0.00031873806, 0.00026875842, 0.00057523733, -1.2966415e-05, 7.3530588e-06, -3.6150311e-05, 3.0481771e-05, 6.5241685e-05, -1.4706118e-06, -3.3686286e-05, 0.00016561403, -0.00013964497, -0.00029888923, 6.7372573e-06, 0.00014840718, -0.00072962366, 0.00061521521, 0.0013167764, -2.9681436e-05, 0.0002573284, -0.00126512, 0.0010667432, 0.0022832047, -5.1465681e-05, 0.00013876339, -0.00068221129, 0.00057523733, 0.0012312097, -2.7752678e-05, 1.5738126e-05, -7.737435e-05, 6.5241685e-05, 0.0001396401, -3.1476252e-06, 7.5932203e-07, -3.7331032e-06, 3.147735e-06, 6.7372573e-06, -1.5186441e-07, -3.3452438e-06, 1.6446435e-05, -1.3867556e-05, -2.9681436e-05, 6.6904876e-07, -5.8004353e-06, 2.8517049e-05, -2.4045441e-05, -5.1465681e-05, 1.1600871e-06, -3.1278633e-06, 1.5377713e-05, -1.2966415e-05, -2.7752678e-05, 6.2557266e-07, -3.5475284e-07, 1.7440939e-06, -1.4706118e-06, -3.1476252e-06, 7.0950567e-08, + 4.4178736e-05, -7.0685978e-05, -0.00010602897, 0.00018378354, 4.4178736e-05, -0.00019463237, 0.00031141178, 0.00046711768, -0.00080967064, -0.00019463237, -0.00033747987, 0.0005399678, 0.0008099517, -0.0014039163, -0.00033747987, -0.00018198477, 0.00029117564, 0.00043676346, -0.00075705666, -0.00018198477, -2.0640165e-05, 3.3024264e-05, 4.9536396e-05, -8.5863087e-05, -2.0640165e-05, -0.00021719873, 0.00034751797, 0.00052127696, -0.00090354673, -0.00021719873, 0.00095688348, -0.0015310136, -0.0022965204, 0.0039806353, 0.00095688348, 0.0016591738, -0.002654678, -0.0039820171, 0.0069021629, 0.0016591738, 0.00089470333, -0.0014315253, -0.002147288, 0.0037219658, 0.00089470333, 0.00010147456, -0.00016235929, -0.00024353894, 0.00042213416, 0.00010147456, 0.00018314094, -0.00029302551, -0.00043953826, 0.00076186632, 0.00018314094, -0.00080683962, 0.0012909434, 0.0019364151, -0.0033564528, -0.00080683962, -0.0013990075, 0.002238412, 0.0033576179, -0.0058198711, -0.0013990075, -0.00075440961, 0.0012070554, 0.0018105831, -0.003138344, -0.00075440961, -8.5562866e-05, 0.00013690059, 0.00020535088, -0.00035594152, -8.5562866e-05, 0.00039198588, -0.00062717741, -0.00094076611, 0.0016306613, 0.00039198588, -0.0017269199, 0.0027630718, 0.0041446077, -0.0071839868, -0.0017269199, -0.0029943669, 0.004790987, 0.0071864805, -0.012456566, -0.0029943669, -0.0016147013, 0.002583522, 0.0038752831, -0.0067171573, -0.0016147013, -0.00018313456, 0.00029301529, 0.00043952293, -0.00076183975, -0.00018313456, -8.8357473e-06, 1.4137196e-05, 2.1205793e-05, -3.6756709e-05, -8.8357473e-06, 3.8926473e-05, -6.2282357e-05, -9.3423535e-05, 0.00016193413, 3.8926473e-05, 6.7495975e-05, -0.00010799356, -0.00016199034, 0.00028078325, 6.7495975e-05, 3.6396955e-05, -5.8235128e-05, -8.7352692e-05, 0.00015141133, 3.6396955e-05, 4.128033e-06, -6.6048528e-06, -9.9072792e-06, 1.7172617e-05, 4.128033e-06, + -0.00010573386, -0.00014165301, 0.00015177109, -2.0236145e-05, -2.5295181e-06, 0.00028195695, 0.00037774137, -0.0004047229, 5.3963053e-05, 6.7453816e-06, 0.00042293543, 0.00056661206, -0.00060708434, 8.0944579e-05, 1.0118072e-05, -0.0025376126, -0.0033996723, 0.0036425061, -0.00048566748, -6.0708434e-05, -0.00076833269, -0.0010293452, 0.0011028699, -0.00014704932, -1.8381165e-05, 0.00051982609, 0.00069641773, -0.00074616185, 9.9488247e-05, 1.2436031e-05, -0.0013862029, -0.0018571139, 0.0019897649, -0.00026530199, -3.3162749e-05, -0.0020793044, -0.0027856709, 0.0029846474, -0.00039795299, -4.9744123e-05, 0.012475826, 0.016714025, -0.017907884, 0.0023877179, 0.00029846474, 0.0037774029, 0.0050606355, -0.0054221094, 0.00072294793, 9.0368491e-05, -0.0004383149, -0.00058721613, 0.00062916014, -8.3888019e-05, -1.0486002e-05, 0.0011688397, 0.0015659097, -0.0016777604, 0.00022370138, 2.7962673e-05, 0.0017532596, 0.0023488645, -0.0025166406, 0.00033555207, 4.1944009e-05, -0.010519558, -0.014093187, 0.015099843, -0.0020133124, -0.00025166406, -0.0031850883, -0.0042671039, 0.004571897, -0.00060958627, -7.6198284e-05, -0.00093814767, -0.0012568486, 0.0013466235, -0.00017954979, -2.2443724e-05, 0.0025017271, 0.0033515962, -0.0035909959, 0.00047879945, 5.9849931e-05, 0.0037525907, 0.0050273942, -0.0053864938, 0.00071819918, 8.9774897e-05, -0.022515544, -0.030164365, 0.032318963, -0.0043091951, -0.00053864938, -0.0068172064, -0.0091330995, 0.0097854638, -0.0013047285, -0.00016309106, 2.1146771e-05, 2.8330603e-05, -3.0354217e-05, 4.047229e-06, 5.0590362e-07, -5.639139e-05, -7.5548274e-05, 8.0944579e-05, -1.0792611e-05, -1.3490763e-06, -8.4587085e-05, -0.00011332241, 0.00012141687, -1.6188916e-05, -2.0236145e-06, 0.00050752251, 0.00067993447, -0.00072850121, 9.7133495e-05, 1.2141687e-05, 0.00015366654, 0.00020586905, -0.00022057398, 2.9409864e-05, 3.676233e-06, + 9.9402157e-06, -4.3792282e-05, -7.5932972e-05, -4.0946574e-05, -4.6440371e-06, -2.6507242e-05, 0.00011677942, 0.00020248792, 0.00010919086, 1.2384099e-05, -3.9760863e-05, 0.00017516913, 0.00030373189, 0.0001637863, 1.8576149e-05, 0.00023856518, -0.0010510148, -0.0018223913, -0.00098271778, -0.00011145689, 7.2232234e-05, -0.00031822392, -0.00055177959, -0.00029754511, -3.374667e-05, -4.8869715e-05, 0.00021529878, 0.0003733141, 0.00020130825, 2.2831775e-05, 0.00013031924, -0.00057413009, -0.00099550427, -0.000536822, -6.0884734e-05, 0.00019547886, -0.00086119513, -0.0014932564, -0.000805233, -9.1327101e-05, -0.0011728732, 0.0051671708, 0.0089595384, 0.004831398, 0.00054796261, -0.00035511993, 0.0015645045, 0.0027127491, 0.0014628399, 0.0001659109, 4.1206712e-05, -0.00018153892, -0.00031477668, -0.00016974216, -1.9251645e-05, -0.00010988457, 0.00048410377, 0.00083940449, 0.00045264577, 5.133772e-05, -0.00016482685, 0.00072615566, 0.0012591067, 0.00067896865, 7.700658e-05, 0.00098896109, -0.004356934, -0.0075546404, -0.0040738119, -0.00046203948, 0.00029943544, -0.0013191828, -0.0022873772, -0.0012334597, -0.00013989529, 8.8196823e-05, -0.00038855698, -0.00067373255, -0.00036330779, -4.1205275e-05, -0.00023519153, 0.0010361519, 0.0017966201, 0.00096882076, 0.00010988073, -0.00035278729, 0.0015542279, 0.0026949302, 0.0014532311, 0.0001648211, 0.0021167237, -0.0093253674, -0.016169581, -0.0087193869, -0.0009889266, 0.00064089691, -0.002823514, -0.0048957898, -0.0026400366, -0.000299425, -1.9880431e-06, 8.7584564e-06, 1.5186594e-05, 8.1893149e-06, 9.2880743e-07, 5.3014484e-06, -2.3355884e-05, -4.0497585e-05, -2.1838173e-05, -2.4768198e-06, 7.9521725e-06, -3.5033826e-05, -6.0746377e-05, -3.2757259e-05, -3.7152297e-06, -4.7713035e-05, 0.00021020295, 0.00036447826, 0.00019654356, 2.2291378e-05, -1.4446447e-05, 6.3644783e-05, 0.00011035592, 5.9509021e-05, 6.749334e-06, + -2.8457079e-06, 7.5885543e-06, 1.1382831e-05, -6.8296989e-05, -2.067881e-05, 7.5885543e-06, -2.0236145e-05, -3.0354217e-05, 0.0001821253, 5.5143495e-05, 1.1382831e-05, -3.0354217e-05, -4.5531326e-05, 0.00027318796, 8.2715242e-05, -6.8296989e-05, 0.0001821253, 0.00027318796, -0.0016391277, -0.00049629145, -2.067881e-05, 5.5143495e-05, 8.2715242e-05, -0.00049629145, -0.00015026602, 1.3990535e-05, -3.7308092e-05, -5.5962139e-05, 0.00033577283, 0.00010166455, -3.7308092e-05, 9.9488247e-05, 0.00014923237, -0.00089539422, -0.00027110547, -5.5962139e-05, 0.00014923237, 0.00022384855, -0.0013430913, -0.00040665821, 0.00033577283, -0.00089539422, -0.0013430913, 0.008058548, 0.0024399492, 0.00010166455, -0.00027110547, -0.00040665821, 0.0024399492, 0.00073876241, -1.1796753e-05, 3.1458007e-05, 4.718701e-05, -0.00028312206, -8.5723069e-05, 3.1458007e-05, -8.3888019e-05, -0.00012583203, 0.00075499217, 0.00022859485, 4.718701e-05, -0.00012583203, -0.00018874804, 0.0011324883, 0.00034289228, -0.00028312206, 0.00075499217, 0.0011324883, -0.0067949295, -0.0020573537, -8.5723069e-05, 0.00022859485, 0.00034289228, -0.0020573537, -0.00062292097, -2.524919e-05, 6.7331173e-05, 0.00010099676, -0.00060598056, -0.00018347745, 6.7331173e-05, -0.00017954979, -0.00026932469, 0.0016159481, 0.00048927319, 0.00010099676, -0.00026932469, -0.00040398704, 0.0024239222, 0.00073390978, -0.00060598056, 0.0016159481, 0.0024239222, -0.014543533, -0.0044034587, -0.00018347745, 0.00048927319, 0.00073390978, -0.0044034587, -0.0013332694, 5.6914157e-07, -1.5177109e-06, -2.2765663e-06, 1.3659398e-05, 4.1357621e-06, -1.5177109e-06, 4.047229e-06, 6.0708434e-06, -3.6425061e-05, -1.1028699e-05, -2.2765663e-06, 6.0708434e-06, 9.1062652e-06, -5.4637591e-05, -1.6543048e-05, 1.3659398e-05, -3.6425061e-05, -5.4637591e-05, 0.00032782555, 9.925829e-05, 4.1357621e-06, -1.1028699e-05, -1.6543048e-05, 9.925829e-05, 3.0053205e-05, + 1.0869023e-06, -5.343607e-06, 4.5057041e-06, 9.6437878e-06, -2.1738046e-07, -2.8984062e-06, 1.4249619e-05, -1.2015211e-05, -2.5716767e-05, 5.7968123e-07, -4.3476092e-06, 2.1374428e-05, -1.8022816e-05, -3.8575151e-05, 8.6952185e-07, 2.6085655e-05, -0.00012824657, 0.0001081369, 0.00023145091, -5.2171311e-06, 7.8981568e-06, -3.8830211e-05, 3.274145e-05, 7.0078191e-05, -1.5796314e-06, -5.343607e-06, 2.6271115e-05, -2.215168e-05, -4.7412368e-05, 1.0687214e-06, 1.4249619e-05, -7.0056307e-05, 5.9071146e-05, 0.00012643298, -2.8499237e-06, 2.1374428e-05, -0.00010508446, 8.860672e-05, 0.00018964947, -4.2748856e-06, -0.00012824657, 0.00063050676, -0.00053164032, -0.0011378968, 2.5649314e-05, -3.8830211e-05, 0.00019090344, -0.00016096887, -0.00034452987, 7.7660422e-06, 4.5057041e-06, -2.215168e-05, 1.8678192e-05, 3.9977884e-05, -9.0114082e-07, -1.2015211e-05, 5.9071146e-05, -4.9808511e-05, -0.00010660769, 2.4030422e-06, -1.8022816e-05, 8.860672e-05, -7.4712767e-05, -0.00015991154, 3.6045633e-06, 0.0001081369, -0.00053164032, 0.0004482766, 0.00095946921, -2.162738e-05, 3.274145e-05, -0.00016096887, 0.00013572819, 0.00029050596, -6.54829e-06, 9.6437878e-06, -4.7412368e-05, 3.9977884e-05, 8.5566699e-05, -1.9287576e-06, -2.5716767e-05, 0.00012643298, -0.00010660769, -0.00022817786, 5.1433535e-06, -3.8575151e-05, 0.00018964947, -0.00015991154, -0.0003422668, 7.7150302e-06, 0.00023145091, -0.0011378968, 0.00095946921, 0.0020536008, -4.6290181e-05, 7.0078191e-05, -0.00034452987, 0.00029050596, 0.00062178468, -1.4015638e-05, -2.1738046e-07, 1.0687214e-06, -9.0114082e-07, -1.9287576e-06, 4.3476092e-08, 5.7968123e-07, -2.8499237e-06, 2.4030422e-06, 5.1433535e-06, -1.1593625e-07, 8.6952185e-07, -4.2748856e-06, 3.6045633e-06, 7.7150302e-06, -1.7390437e-07, -5.2171311e-06, 2.5649314e-05, -2.162738e-05, -4.6290181e-05, 1.0434262e-06, -1.5796314e-06, 7.7660422e-06, -6.54829e-06, -1.4015638e-05, 3.1592627e-07, + -1.2647591e-05, 2.0236145e-05, 3.0354217e-05, -5.2613977e-05, -1.2647591e-05, 3.3726908e-05, -5.3963053e-05, -8.0944579e-05, 0.00014030394, 3.3726908e-05, 5.0590362e-05, -8.0944579e-05, -0.00012141687, 0.00021045591, 5.0590362e-05, -0.00030354217, 0.00048566748, 0.00072850121, -0.0012627354, -0.00030354217, -9.1905824e-05, 0.00014704932, 0.00022057398, -0.00038232823, -9.1905824e-05, 6.2180154e-05, -9.9488247e-05, -0.00014923237, 0.00025866944, 6.2180154e-05, -0.00016581374, 0.00026530199, 0.00039795299, -0.00068978518, -0.00016581374, -0.00024872062, 0.00039795299, 0.00059692948, -0.0010346778, -0.00024872062, 0.0014923237, -0.0023877179, -0.0035815769, 0.0062080666, 0.0014923237, 0.00045184245, -0.00072294793, -0.0010844219, 0.0018796646, 0.00045184245, -5.2430012e-05, 8.3888019e-05, 0.00012583203, -0.00021810885, -5.2430012e-05, 0.00013981336, -0.00022370138, -0.00033555207, 0.0005816236, 0.00013981336, 0.00020972005, -0.00033555207, -0.00050332811, 0.00087243539, 0.00020972005, -0.0012583203, 0.0020133124, 0.0030199687, -0.0052346124, -0.0012583203, -0.00038099142, 0.00060958627, 0.0009143794, -0.0015849243, -0.00038099142, -0.00011221862, 0.00017954979, 0.00026932469, -0.00046682946, -0.00011221862, 0.00029924966, -0.00047879945, -0.00071819918, 0.0012448786, 0.00029924966, 0.00044887449, -0.00071819918, -0.0010772988, 0.0018673179, 0.00044887449, -0.0026932469, 0.0043091951, 0.0064637926, -0.011203907, -0.0026932469, -0.00081545532, 0.0013047285, 0.0019570928, -0.0033922941, -0.00081545532, 2.5295181e-06, -4.047229e-06, -6.0708434e-06, 1.0522795e-05, 2.5295181e-06, -6.7453816e-06, 1.0792611e-05, 1.6188916e-05, -2.8060787e-05, -6.7453816e-06, -1.0118072e-05, 1.6188916e-05, 2.4283374e-05, -4.2091181e-05, -1.0118072e-05, 6.0708434e-05, -9.7133495e-05, -0.00014570024, 0.00025254709, 6.0708434e-05, 1.8381165e-05, -2.9409864e-05, -4.4114796e-05, 7.6465646e-05, 1.8381165e-05, + 4.0384459e-05, 5.4103582e-05, -5.7968123e-05, 7.7290831e-06, 9.6613539e-07, -0.00019854469, -0.00026599288, 0.00028499237, -3.7998983e-05, -4.7498729e-06, 0.00016741194, 0.00022428394, -0.00024030422, 3.2040563e-05, 4.0050703e-06, 0.00035832029, 0.00048004632, -0.00051433535, 6.8578046e-05, 8.5722558e-06, -8.0768918e-06, -1.0820716e-05, 1.1593625e-05, -1.5458166e-06, -1.9322708e-07, -0.00019854469, -0.00026599288, 0.00028499237, -3.7998983e-05, -4.7498729e-06, 0.00097611788, 0.0013077177, -0.0014011261, 0.00018681682, 2.3352102e-05, -0.00082305797, -0.0011026614, 0.0011814229, -0.00015752306, -1.9690382e-05, -0.0017616329, -0.0023600823, 0.0025286596, -0.00033715461, -4.2144327e-05, 3.9708937e-05, 5.3198576e-05, -5.6998475e-05, 7.5997966e-06, 9.4997458e-07, 0.00016741194, 0.00022428394, -0.00024030422, 3.2040563e-05, 4.0050703e-06, -0.00082305797, -0.0011026614, 0.0011814229, -0.00015752306, -1.9690382e-05, 0.00069399859, 0.00092975887, -0.00099617022, 0.0001328227, 1.6602837e-05, 0.0014854005, 0.0019900102, -0.0021321538, 0.00028428717, 3.5535897e-05, -3.3482388e-05, -4.4856788e-05, 4.8060844e-05, -6.4081125e-06, -8.0101407e-07, 0.00035832029, 0.00048004632, -0.00051433535, 6.8578046e-05, 8.5722558e-06, -0.0017616329, -0.0023600823, 0.0025286596, -0.00033715461, -4.2144327e-05, 0.0014854005, 0.0019900102, -0.0021321538, 0.00028428717, 3.5535897e-05, 0.0031792782, 0.0042593201, -0.0045635573, 0.0006084743, 7.6059288e-05, -7.1664058e-05, -9.6009265e-05, 0.00010286707, -1.3715609e-05, -1.7144512e-06, -8.0768918e-06, -1.0820716e-05, 1.1593625e-05, -1.5458166e-06, -1.9322708e-07, 3.9708937e-05, 5.3198576e-05, -5.6998475e-05, 7.5997966e-06, 9.4997458e-07, -3.3482388e-05, -4.4856788e-05, 4.8060844e-05, -6.4081125e-06, -8.0101407e-07, -7.1664058e-05, -9.6009265e-05, 0.00010286707, -1.3715609e-05, -1.7144512e-06, 1.6153784e-06, 2.1641433e-06, -2.3187249e-06, 3.0916332e-07, 3.8645415e-08, + -3.7966102e-06, 1.6726219e-05, 2.9002177e-05, 1.5639317e-05, 1.7737642e-06, 1.8665516e-05, -8.2232174e-05, -0.00014258525, -7.6888567e-05, -8.7204697e-06, -1.5738675e-05, 6.933778e-05, 0.00012022721, 6.4832076e-05, 7.3530588e-06, -3.3686286e-05, 0.00014840718, 0.0002573284, 0.00013876339, 1.5738126e-05, 7.5932203e-07, -3.3452438e-06, -5.8004353e-06, -3.1278633e-06, -3.5475284e-07, 1.8665516e-05, -8.2232174e-05, -0.00014258525, -7.6888567e-05, -8.7204697e-06, -9.1766465e-05, 0.00040428327, 0.00070100092, 0.00037801216, 4.2873e-05, 7.7377049e-05, -0.00034088974, -0.00059108066, -0.00031873806, -3.6150311e-05, 0.00016561403, -0.00072962366, -0.00126512, -0.00068221129, -7.737435e-05, -3.7331032e-06, 1.6446435e-05, 2.8517049e-05, 1.5377713e-05, 1.7440939e-06, -1.5738675e-05, 6.933778e-05, 0.00012022721, 6.4832076e-05, 7.3530588e-06, 7.7377049e-05, -0.00034088974, -0.00059108066, -0.00031873806, -3.6150311e-05, -6.5243961e-05, 0.00028743662, 0.00049839641, 0.00026875842, 3.0481771e-05, -0.00013964497, 0.00061521521, 0.0010667432, 0.00057523733, 6.5241685e-05, 3.147735e-06, -1.3867556e-05, -2.4045441e-05, -1.2966415e-05, -1.4706118e-06, -3.3686286e-05, 0.00014840718, 0.0002573284, 0.00013876339, 1.5738126e-05, 0.00016561403, -0.00072962366, -0.00126512, -0.00068221129, -7.737435e-05, -0.00013964497, 0.00061521521, 0.0010667432, 0.00057523733, 6.5241685e-05, -0.00029888923, 0.0013167764, 0.0022832047, 0.0012312097, 0.0001396401, 6.7372573e-06, -2.9681436e-05, -5.1465681e-05, -2.7752678e-05, -3.1476252e-06, 7.5932203e-07, -3.3452438e-06, -5.8004353e-06, -3.1278633e-06, -3.5475284e-07, -3.7331032e-06, 1.6446435e-05, 2.8517049e-05, 1.5377713e-05, 1.7440939e-06, 3.147735e-06, -1.3867556e-05, -2.4045441e-05, -1.2966415e-05, -1.4706118e-06, 6.7372573e-06, -2.9681436e-05, -5.1465681e-05, -2.7752678e-05, -3.1476252e-06, -1.5186441e-07, 6.6904876e-07, 1.1600871e-06, 6.2557266e-07, 7.0950567e-08, + 1.0869023e-06, -2.8984062e-06, -4.3476092e-06, 2.6085655e-05, 7.8981568e-06, -5.343607e-06, 1.4249619e-05, 2.1374428e-05, -0.00012824657, -3.8830211e-05, 4.5057041e-06, -1.2015211e-05, -1.8022816e-05, 0.0001081369, 3.274145e-05, 9.6437878e-06, -2.5716767e-05, -3.8575151e-05, 0.00023145091, 7.0078191e-05, -2.1738046e-07, 5.7968123e-07, 8.6952185e-07, -5.2171311e-06, -1.5796314e-06, -5.343607e-06, 1.4249619e-05, 2.1374428e-05, -0.00012824657, -3.8830211e-05, 2.6271115e-05, -7.0056307e-05, -0.00010508446, 0.00063050676, 0.00019090344, -2.215168e-05, 5.9071146e-05, 8.860672e-05, -0.00053164032, -0.00016096887, -4.7412368e-05, 0.00012643298, 0.00018964947, -0.0011378968, -0.00034452987, 1.0687214e-06, -2.8499237e-06, -4.2748856e-06, 2.5649314e-05, 7.7660422e-06, 4.5057041e-06, -1.2015211e-05, -1.8022816e-05, 0.0001081369, 3.274145e-05, -2.215168e-05, 5.9071146e-05, 8.860672e-05, -0.00053164032, -0.00016096887, 1.8678192e-05, -4.9808511e-05, -7.4712767e-05, 0.0004482766, 0.00013572819, 3.9977884e-05, -0.00010660769, -0.00015991154, 0.00095946921, 0.00029050596, -9.0114082e-07, 2.4030422e-06, 3.6045633e-06, -2.162738e-05, -6.54829e-06, 9.6437878e-06, -2.5716767e-05, -3.8575151e-05, 0.00023145091, 7.0078191e-05, -4.7412368e-05, 0.00012643298, 0.00018964947, -0.0011378968, -0.00034452987, 3.9977884e-05, -0.00010660769, -0.00015991154, 0.00095946921, 0.00029050596, 8.5566699e-05, -0.00022817786, -0.0003422668, 0.0020536008, 0.00062178468, -1.9287576e-06, 5.1433535e-06, 7.7150302e-06, -4.6290181e-05, -1.4015638e-05, -2.1738046e-07, 5.7968123e-07, 8.6952185e-07, -5.2171311e-06, -1.5796314e-06, 1.0687214e-06, -2.8499237e-06, -4.2748856e-06, 2.5649314e-05, 7.7660422e-06, -9.0114082e-07, 2.4030422e-06, 3.6045633e-06, -2.162738e-05, -6.54829e-06, -1.9287576e-06, 5.1433535e-06, 7.7150302e-06, -4.6290181e-05, -1.4015638e-05, 4.3476092e-08, -1.1593625e-07, -1.7390437e-07, 1.0434262e-06, 3.1592627e-07, + -4.151363e-07, 2.040961e-06, -1.7209287e-06, -3.6833912e-06, 8.302726e-08, 2.040961e-06, -1.0034106e-05, 8.4607111e-06, 1.810889e-05, -4.081922e-07, -1.7209287e-06, 8.4607111e-06, -7.1340315e-06, -1.5269331e-05, 3.4418573e-07, -3.6833912e-06, 1.810889e-05, -1.5269331e-05, -3.2681725e-05, 7.3667823e-07, 8.302726e-08, -4.081922e-07, 3.4418573e-07, 7.3667823e-07, -1.6605452e-08, 2.040961e-06, -1.0034106e-05, 8.4607111e-06, 1.810889e-05, -4.081922e-07, -1.0034106e-05, 4.9331316e-05, -4.1595932e-05, -8.902989e-05, 2.0068213e-06, 8.4607111e-06, -4.1595932e-05, 3.5073493e-05, 7.5069582e-05, -1.6921422e-06, 1.810889e-05, -8.902989e-05, 7.5069582e-05, 0.00016067525, -3.6217781e-06, -4.081922e-07, 2.0068213e-06, -1.6921422e-06, -3.6217781e-06, 8.163844e-08, -1.7209287e-06, 8.4607111e-06, -7.1340315e-06, -1.5269331e-05, 3.4418573e-07, 8.4607111e-06, -4.1595932e-05, 3.5073493e-05, 7.5069582e-05, -1.6921422e-06, -7.1340315e-06, 3.5073493e-05, -2.9573803e-05, -6.3298316e-05, 1.4268063e-06, -1.5269331e-05, 7.5069582e-05, -6.3298316e-05, -0.00013548061, 3.0538661e-06, 3.4418573e-07, -1.6921422e-06, 1.4268063e-06, 3.0538661e-06, -6.8837146e-08, -3.6833912e-06, 1.810889e-05, -1.5269331e-05, -3.2681725e-05, 7.3667823e-07, 1.810889e-05, -8.902989e-05, 7.5069582e-05, 0.00016067525, -3.6217781e-06, -1.5269331e-05, 7.5069582e-05, -6.3298316e-05, -0.00013548061, 3.0538661e-06, -3.2681725e-05, 0.00016067525, -0.00013548061, -0.00028997603, 6.536345e-06, 7.3667823e-07, -3.6217781e-06, 3.0538661e-06, 6.536345e-06, -1.4733565e-07, 8.302726e-08, -4.081922e-07, 3.4418573e-07, 7.3667823e-07, -1.6605452e-08, -4.081922e-07, 2.0068213e-06, -1.6921422e-06, -3.6217781e-06, 8.163844e-08, 3.4418573e-07, -1.6921422e-06, 1.4268063e-06, 3.0538661e-06, -6.8837146e-08, 7.3667823e-07, -3.6217781e-06, 3.0538661e-06, 6.536345e-06, -1.4733565e-07, -1.6605452e-08, 8.163844e-08, -6.8837146e-08, -1.4733565e-07, 3.3210904e-09, + 4.8306769e-06, -7.7290831e-06, -1.1593625e-05, 2.0095616e-05, 4.8306769e-06, -2.3749364e-05, 3.7998983e-05, 5.6998475e-05, -9.8797356e-05, -2.3749364e-05, 2.0025352e-05, -3.2040563e-05, -4.8060844e-05, 8.3305463e-05, 2.0025352e-05, 4.2861279e-05, -6.8578046e-05, -0.00010286707, 0.00017830292, 4.2861279e-05, -9.6613539e-07, 1.5458166e-06, 2.3187249e-06, -4.0191232e-06, -9.6613539e-07, -2.3749364e-05, 3.7998983e-05, 5.6998475e-05, -9.8797356e-05, -2.3749364e-05, 0.00011676051, -0.00018681682, -0.00028022523, 0.00048572373, 0.00011676051, -9.8451911e-05, 0.00015752306, 0.00023628459, -0.00040955995, -9.8451911e-05, -0.00021072163, 0.00033715461, 0.00050573192, -0.00087660199, -0.00021072163, 4.7498729e-06, -7.5997966e-06, -1.1399695e-05, 1.9759471e-05, 4.7498729e-06, 2.0025352e-05, -3.2040563e-05, -4.8060844e-05, 8.3305463e-05, 2.0025352e-05, -9.8451911e-05, 0.00015752306, 0.00023628459, -0.00040955995, -9.8451911e-05, 8.3014185e-05, -0.0001328227, -0.00019923404, 0.00034533901, 8.3014185e-05, 0.00017767948, -0.00028428717, -0.00042643076, 0.00073914665, 0.00017767948, -4.0050703e-06, 6.4081125e-06, 9.6121688e-06, -1.6661093e-05, -4.0050703e-06, 4.2861279e-05, -6.8578046e-05, -0.00010286707, 0.00017830292, 4.2861279e-05, -0.00021072163, 0.00033715461, 0.00050573192, -0.00087660199, -0.00021072163, 0.00017767948, -0.00028428717, -0.00042643076, 0.00073914665, 0.00017767948, 0.00038029644, -0.0006084743, -0.00091271145, 0.0015820332, 0.00038029644, -8.5722558e-06, 1.3715609e-05, 2.0573414e-05, -3.5660584e-05, -8.5722558e-06, -9.6613539e-07, 1.5458166e-06, 2.3187249e-06, -4.0191232e-06, -9.6613539e-07, 4.7498729e-06, -7.5997966e-06, -1.1399695e-05, 1.9759471e-05, 4.7498729e-06, -4.0050703e-06, 6.4081125e-06, 9.6121688e-06, -1.6661093e-05, -4.0050703e-06, -8.5722558e-06, 1.3715609e-05, 2.0573414e-05, -3.5660584e-05, -8.5722558e-06, 1.9322708e-07, -3.0916332e-07, -4.6374499e-07, 8.0382464e-07, 1.9322708e-07, + -0.00046992825, -0.00062956895, 0.00067453816, -8.9938421e-05, -1.1242303e-05, 0.0007518852, 0.0010073103, -0.0010792611, 0.00014390147, 1.7987684e-05, 0.0011278278, 0.0015109655, -0.0016188916, 0.00021585221, 2.6981526e-05, -0.0019549015, -0.0026190068, 0.0028060787, -0.00037414383, -4.6767979e-05, -0.00046992825, -0.00062956895, 0.00067453816, -8.9938421e-05, -1.1242303e-05, 0.0023103382, 0.0030951899, -0.0033162749, 0.00044216998, 5.5271248e-05, -0.0036965411, -0.0049523038, 0.0053060398, -0.00070747198, -8.8433997e-05, -0.0055448116, -0.0074284557, 0.0079590597, -0.001061208, -0.000132651, 0.0096110068, 0.01287599, -0.013795704, 0.0018394271, 0.00022992839, 0.0023103382, 0.0030951899, -0.0033162749, 0.00044216998, 5.5271248e-05, -0.0019480662, -0.0026098495, 0.0027962673, -0.00037283564, -4.6604455e-05, 0.0031169059, 0.0041757591, -0.0044740277, 0.00059653702, 7.4567128e-05, 0.0046753589, 0.0062636387, -0.0067110415, 0.00089480553, 0.00011185069, -0.0081039554, -0.010856974, 0.011632472, -0.0015509963, -0.00019387453, -0.0019480662, -0.0026098495, 0.0027962673, -0.00037283564, -4.6604455e-05, -0.0041695452, -0.0055859936, 0.0059849931, -0.00079799909, -9.9749886e-05, 0.0066712724, 0.0089375898, -0.009575989, 0.0012767985, 0.00015959982, 0.010006909, 0.013406385, -0.014363984, 0.0019151978, 0.00023939973, -0.017345308, -0.023237733, 0.024897571, -0.0033196762, -0.00041495952, -0.0041695452, -0.0055859936, 0.0059849931, -0.00079799909, -9.9749886e-05, 9.398565e-05, 0.00012591379, -0.00013490763, 1.7987684e-05, 2.2484605e-06, -0.00015037704, -0.00020146206, 0.00021585221, -2.8780295e-05, -3.5975369e-06, -0.00022556556, -0.0003021931, 0.00032377832, -4.3170442e-05, -5.3963053e-06, 0.00039098031, 0.00052380137, -0.00056121575, 7.4828767e-05, 9.3535958e-06, 9.398565e-05, 0.00012591379, -0.00013490763, 1.7987684e-05, 2.2484605e-06, + 4.4178736e-05, -0.00019463237, -0.00033747987, -0.00018198477, -2.0640165e-05, -7.0685978e-05, 0.00031141178, 0.0005399678, 0.00029117564, 3.3024264e-05, -0.00010602897, 0.00046711768, 0.0008099517, 0.00043676346, 4.9536396e-05, 0.00018378354, -0.00080967064, -0.0014039163, -0.00075705666, -8.5863087e-05, 4.4178736e-05, -0.00019463237, -0.00033747987, -0.00018198477, -2.0640165e-05, -0.00021719873, 0.00095688348, 0.0016591738, 0.00089470333, 0.00010147456, 0.00034751797, -0.0015310136, -0.002654678, -0.0014315253, -0.00016235929, 0.00052127696, -0.0022965204, -0.0039820171, -0.002147288, -0.00024353894, -0.00090354673, 0.0039806353, 0.0069021629, 0.0037219658, 0.00042213416, -0.00021719873, 0.00095688348, 0.0016591738, 0.00089470333, 0.00010147456, 0.00018314094, -0.00080683962, -0.0013990075, -0.00075440961, -8.5562866e-05, -0.00029302551, 0.0012909434, 0.002238412, 0.0012070554, 0.00013690059, -0.00043953826, 0.0019364151, 0.0033576179, 0.0018105831, 0.00020535088, 0.00076186632, -0.0033564528, -0.0058198711, -0.003138344, -0.00035594152, 0.00018314094, -0.00080683962, -0.0013990075, -0.00075440961, -8.5562866e-05, 0.00039198588, -0.0017269199, -0.0029943669, -0.0016147013, -0.00018313456, -0.00062717741, 0.0027630718, 0.004790987, 0.002583522, 0.00029301529, -0.00094076611, 0.0041446077, 0.0071864805, 0.0038752831, 0.00043952293, 0.0016306613, -0.0071839868, -0.012456566, -0.0067171573, -0.00076183975, 0.00039198588, -0.0017269199, -0.0029943669, -0.0016147013, -0.00018313456, -8.8357473e-06, 3.8926473e-05, 6.7495975e-05, 3.6396955e-05, 4.128033e-06, 1.4137196e-05, -6.2282357e-05, -0.00010799356, -5.8235128e-05, -6.6048528e-06, 2.1205793e-05, -9.3423535e-05, -0.00016199034, -8.7352692e-05, -9.9072792e-06, -3.6756709e-05, 0.00016193413, 0.00028078325, 0.00015141133, 1.7172617e-05, -8.8357473e-06, 3.8926473e-05, 6.7495975e-05, 3.6396955e-05, 4.128033e-06, + -1.2647591e-05, 3.3726908e-05, 5.0590362e-05, -0.00030354217, -9.1905824e-05, 2.0236145e-05, -5.3963053e-05, -8.0944579e-05, 0.00048566748, 0.00014704932, 3.0354217e-05, -8.0944579e-05, -0.00012141687, 0.00072850121, 0.00022057398, -5.2613977e-05, 0.00014030394, 0.00021045591, -0.0012627354, -0.00038232823, -1.2647591e-05, 3.3726908e-05, 5.0590362e-05, -0.00030354217, -9.1905824e-05, 6.2180154e-05, -0.00016581374, -0.00024872062, 0.0014923237, 0.00045184245, -9.9488247e-05, 0.00026530199, 0.00039795299, -0.0023877179, -0.00072294793, -0.00014923237, 0.00039795299, 0.00059692948, -0.0035815769, -0.0010844219, 0.00025866944, -0.00068978518, -0.0010346778, 0.0062080666, 0.0018796646, 6.2180154e-05, -0.00016581374, -0.00024872062, 0.0014923237, 0.00045184245, -5.2430012e-05, 0.00013981336, 0.00020972005, -0.0012583203, -0.00038099142, 8.3888019e-05, -0.00022370138, -0.00033555207, 0.0020133124, 0.00060958627, 0.00012583203, -0.00033555207, -0.00050332811, 0.0030199687, 0.0009143794, -0.00021810885, 0.0005816236, 0.00087243539, -0.0052346124, -0.0015849243, -5.2430012e-05, 0.00013981336, 0.00020972005, -0.0012583203, -0.00038099142, -0.00011221862, 0.00029924966, 0.00044887449, -0.0026932469, -0.00081545532, 0.00017954979, -0.00047879945, -0.00071819918, 0.0043091951, 0.0013047285, 0.00026932469, -0.00071819918, -0.0010772988, 0.0064637926, 0.0019570928, -0.00046682946, 0.0012448786, 0.0018673179, -0.011203907, -0.0033922941, -0.00011221862, 0.00029924966, 0.00044887449, -0.0026932469, -0.00081545532, 2.5295181e-06, -6.7453816e-06, -1.0118072e-05, 6.0708434e-05, 1.8381165e-05, -4.047229e-06, 1.0792611e-05, 1.6188916e-05, -9.7133495e-05, -2.9409864e-05, -6.0708434e-06, 1.6188916e-05, 2.4283374e-05, -0.00014570024, -4.4114796e-05, 1.0522795e-05, -2.8060787e-05, -4.2091181e-05, 0.00025254709, 7.6465646e-05, 2.5295181e-06, -6.7453816e-06, -1.0118072e-05, 6.0708434e-05, 1.8381165e-05, + 4.8306769e-06, -2.3749364e-05, 2.0025352e-05, 4.2861279e-05, -9.6613539e-07, -7.7290831e-06, 3.7998983e-05, -3.2040563e-05, -6.8578046e-05, 1.5458166e-06, -1.1593625e-05, 5.6998475e-05, -4.8060844e-05, -0.00010286707, 2.3187249e-06, 2.0095616e-05, -9.8797356e-05, 8.3305463e-05, 0.00017830292, -4.0191232e-06, 4.8306769e-06, -2.3749364e-05, 2.0025352e-05, 4.2861279e-05, -9.6613539e-07, -2.3749364e-05, 0.00011676051, -9.8451911e-05, -0.00021072163, 4.7498729e-06, 3.7998983e-05, -0.00018681682, 0.00015752306, 0.00033715461, -7.5997966e-06, 5.6998475e-05, -0.00028022523, 0.00023628459, 0.00050573192, -1.1399695e-05, -9.8797356e-05, 0.00048572373, -0.00040955995, -0.00087660199, 1.9759471e-05, -2.3749364e-05, 0.00011676051, -9.8451911e-05, -0.00021072163, 4.7498729e-06, 2.0025352e-05, -9.8451911e-05, 8.3014185e-05, 0.00017767948, -4.0050703e-06, -3.2040563e-05, 0.00015752306, -0.0001328227, -0.00028428717, 6.4081125e-06, -4.8060844e-05, 0.00023628459, -0.00019923404, -0.00042643076, 9.6121688e-06, 8.3305463e-05, -0.00040955995, 0.00034533901, 0.00073914665, -1.6661093e-05, 2.0025352e-05, -9.8451911e-05, 8.3014185e-05, 0.00017767948, -4.0050703e-06, 4.2861279e-05, -0.00021072163, 0.00017767948, 0.00038029644, -8.5722558e-06, -6.8578046e-05, 0.00033715461, -0.00028428717, -0.0006084743, 1.3715609e-05, -0.00010286707, 0.00050573192, -0.00042643076, -0.00091271145, 2.0573414e-05, 0.00017830292, -0.00087660199, 0.00073914665, 0.0015820332, -3.5660584e-05, 4.2861279e-05, -0.00021072163, 0.00017767948, 0.00038029644, -8.5722558e-06, -9.6613539e-07, 4.7498729e-06, -4.0050703e-06, -8.5722558e-06, 1.9322708e-07, 1.5458166e-06, -7.5997966e-06, 6.4081125e-06, 1.3715609e-05, -3.0916332e-07, 2.3187249e-06, -1.1399695e-05, 9.6121688e-06, 2.0573414e-05, -4.6374499e-07, -4.0191232e-06, 1.9759471e-05, -1.6661093e-05, -3.5660584e-05, 8.0382464e-07, -9.6613539e-07, 4.7498729e-06, -4.0050703e-06, -8.5722558e-06, 1.9322708e-07, + -5.6211513e-05, 8.9938421e-05, 0.00013490763, -0.0002338399, -5.6211513e-05, 8.9938421e-05, -0.00014390147, -0.00021585221, 0.00037414383, 8.9938421e-05, 0.00013490763, -0.00021585221, -0.00032377832, 0.00056121575, 0.00013490763, -0.0002338399, 0.00037414383, 0.00056121575, -0.00097277397, -0.0002338399, -5.6211513e-05, 8.9938421e-05, 0.00013490763, -0.0002338399, -5.6211513e-05, 0.00027635624, -0.00044216998, -0.00066325498, 0.001149642, 0.00027635624, -0.00044216998, 0.00070747198, 0.001061208, -0.0018394271, -0.00044216998, -0.00066325498, 0.001061208, 0.0015918119, -0.0027591407, -0.00066325498, 0.001149642, -0.0018394271, -0.0027591407, 0.0047825106, 0.001149642, 0.00027635624, -0.00044216998, -0.00066325498, 0.001149642, 0.00027635624, -0.00023302227, 0.00037283564, 0.00055925346, -0.00096937266, -0.00023302227, 0.00037283564, -0.00059653702, -0.00089480553, 0.0015509963, 0.00037283564, 0.00055925346, -0.00089480553, -0.0013422083, 0.0023264944, 0.00055925346, -0.00096937266, 0.0015509963, 0.0023264944, -0.0040325903, -0.00096937266, -0.00023302227, 0.00037283564, 0.00055925346, -0.00096937266, -0.00023302227, -0.00049874943, 0.00079799909, 0.0011969986, -0.0020747976, -0.00049874943, 0.00079799909, -0.0012767985, -0.0019151978, 0.0033196762, 0.00079799909, 0.0011969986, -0.0019151978, -0.0028727967, 0.0049795143, 0.0011969986, -0.0020747976, 0.0033196762, 0.0049795143, -0.0086311581, -0.0020747976, -0.00049874943, 0.00079799909, 0.0011969986, -0.0020747976, -0.00049874943, 1.1242303e-05, -1.7987684e-05, -2.6981526e-05, 4.6767979e-05, 1.1242303e-05, -1.7987684e-05, 2.8780295e-05, 4.3170442e-05, -7.4828767e-05, -1.7987684e-05, -2.6981526e-05, 4.3170442e-05, 6.4755663e-05, -0.00011224315, -2.6981526e-05, 4.6767979e-05, -7.4828767e-05, -0.00011224315, 0.00019455479, 4.6767979e-05, 1.1242303e-05, -1.7987684e-05, -2.6981526e-05, 4.6767979e-05, 1.1242303e-05, + 0.04571462, 0.061244467, -0.065619072, 0.0087492096, 0.0010936512, 0.061244467, 0.082050004, -0.087910719, 0.011721429, 0.0014651786, -0.065619072, -0.087910719, 0.094190056, -0.012558674, -0.0015698343, 0.0087492096, 0.011721429, -0.012558674, 0.0016744899, 0.00020931124, 0.0010936512, 0.0014651786, -0.0015698343, 0.00020931124, 2.6163904e-05, -0.073143393, -0.097991148, 0.10499052, -0.013998735, -0.0017498419, -0.097991148, -0.13128001, 0.14065715, -0.018754287, -0.0023442858, 0.10499052, 0.14065715, -0.15070409, 0.020093879, 0.0025117348, -0.013998735, -0.018754287, 0.020093879, -0.0026791838, -0.00033489798, -0.0017498419, -0.0023442858, 0.0025117348, -0.00033489798, -4.1862247e-05, -0.10971509, -0.14698672, 0.15748577, -0.020998103, -0.0026247629, -0.14698672, -0.19692001, 0.21098573, -0.02813143, -0.0035164288, 0.15748577, 0.21098573, -0.22605613, 0.030140818, 0.0037676022, -0.020998103, -0.02813143, 0.030140818, -0.0040187757, -0.00050234697, -0.0026247629, -0.0035164288, 0.0037676022, -0.00050234697, -6.2793371e-05, 0.19017282, 0.25477698, -0.27297534, 0.036396712, 0.004549589, 0.25477698, 0.34132802, -0.36570859, 0.048761145, 0.0060951432, -0.27297534, -0.36570859, 0.39183063, -0.052244084, -0.0065305105, 0.036396712, 0.048761145, -0.052244084, 0.0069658779, 0.00087073474, 0.004549589, 0.0060951432, -0.0065305105, 0.00087073474, 0.00010884184, 0.04571462, 0.061244467, -0.065619072, 0.0087492096, 0.0010936512, 0.061244467, 0.082050004, -0.087910719, 0.011721429, 0.0014651786, -0.065619072, -0.087910719, 0.094190056, -0.012558674, -0.0015698343, 0.0087492096, 0.011721429, -0.012558674, 0.0016744899, 0.00020931124, 0.0010936512, 0.0014651786, -0.0015698343, 0.00020931124, 2.6163904e-05, + -0.0042977075, 0.018933836, 0.032830042, 0.017703479, 0.0020078753, -0.0057576942, 0.025365905, 0.043982832, 0.023717579, 0.0026899764, 0.0061689581, -0.027177756, -0.047124462, -0.025411692, -0.0028821176, -0.00082252775, 0.0036237008, 0.0062832616, 0.0033882256, 0.00038428235, -0.00010281597, 0.0004529626, 0.00078540771, 0.0004235282, 4.8035293e-05, 0.006876332, -0.030294138, -0.052528067, -0.028325566, -0.0032126004, 0.0092123107, -0.040585449, -0.07037253, -0.037948127, -0.0043039623, -0.0098703329, 0.043484409, 0.07539914, 0.040658707, 0.0046113882, 0.0013160444, -0.0057979212, -0.010053219, -0.005421161, -0.00061485175, 0.00016450555, -0.00072474015, -0.0012566523, -0.00067764512, -7.6856469e-05, 0.010314498, -0.045441208, -0.078792101, -0.042488349, -0.0048189006, 0.013818466, -0.060878173, -0.1055588, -0.05692219, -0.0064559434, -0.014805499, 0.065226614, 0.11309871, 0.060988061, 0.0069170822, 0.0019740666, -0.0086968818, -0.015079828, -0.0081317415, -0.00092227763, 0.00024675832, -0.0010871102, -0.0018849785, -0.0010164677, -0.0001152847, -0.017878463, 0.07876476, 0.13657298, 0.073646472, 0.0083527611, -0.023952008, 0.10552217, 0.18296858, 0.09866513, 0.011190302, 0.025662866, -0.11305946, -0.19603776, -0.10571264, -0.011989609, -0.0034217154, 0.015074595, 0.026138368, 0.014095019, 0.0015986146, -0.00042771443, 0.0018843244, 0.0032672961, 0.0017618773, 0.00019982682, -0.0042977075, 0.018933836, 0.032830042, 0.017703479, 0.0020078753, -0.0057576942, 0.025365905, 0.043982832, 0.023717579, 0.0026899764, 0.0061689581, -0.027177756, -0.047124462, -0.025411692, -0.0028821176, -0.00082252775, 0.0036237008, 0.0062832616, 0.0033882256, 0.00038428235, -0.00010281597, 0.0004529626, 0.00078540771, 0.0004235282, 4.8035293e-05, + 0.0012303576, -0.0032809536, -0.0049214304, 0.029528583, 0.0089405986, 0.001648326, -0.0043955359, -0.0065933039, 0.039559823, 0.011977835, -0.0017660635, 0.0047095028, 0.0070642542, -0.042385525, -0.012833395, 0.00023547514, -0.00062793371, -0.00094190056, 0.0056514034, 0.0017111193, 2.9434392e-05, -7.8491713e-05, -0.00011773757, 0.00070642542, 0.00021388992, -0.0019685722, 0.0052495258, 0.0078742887, -0.047245732, -0.014304958, -0.0026373216, 0.0070328575, 0.010549286, -0.063295718, -0.019164537, 0.0028257017, -0.0075352045, -0.011302807, 0.06781684, 0.020533432, -0.00037676022, 0.0010046939, 0.0015070409, -0.0090422454, -0.002737791, -4.7095028e-05, 0.00012558674, 0.00018838011, -0.0011302807, -0.00034222387, -0.0029528583, 0.0078742887, 0.011811433, -0.070868598, -0.021457437, -0.0039559823, 0.010549286, 0.015823929, -0.094943576, -0.028746805, 0.0042385525, -0.011302807, -0.01695421, 0.10172526, 0.030800148, -0.00056514034, 0.0015070409, 0.0022605613, -0.013563368, -0.0041066864, -7.0642542e-05, 0.00018838011, 0.00028257017, -0.001695421, -0.0005133358, 0.0051182876, -0.013648767, -0.020473151, 0.1228389, 0.03719289, 0.0068570361, -0.01828543, -0.027428144, 0.16456887, 0.049827795, -0.0073468244, 0.019591532, 0.029387297, -0.17632378, -0.053386924, 0.00097957658, -0.0026122042, -0.0039183063, 0.023509838, 0.0071182565, 0.00012244707, -0.00032652553, -0.00048978829, 0.0029387297, 0.00088978206, 0.0012303576, -0.0032809536, -0.0049214304, 0.029528583, 0.0089405986, 0.001648326, -0.0043955359, -0.0065933039, 0.039559823, 0.011977835, -0.0017660635, 0.0047095028, 0.0070642542, -0.042385525, -0.012833395, 0.00023547514, -0.00062793371, -0.00094190056, 0.0056514034, 0.0017111193, 2.9434392e-05, -7.8491713e-05, -0.00011773757, 0.00070642542, 0.00021388992, + -0.00046992825, 0.0023103382, -0.0019480662, -0.0041695452, 9.398565e-05, -0.00062956895, 0.0030951899, -0.0026098495, -0.0055859936, 0.00012591379, 0.00067453816, -0.0033162749, 0.0027962673, 0.0059849931, -0.00013490763, -8.9938421e-05, 0.00044216998, -0.00037283564, -0.00079799909, 1.7987684e-05, -1.1242303e-05, 5.5271248e-05, -4.6604455e-05, -9.9749886e-05, 2.2484605e-06, 0.0007518852, -0.0036965411, 0.0031169059, 0.0066712724, -0.00015037704, 0.0010073103, -0.0049523038, 0.0041757591, 0.0089375898, -0.00020146206, -0.0010792611, 0.0053060398, -0.0044740277, -0.009575989, 0.00021585221, 0.00014390147, -0.00070747198, 0.00059653702, 0.0012767985, -2.8780295e-05, 1.7987684e-05, -8.8433997e-05, 7.4567128e-05, 0.00015959982, -3.5975369e-06, 0.0011278278, -0.0055448116, 0.0046753589, 0.010006909, -0.00022556556, 0.0015109655, -0.0074284557, 0.0062636387, 0.013406385, -0.0003021931, -0.0016188916, 0.0079590597, -0.0067110415, -0.014363984, 0.00032377832, 0.00021585221, -0.001061208, 0.00089480553, 0.0019151978, -4.3170442e-05, 2.6981526e-05, -0.000132651, 0.00011185069, 0.00023939973, -5.3963053e-06, -0.0019549015, 0.0096110068, -0.0081039554, -0.017345308, 0.00039098031, -0.0026190068, 0.01287599, -0.010856974, -0.023237733, 0.00052380137, 0.0028060787, -0.013795704, 0.011632472, 0.024897571, -0.00056121575, -0.00037414383, 0.0018394271, -0.0015509963, -0.0033196762, 7.4828767e-05, -4.6767979e-05, 0.00022992839, -0.00019387453, -0.00041495952, 9.3535958e-06, -0.00046992825, 0.0023103382, -0.0019480662, -0.0041695452, 9.398565e-05, -0.00062956895, 0.0030951899, -0.0026098495, -0.0055859936, 0.00012591379, 0.00067453816, -0.0033162749, 0.0027962673, 0.0059849931, -0.00013490763, -8.9938421e-05, 0.00044216998, -0.00037283564, -0.00079799909, 1.7987684e-05, -1.1242303e-05, 5.5271248e-05, -4.6604455e-05, -9.9749886e-05, 2.2484605e-06, + 0.005468256, -0.0087492096, -0.013123814, 0.022747945, 0.005468256, 0.0073258932, -0.011721429, -0.017582144, 0.030475716, 0.0073258932, -0.0078491713, 0.012558674, 0.018838011, -0.032652553, -0.0078491713, 0.0010465562, -0.0016744899, -0.0025117348, 0.0043536737, 0.0010465562, 0.00013081952, -0.00020931124, -0.00031396685, 0.00054420921, 0.00013081952, -0.0087492096, 0.013998735, 0.020998103, -0.036396712, -0.0087492096, -0.011721429, 0.018754287, 0.02813143, -0.048761145, -0.011721429, 0.012558674, -0.020093879, -0.030140818, 0.052244084, 0.012558674, -0.0016744899, 0.0026791838, 0.0040187757, -0.0069658779, -0.0016744899, -0.00020931124, 0.00033489798, 0.00050234697, -0.00087073474, -0.00020931124, -0.013123814, 0.020998103, 0.031497155, -0.054595068, -0.013123814, -0.017582144, 0.02813143, 0.042197145, -0.073141718, -0.017582144, 0.018838011, -0.030140818, -0.045211227, 0.078366127, 0.018838011, -0.0025117348, 0.0040187757, 0.0060281636, -0.010448817, -0.0025117348, -0.00031396685, 0.00050234697, 0.00075352045, -0.0013061021, -0.00031396685, 0.022747945, -0.036396712, -0.054595068, 0.094631451, 0.022747945, 0.030475716, -0.048761145, -0.073141718, 0.12677898, 0.030475716, -0.032652553, 0.052244084, 0.078366127, -0.13583462, -0.032652553, 0.0043536737, -0.0069658779, -0.010448817, 0.018111283, 0.0043536737, 0.00054420921, -0.00087073474, -0.0013061021, 0.0022639103, 0.00054420921, 0.005468256, -0.0087492096, -0.013123814, 0.022747945, 0.005468256, 0.0073258932, -0.011721429, -0.017582144, 0.030475716, 0.0073258932, -0.0078491713, 0.012558674, 0.018838011, -0.032652553, -0.0078491713, 0.0010465562, -0.0016744899, -0.0025117348, 0.0043536737, 0.0010465562, 0.00013081952, -0.00020931124, -0.00031396685, 0.00054420921, 0.00013081952, + -0.0042977075, -0.0057576942, 0.0061689581, -0.00082252775, -0.00010281597, 0.018933836, 0.025365905, -0.027177756, 0.0036237008, 0.0004529626, 0.032830042, 0.043982832, -0.047124462, 0.0062832616, 0.00078540771, 0.017703479, 0.023717579, -0.025411692, 0.0033882256, 0.0004235282, 0.0020078753, 0.0026899764, -0.0028821176, 0.00038428235, 4.8035293e-05, 0.006876332, 0.0092123107, -0.0098703329, 0.0013160444, 0.00016450555, -0.030294138, -0.040585449, 0.043484409, -0.0057979212, -0.00072474015, -0.052528067, -0.07037253, 0.07539914, -0.010053219, -0.0012566523, -0.028325566, -0.037948127, 0.040658707, -0.005421161, -0.00067764512, -0.0032126004, -0.0043039623, 0.0046113882, -0.00061485175, -7.6856469e-05, 0.010314498, 0.013818466, -0.014805499, 0.0019740666, 0.00024675832, -0.045441208, -0.060878173, 0.065226614, -0.0086968818, -0.0010871102, -0.078792101, -0.1055588, 0.11309871, -0.015079828, -0.0018849785, -0.042488349, -0.05692219, 0.060988061, -0.0081317415, -0.0010164677, -0.0048189006, -0.0064559434, 0.0069170822, -0.00092227763, -0.0001152847, -0.017878463, -0.023952008, 0.025662866, -0.0034217154, -0.00042771443, 0.07876476, 0.10552217, -0.11305946, 0.015074595, 0.0018843244, 0.13657298, 0.18296858, -0.19603776, 0.026138368, 0.0032672961, 0.073646472, 0.09866513, -0.10571264, 0.014095019, 0.0017618773, 0.0083527611, 0.011190302, -0.011989609, 0.0015986146, 0.00019982682, -0.0042977075, -0.0057576942, 0.0061689581, -0.00082252775, -0.00010281597, 0.018933836, 0.025365905, -0.027177756, 0.0036237008, 0.0004529626, 0.032830042, 0.043982832, -0.047124462, 0.0062832616, 0.00078540771, 0.017703479, 0.023717579, -0.025411692, 0.0033882256, 0.0004235282, 0.0020078753, 0.0026899764, -0.0028821176, 0.00038428235, 4.8035293e-05, + 0.00040403462, -0.0017800014, -0.0030864068, -0.0016643335, -0.00018876369, -0.0017800014, 0.0078419149, 0.013597371, 0.007332332, 0.00083161102, -0.0030864068, 0.013597371, 0.023576958, 0.012713787, 0.0014419595, -0.0016643335, 0.007332332, 0.012713787, 0.0068558628, 0.00077757131, -0.00018876369, 0.00083161102, 0.0014419595, 0.00077757131, 8.8189796e-05, -0.0006464554, 0.0028480023, 0.004938251, 0.0026629336, 0.00030202191, 0.0028480023, -0.012547064, -0.021755793, -0.011731731, -0.0013305776, 0.004938251, -0.021755793, -0.037723132, -0.02034206, -0.0023071351, 0.0026629336, -0.011731731, -0.02034206, -0.01096938, -0.0012441141, 0.00030202191, -0.0013305776, -0.0023071351, -0.0012441141, -0.00014110367, -0.0009696831, 0.0042720035, 0.0074073764, 0.0039944004, 0.00045303286, 0.0042720035, -0.018820596, -0.03263369, -0.017597597, -0.0019958664, 0.0074073764, -0.03263369, -0.056584698, -0.030513089, -0.0034607027, 0.0039944004, -0.017597597, -0.030513089, -0.016454071, -0.0018661711, 0.00045303286, -0.0019958664, -0.0034607027, -0.0018661711, -0.00021165551, 0.001680784, -0.007404806, -0.012839452, -0.0069236273, -0.00078525696, -0.007404806, 0.032622366, 0.056565063, 0.030502501, 0.0034595018, -0.012839452, 0.056565063, 0.098080144, 0.052889355, 0.0059985514, -0.0069236273, 0.030502501, 0.052889355, 0.028520389, 0.0032346966, -0.00078525696, 0.0034595018, 0.0059985514, 0.0032346966, 0.00036686955, 0.00040403462, -0.0017800014, -0.0030864068, -0.0016643335, -0.00018876369, -0.0017800014, 0.0078419149, 0.013597371, 0.007332332, 0.00083161102, -0.0030864068, 0.013597371, 0.023576958, 0.012713787, 0.0014419595, -0.0016643335, 0.007332332, 0.012713787, 0.0068558628, 0.00077757131, -0.00018876369, 0.00083161102, 0.0014419595, 0.00077757131, 8.8189796e-05, + -0.00011566796, 0.0003084479, 0.00046267186, -0.0027760311, -0.00084052054, 0.00050958292, -0.0013588878, -0.0020383317, 0.01222999, 0.0037029692, 0.00088358367, -0.0023562231, -0.0035343347, 0.021206008, 0.006420708, 0.00047646923, -0.0012705846, -0.0019058769, 0.011435261, 0.0034623431, 5.4039705e-05, -0.00014410588, -0.00021615882, 0.0012969529, 0.00039268852, 0.00018506874, -0.00049351665, -0.00074027497, 0.0044416498, 0.0013448329, -0.00081533267, 0.0021742205, 0.0032613307, -0.019567984, -0.0059247507, -0.0014137339, 0.003769957, 0.0056549355, -0.033929613, -0.010273133, -0.00076235077, 0.0020329354, 0.0030494031, -0.018296418, -0.0055397489, -8.6463528e-05, 0.00023056941, 0.00034585411, -0.0020751247, -0.00062830164, 0.00027760311, -0.00074027497, -0.0011104125, 0.0066624747, 0.0020172493, -0.001222999, 0.0032613307, 0.004891996, -0.029351976, -0.0088871261, -0.0021206008, 0.0056549355, 0.0084824032, -0.050894419, -0.015409699, -0.0011435261, 0.0030494031, 0.0045741046, -0.027444628, -0.0083096233, -0.00012969529, 0.00034585411, 0.00051878117, -0.003112687, -0.00094245245, -0.00048117873, 0.0012831433, 0.0019247149, -0.01154829, -0.0034965654, 0.0021198649, -0.0056529732, -0.0084794598, 0.050876759, 0.015404352, 0.0036757081, -0.0098018882, -0.014702832, 0.088216994, 0.026710145, 0.001982112, -0.005285632, -0.007928448, 0.047570688, 0.014403347, 0.00022480517, -0.00059948046, -0.00089922069, 0.0053953241, 0.0016335843, -0.00011566796, 0.0003084479, 0.00046267186, -0.0027760311, -0.00084052054, 0.00050958292, -0.0013588878, -0.0020383317, 0.01222999, 0.0037029692, 0.00088358367, -0.0023562231, -0.0035343347, 0.021206008, 0.006420708, 0.00047646923, -0.0012705846, -0.0019058769, 0.011435261, 0.0034623431, 5.4039705e-05, -0.00014410588, -0.00021615882, 0.0012969529, 0.00039268852, + 4.4178736e-05, -0.00021719873, 0.00018314094, 0.00039198588, -8.8357473e-06, -0.00019463237, 0.00095688348, -0.00080683962, -0.0017269199, 3.8926473e-05, -0.00033747987, 0.0016591738, -0.0013990075, -0.0029943669, 6.7495975e-05, -0.00018198477, 0.00089470333, -0.00075440961, -0.0016147013, 3.6396955e-05, -2.0640165e-05, 0.00010147456, -8.5562866e-05, -0.00018313456, 4.128033e-06, -7.0685978e-05, 0.00034751797, -0.00029302551, -0.00062717741, 1.4137196e-05, 0.00031141178, -0.0015310136, 0.0012909434, 0.0027630718, -6.2282357e-05, 0.0005399678, -0.002654678, 0.002238412, 0.004790987, -0.00010799356, 0.00029117564, -0.0014315253, 0.0012070554, 0.002583522, -5.8235128e-05, 3.3024264e-05, -0.00016235929, 0.00013690059, 0.00029301529, -6.6048528e-06, -0.00010602897, 0.00052127696, -0.00043953826, -0.00094076611, 2.1205793e-05, 0.00046711768, -0.0022965204, 0.0019364151, 0.0041446077, -9.3423535e-05, 0.0008099517, -0.0039820171, 0.0033576179, 0.0071864805, -0.00016199034, 0.00043676346, -0.002147288, 0.0018105831, 0.0038752831, -8.7352692e-05, 4.9536396e-05, -0.00024353894, 0.00020535088, 0.00043952293, -9.9072792e-06, 0.00018378354, -0.00090354673, 0.00076186632, 0.0016306613, -3.6756709e-05, -0.00080967064, 0.0039806353, -0.0033564528, -0.0071839868, 0.00016193413, -0.0014039163, 0.0069021629, -0.0058198711, -0.012456566, 0.00028078325, -0.00075705666, 0.0037219658, -0.003138344, -0.0067171573, 0.00015141133, -8.5863087e-05, 0.00042213416, -0.00035594152, -0.00076183975, 1.7172617e-05, 4.4178736e-05, -0.00021719873, 0.00018314094, 0.00039198588, -8.8357473e-06, -0.00019463237, 0.00095688348, -0.00080683962, -0.0017269199, 3.8926473e-05, -0.00033747987, 0.0016591738, -0.0013990075, -0.0029943669, 6.7495975e-05, -0.00018198477, 0.00089470333, -0.00075440961, -0.0016147013, 3.6396955e-05, -2.0640165e-05, 0.00010147456, -8.5562866e-05, -0.00018313456, 4.128033e-06, + -0.00051407984, 0.00082252775, 0.0012337916, -0.0021385721, -0.00051407984, 0.002264813, -0.0036237008, -0.0054355511, 0.009421622, 0.002264813, 0.0039270385, -0.0062832616, -0.0094248925, 0.01633648, 0.0039270385, 0.002117641, -0.0033882256, -0.0050823384, 0.0088093866, 0.002117641, 0.00024017647, -0.00038428235, -0.00057642352, 0.0009991341, 0.00024017647, 0.00082252775, -0.0013160444, -0.0019740666, 0.0034217154, 0.00082252775, -0.0036237008, 0.0057979212, 0.0086968818, -0.015074595, -0.0036237008, -0.0062832616, 0.010053219, 0.015079828, -0.026138368, -0.0062832616, -0.0033882256, 0.005421161, 0.0081317415, -0.014095019, -0.0033882256, -0.00038428235, 0.00061485175, 0.00092227763, -0.0015986146, -0.00038428235, 0.0012337916, -0.0019740666, -0.0029610999, 0.0051325731, 0.0012337916, -0.0054355511, 0.0086968818, 0.013045323, -0.022611893, -0.0054355511, -0.0094248925, 0.015079828, 0.022619742, -0.039207553, -0.0094248925, -0.0050823384, 0.0081317415, 0.012197612, -0.021142528, -0.0050823384, -0.00057642352, 0.00092227763, 0.0013834164, -0.0023979218, -0.00057642352, -0.0021385721, 0.0034217154, 0.0051325731, -0.0088964601, -0.0021385721, 0.009421622, -0.015074595, -0.022611893, 0.039193947, 0.009421622, 0.01633648, -0.026138368, -0.039207553, 0.067959758, 0.01633648, 0.0088093866, -0.014095019, -0.021142528, 0.036647048, 0.0088093866, 0.0009991341, -0.0015986146, -0.0023979218, 0.0041563979, 0.0009991341, -0.00051407984, 0.00082252775, 0.0012337916, -0.0021385721, -0.00051407984, 0.002264813, -0.0036237008, -0.0054355511, 0.009421622, 0.002264813, 0.0039270385, -0.0062832616, -0.0094248925, 0.01633648, 0.0039270385, 0.002117641, -0.0033882256, -0.0050823384, 0.0088093866, 0.002117641, 0.00024017647, -0.00038428235, -0.00057642352, 0.0009991341, 0.00024017647, + 0.0012303576, 0.001648326, -0.0017660635, 0.00023547514, 2.9434392e-05, -0.0032809536, -0.0043955359, 0.0047095028, -0.00062793371, -7.8491713e-05, -0.0049214304, -0.0065933039, 0.0070642542, -0.00094190056, -0.00011773757, 0.029528583, 0.039559823, -0.042385525, 0.0056514034, 0.00070642542, 0.0089405986, 0.011977835, -0.012833395, 0.0017111193, 0.00021388992, -0.0019685722, -0.0026373216, 0.0028257017, -0.00037676022, -4.7095028e-05, 0.0052495258, 0.0070328575, -0.0075352045, 0.0010046939, 0.00012558674, 0.0078742887, 0.010549286, -0.011302807, 0.0015070409, 0.00018838011, -0.047245732, -0.063295718, 0.06781684, -0.0090422454, -0.0011302807, -0.014304958, -0.019164537, 0.020533432, -0.002737791, -0.00034222387, -0.0029528583, -0.0039559823, 0.0042385525, -0.00056514034, -7.0642542e-05, 0.0078742887, 0.010549286, -0.011302807, 0.0015070409, 0.00018838011, 0.011811433, 0.015823929, -0.01695421, 0.0022605613, 0.00028257017, -0.070868598, -0.094943576, 0.10172526, -0.013563368, -0.001695421, -0.021457437, -0.028746805, 0.030800148, -0.0041066864, -0.0005133358, 0.0051182876, 0.0068570361, -0.0073468244, 0.00097957658, 0.00012244707, -0.013648767, -0.01828543, 0.019591532, -0.0026122042, -0.00032652553, -0.020473151, -0.027428144, 0.029387297, -0.0039183063, -0.00048978829, 0.1228389, 0.16456887, -0.17632378, 0.023509838, 0.0029387297, 0.03719289, 0.049827795, -0.053386924, 0.0071182565, 0.00088978206, 0.0012303576, 0.001648326, -0.0017660635, 0.00023547514, 2.9434392e-05, -0.0032809536, -0.0043955359, 0.0047095028, -0.00062793371, -7.8491713e-05, -0.0049214304, -0.0065933039, 0.0070642542, -0.00094190056, -0.00011773757, 0.029528583, 0.039559823, -0.042385525, 0.0056514034, 0.00070642542, 0.0089405986, 0.011977835, -0.012833395, 0.0017111193, 0.00021388992, + -0.00011566796, 0.00050958292, 0.00088358367, 0.00047646923, 5.4039705e-05, 0.0003084479, -0.0013588878, -0.0023562231, -0.0012705846, -0.00014410588, 0.00046267186, -0.0020383317, -0.0035343347, -0.0019058769, -0.00021615882, -0.0027760311, 0.01222999, 0.021206008, 0.011435261, 0.0012969529, -0.00084052054, 0.0037029692, 0.006420708, 0.0034623431, 0.00039268852, 0.00018506874, -0.00081533267, -0.0014137339, -0.00076235077, -8.6463528e-05, -0.00049351665, 0.0021742205, 0.003769957, 0.0020329354, 0.00023056941, -0.00074027497, 0.0032613307, 0.0056549355, 0.0030494031, 0.00034585411, 0.0044416498, -0.019567984, -0.033929613, -0.018296418, -0.0020751247, 0.0013448329, -0.0059247507, -0.010273133, -0.0055397489, -0.00062830164, 0.00027760311, -0.001222999, -0.0021206008, -0.0011435261, -0.00012969529, -0.00074027497, 0.0032613307, 0.0056549355, 0.0030494031, 0.00034585411, -0.0011104125, 0.004891996, 0.0084824032, 0.0045741046, 0.00051878117, 0.0066624747, -0.029351976, -0.050894419, -0.027444628, -0.003112687, 0.0020172493, -0.0088871261, -0.015409699, -0.0083096233, -0.00094245245, -0.00048117873, 0.0021198649, 0.0036757081, 0.001982112, 0.00022480517, 0.0012831433, -0.0056529732, -0.0098018882, -0.005285632, -0.00059948046, 0.0019247149, -0.0084794598, -0.014702832, -0.007928448, -0.00089922069, -0.01154829, 0.050876759, 0.088216994, 0.047570688, 0.0053953241, -0.0034965654, 0.015404352, 0.026710145, 0.014403347, 0.0016335843, -0.00011566796, 0.00050958292, 0.00088358367, 0.00047646923, 5.4039705e-05, 0.0003084479, -0.0013588878, -0.0023562231, -0.0012705846, -0.00014410588, 0.00046267186, -0.0020383317, -0.0035343347, -0.0019058769, -0.00021615882, -0.0027760311, 0.01222999, 0.021206008, 0.011435261, 0.0012969529, -0.00084052054, 0.0037029692, 0.006420708, 0.0034623431, 0.00039268852, + 3.3113692e-05, -8.8303177e-05, -0.00013245477, 0.0007947286, 0.00024062616, -8.8303177e-05, 0.00023547514, 0.00035321271, -0.0021192763, -0.00064166976, -0.00013245477, 0.00035321271, 0.00052981906, -0.0031789144, -0.00096250463, 0.0007947286, -0.0021192763, -0.0031789144, 0.019073486, 0.0057750278, 0.00024062616, -0.00064166976, -0.00096250463, 0.0057750278, 0.0017485501, -5.2981906e-05, 0.00014128508, 0.00021192763, -0.0012715658, -0.00038500185, 0.00014128508, -0.00037676022, -0.00056514034, 0.003390842, 0.0010266716, 0.00021192763, -0.00056514034, -0.0008477105, 0.005086263, 0.0015400074, -0.0012715658, 0.003390842, 0.005086263, -0.030517578, -0.0092400445, -0.00038500185, 0.0010266716, 0.0015400074, -0.0092400445, -0.0027976801, -7.947286e-05, 0.00021192763, 0.00031789144, -0.0019073486, -0.00057750278, 0.00021192763, -0.00056514034, -0.0008477105, 0.005086263, 0.0015400074, 0.00031789144, -0.0008477105, -0.0012715658, 0.0076293945, 0.0023100111, -0.0019073486, 0.005086263, 0.0076293945, -0.045776367, -0.013860067, -0.00057750278, 0.0015400074, 0.0023100111, -0.013860067, -0.0041965202, 0.00013775296, -0.00036734122, -0.00055101183, 0.003306071, 0.0010010048, -0.00036734122, 0.00097957658, 0.0014693649, -0.0088161892, -0.0026693462, -0.00055101183, 0.0014693649, 0.0022040473, -0.013224284, -0.0040040193, 0.003306071, -0.0088161892, -0.013224284, 0.079345703, 0.024024116, 0.0010010048, -0.0026693462, -0.0040040193, 0.024024116, 0.0072739684, 3.3113692e-05, -8.8303177e-05, -0.00013245477, 0.0007947286, 0.00024062616, -8.8303177e-05, 0.00023547514, 0.00035321271, -0.0021192763, -0.00064166976, -0.00013245477, 0.00035321271, 0.00052981906, -0.0031789144, -0.00096250463, 0.0007947286, -0.0021192763, -0.0031789144, 0.019073486, 0.0057750278, 0.00024062616, -0.00064166976, -0.00096250463, 0.0057750278, 0.0017485501, + -1.2647591e-05, 6.2180154e-05, -5.2430012e-05, -0.00011221862, 2.5295181e-06, 3.3726908e-05, -0.00016581374, 0.00013981336, 0.00029924966, -6.7453816e-06, 5.0590362e-05, -0.00024872062, 0.00020972005, 0.00044887449, -1.0118072e-05, -0.00030354217, 0.0014923237, -0.0012583203, -0.0026932469, 6.0708434e-05, -9.1905824e-05, 0.00045184245, -0.00038099142, -0.00081545532, 1.8381165e-05, 2.0236145e-05, -9.9488247e-05, 8.3888019e-05, 0.00017954979, -4.047229e-06, -5.3963053e-05, 0.00026530199, -0.00022370138, -0.00047879945, 1.0792611e-05, -8.0944579e-05, 0.00039795299, -0.00033555207, -0.00071819918, 1.6188916e-05, 0.00048566748, -0.0023877179, 0.0020133124, 0.0043091951, -9.7133495e-05, 0.00014704932, -0.00072294793, 0.00060958627, 0.0013047285, -2.9409864e-05, 3.0354217e-05, -0.00014923237, 0.00012583203, 0.00026932469, -6.0708434e-06, -8.0944579e-05, 0.00039795299, -0.00033555207, -0.00071819918, 1.6188916e-05, -0.00012141687, 0.00059692948, -0.00050332811, -0.0010772988, 2.4283374e-05, 0.00072850121, -0.0035815769, 0.0030199687, 0.0064637926, -0.00014570024, 0.00022057398, -0.0010844219, 0.0009143794, 0.0019570928, -4.4114796e-05, -5.2613977e-05, 0.00025866944, -0.00021810885, -0.00046682946, 1.0522795e-05, 0.00014030394, -0.00068978518, 0.0005816236, 0.0012448786, -2.8060787e-05, 0.00021045591, -0.0010346778, 0.00087243539, 0.0018673179, -4.2091181e-05, -0.0012627354, 0.0062080666, -0.0052346124, -0.011203907, 0.00025254709, -0.00038232823, 0.0018796646, -0.0015849243, -0.0033922941, 7.6465646e-05, -1.2647591e-05, 6.2180154e-05, -5.2430012e-05, -0.00011221862, 2.5295181e-06, 3.3726908e-05, -0.00016581374, 0.00013981336, 0.00029924966, -6.7453816e-06, 5.0590362e-05, -0.00024872062, 0.00020972005, 0.00044887449, -1.0118072e-05, -0.00030354217, 0.0014923237, -0.0012583203, -0.0026932469, 6.0708434e-05, -9.1905824e-05, 0.00045184245, -0.00038099142, -0.00081545532, 1.8381165e-05, + 0.00014717196, -0.00023547514, -0.00035321271, 0.00061223536, 0.00014717196, -0.00039245857, 0.00062793371, 0.00094190056, -0.0016326276, -0.00039245857, -0.00058868785, 0.00094190056, 0.0014128508, -0.0024489415, -0.00058868785, 0.0035321271, -0.0056514034, -0.008477105, 0.014693649, 0.0035321271, 0.0010694496, -0.0017111193, -0.002566679, 0.0044489103, 0.0010694496, -0.00023547514, 0.00037676022, 0.00056514034, -0.00097957658, -0.00023547514, 0.00062793371, -0.0010046939, -0.0015070409, 0.0026122042, 0.00062793371, 0.00094190056, -0.0015070409, -0.0022605613, 0.0039183063, 0.00094190056, -0.0056514034, 0.0090422454, 0.013563368, -0.023509838, -0.0056514034, -0.0017111193, 0.002737791, 0.0041066864, -0.0071182565, -0.0017111193, -0.00035321271, 0.00056514034, 0.0008477105, -0.0014693649, -0.00035321271, 0.00094190056, -0.0015070409, -0.0022605613, 0.0039183063, 0.00094190056, 0.0014128508, -0.0022605613, -0.003390842, 0.0058774595, 0.0014128508, -0.008477105, 0.013563368, 0.020345052, -0.035264757, -0.008477105, -0.002566679, 0.0041066864, 0.0061600297, -0.010677385, -0.002566679, 0.00061223536, -0.00097957658, -0.0014693649, 0.0025468991, 0.00061223536, -0.0016326276, 0.0026122042, 0.0039183063, -0.006791731, -0.0016326276, -0.0024489415, 0.0039183063, 0.0058774595, -0.010187596, -0.0024489415, 0.014693649, -0.023509838, -0.035264757, 0.061125579, 0.014693649, 0.0044489103, -0.0071182565, -0.010677385, 0.018507467, 0.0044489103, 0.00014717196, -0.00023547514, -0.00035321271, 0.00061223536, 0.00014717196, -0.00039245857, 0.00062793371, 0.00094190056, -0.0016326276, -0.00039245857, -0.00058868785, 0.00094190056, 0.0014128508, -0.0024489415, -0.00058868785, 0.0035321271, -0.0056514034, -0.008477105, 0.014693649, 0.0035321271, 0.0010694496, -0.0017111193, -0.002566679, 0.0044489103, 0.0010694496, + -0.00046992825, -0.00062956895, 0.00067453816, -8.9938421e-05, -1.1242303e-05, 0.0023103382, 0.0030951899, -0.0033162749, 0.00044216998, 5.5271248e-05, -0.0019480662, -0.0026098495, 0.0027962673, -0.00037283564, -4.6604455e-05, -0.0041695452, -0.0055859936, 0.0059849931, -0.00079799909, -9.9749886e-05, 9.398565e-05, 0.00012591379, -0.00013490763, 1.7987684e-05, 2.2484605e-06, 0.0007518852, 0.0010073103, -0.0010792611, 0.00014390147, 1.7987684e-05, -0.0036965411, -0.0049523038, 0.0053060398, -0.00070747198, -8.8433997e-05, 0.0031169059, 0.0041757591, -0.0044740277, 0.00059653702, 7.4567128e-05, 0.0066712724, 0.0089375898, -0.009575989, 0.0012767985, 0.00015959982, -0.00015037704, -0.00020146206, 0.00021585221, -2.8780295e-05, -3.5975369e-06, 0.0011278278, 0.0015109655, -0.0016188916, 0.00021585221, 2.6981526e-05, -0.0055448116, -0.0074284557, 0.0079590597, -0.001061208, -0.000132651, 0.0046753589, 0.0062636387, -0.0067110415, 0.00089480553, 0.00011185069, 0.010006909, 0.013406385, -0.014363984, 0.0019151978, 0.00023939973, -0.00022556556, -0.0003021931, 0.00032377832, -4.3170442e-05, -5.3963053e-06, -0.0019549015, -0.0026190068, 0.0028060787, -0.00037414383, -4.6767979e-05, 0.0096110068, 0.01287599, -0.013795704, 0.0018394271, 0.00022992839, -0.0081039554, -0.010856974, 0.011632472, -0.0015509963, -0.00019387453, -0.017345308, -0.023237733, 0.024897571, -0.0033196762, -0.00041495952, 0.00039098031, 0.00052380137, -0.00056121575, 7.4828767e-05, 9.3535958e-06, -0.00046992825, -0.00062956895, 0.00067453816, -8.9938421e-05, -1.1242303e-05, 0.0023103382, 0.0030951899, -0.0033162749, 0.00044216998, 5.5271248e-05, -0.0019480662, -0.0026098495, 0.0027962673, -0.00037283564, -4.6604455e-05, -0.0041695452, -0.0055859936, 0.0059849931, -0.00079799909, -9.9749886e-05, 9.398565e-05, 0.00012591379, -0.00013490763, 1.7987684e-05, 2.2484605e-06, + 4.4178736e-05, -0.00019463237, -0.00033747987, -0.00018198477, -2.0640165e-05, -0.00021719873, 0.00095688348, 0.0016591738, 0.00089470333, 0.00010147456, 0.00018314094, -0.00080683962, -0.0013990075, -0.00075440961, -8.5562866e-05, 0.00039198588, -0.0017269199, -0.0029943669, -0.0016147013, -0.00018313456, -8.8357473e-06, 3.8926473e-05, 6.7495975e-05, 3.6396955e-05, 4.128033e-06, -7.0685978e-05, 0.00031141178, 0.0005399678, 0.00029117564, 3.3024264e-05, 0.00034751797, -0.0015310136, -0.002654678, -0.0014315253, -0.00016235929, -0.00029302551, 0.0012909434, 0.002238412, 0.0012070554, 0.00013690059, -0.00062717741, 0.0027630718, 0.004790987, 0.002583522, 0.00029301529, 1.4137196e-05, -6.2282357e-05, -0.00010799356, -5.8235128e-05, -6.6048528e-06, -0.00010602897, 0.00046711768, 0.0008099517, 0.00043676346, 4.9536396e-05, 0.00052127696, -0.0022965204, -0.0039820171, -0.002147288, -0.00024353894, -0.00043953826, 0.0019364151, 0.0033576179, 0.0018105831, 0.00020535088, -0.00094076611, 0.0041446077, 0.0071864805, 0.0038752831, 0.00043952293, 2.1205793e-05, -9.3423535e-05, -0.00016199034, -8.7352692e-05, -9.9072792e-06, 0.00018378354, -0.00080967064, -0.0014039163, -0.00075705666, -8.5863087e-05, -0.00090354673, 0.0039806353, 0.0069021629, 0.0037219658, 0.00042213416, 0.00076186632, -0.0033564528, -0.0058198711, -0.003138344, -0.00035594152, 0.0016306613, -0.0071839868, -0.012456566, -0.0067171573, -0.00076183975, -3.6756709e-05, 0.00016193413, 0.00028078325, 0.00015141133, 1.7172617e-05, 4.4178736e-05, -0.00019463237, -0.00033747987, -0.00018198477, -2.0640165e-05, -0.00021719873, 0.00095688348, 0.0016591738, 0.00089470333, 0.00010147456, 0.00018314094, -0.00080683962, -0.0013990075, -0.00075440961, -8.5562866e-05, 0.00039198588, -0.0017269199, -0.0029943669, -0.0016147013, -0.00018313456, -8.8357473e-06, 3.8926473e-05, 6.7495975e-05, 3.6396955e-05, 4.128033e-06, + -1.2647591e-05, 3.3726908e-05, 5.0590362e-05, -0.00030354217, -9.1905824e-05, 6.2180154e-05, -0.00016581374, -0.00024872062, 0.0014923237, 0.00045184245, -5.2430012e-05, 0.00013981336, 0.00020972005, -0.0012583203, -0.00038099142, -0.00011221862, 0.00029924966, 0.00044887449, -0.0026932469, -0.00081545532, 2.5295181e-06, -6.7453816e-06, -1.0118072e-05, 6.0708434e-05, 1.8381165e-05, 2.0236145e-05, -5.3963053e-05, -8.0944579e-05, 0.00048566748, 0.00014704932, -9.9488247e-05, 0.00026530199, 0.00039795299, -0.0023877179, -0.00072294793, 8.3888019e-05, -0.00022370138, -0.00033555207, 0.0020133124, 0.00060958627, 0.00017954979, -0.00047879945, -0.00071819918, 0.0043091951, 0.0013047285, -4.047229e-06, 1.0792611e-05, 1.6188916e-05, -9.7133495e-05, -2.9409864e-05, 3.0354217e-05, -8.0944579e-05, -0.00012141687, 0.00072850121, 0.00022057398, -0.00014923237, 0.00039795299, 0.00059692948, -0.0035815769, -0.0010844219, 0.00012583203, -0.00033555207, -0.00050332811, 0.0030199687, 0.0009143794, 0.00026932469, -0.00071819918, -0.0010772988, 0.0064637926, 0.0019570928, -6.0708434e-06, 1.6188916e-05, 2.4283374e-05, -0.00014570024, -4.4114796e-05, -5.2613977e-05, 0.00014030394, 0.00021045591, -0.0012627354, -0.00038232823, 0.00025866944, -0.00068978518, -0.0010346778, 0.0062080666, 0.0018796646, -0.00021810885, 0.0005816236, 0.00087243539, -0.0052346124, -0.0015849243, -0.00046682946, 0.0012448786, 0.0018673179, -0.011203907, -0.0033922941, 1.0522795e-05, -2.8060787e-05, -4.2091181e-05, 0.00025254709, 7.6465646e-05, -1.2647591e-05, 3.3726908e-05, 5.0590362e-05, -0.00030354217, -9.1905824e-05, 6.2180154e-05, -0.00016581374, -0.00024872062, 0.0014923237, 0.00045184245, -5.2430012e-05, 0.00013981336, 0.00020972005, -0.0012583203, -0.00038099142, -0.00011221862, 0.00029924966, 0.00044887449, -0.0026932469, -0.00081545532, 2.5295181e-06, -6.7453816e-06, -1.0118072e-05, 6.0708434e-05, 1.8381165e-05, + 4.8306769e-06, -2.3749364e-05, 2.0025352e-05, 4.2861279e-05, -9.6613539e-07, -2.3749364e-05, 0.00011676051, -9.8451911e-05, -0.00021072163, 4.7498729e-06, 2.0025352e-05, -9.8451911e-05, 8.3014185e-05, 0.00017767948, -4.0050703e-06, 4.2861279e-05, -0.00021072163, 0.00017767948, 0.00038029644, -8.5722558e-06, -9.6613539e-07, 4.7498729e-06, -4.0050703e-06, -8.5722558e-06, 1.9322708e-07, -7.7290831e-06, 3.7998983e-05, -3.2040563e-05, -6.8578046e-05, 1.5458166e-06, 3.7998983e-05, -0.00018681682, 0.00015752306, 0.00033715461, -7.5997966e-06, -3.2040563e-05, 0.00015752306, -0.0001328227, -0.00028428717, 6.4081125e-06, -6.8578046e-05, 0.00033715461, -0.00028428717, -0.0006084743, 1.3715609e-05, 1.5458166e-06, -7.5997966e-06, 6.4081125e-06, 1.3715609e-05, -3.0916332e-07, -1.1593625e-05, 5.6998475e-05, -4.8060844e-05, -0.00010286707, 2.3187249e-06, 5.6998475e-05, -0.00028022523, 0.00023628459, 0.00050573192, -1.1399695e-05, -4.8060844e-05, 0.00023628459, -0.00019923404, -0.00042643076, 9.6121688e-06, -0.00010286707, 0.00050573192, -0.00042643076, -0.00091271145, 2.0573414e-05, 2.3187249e-06, -1.1399695e-05, 9.6121688e-06, 2.0573414e-05, -4.6374499e-07, 2.0095616e-05, -9.8797356e-05, 8.3305463e-05, 0.00017830292, -4.0191232e-06, -9.8797356e-05, 0.00048572373, -0.00040955995, -0.00087660199, 1.9759471e-05, 8.3305463e-05, -0.00040955995, 0.00034533901, 0.00073914665, -1.6661093e-05, 0.00017830292, -0.00087660199, 0.00073914665, 0.0015820332, -3.5660584e-05, -4.0191232e-06, 1.9759471e-05, -1.6661093e-05, -3.5660584e-05, 8.0382464e-07, 4.8306769e-06, -2.3749364e-05, 2.0025352e-05, 4.2861279e-05, -9.6613539e-07, -2.3749364e-05, 0.00011676051, -9.8451911e-05, -0.00021072163, 4.7498729e-06, 2.0025352e-05, -9.8451911e-05, 8.3014185e-05, 0.00017767948, -4.0050703e-06, 4.2861279e-05, -0.00021072163, 0.00017767948, 0.00038029644, -8.5722558e-06, -9.6613539e-07, 4.7498729e-06, -4.0050703e-06, -8.5722558e-06, 1.9322708e-07, + -5.6211513e-05, 8.9938421e-05, 0.00013490763, -0.0002338399, -5.6211513e-05, 0.00027635624, -0.00044216998, -0.00066325498, 0.001149642, 0.00027635624, -0.00023302227, 0.00037283564, 0.00055925346, -0.00096937266, -0.00023302227, -0.00049874943, 0.00079799909, 0.0011969986, -0.0020747976, -0.00049874943, 1.1242303e-05, -1.7987684e-05, -2.6981526e-05, 4.6767979e-05, 1.1242303e-05, 8.9938421e-05, -0.00014390147, -0.00021585221, 0.00037414383, 8.9938421e-05, -0.00044216998, 0.00070747198, 0.001061208, -0.0018394271, -0.00044216998, 0.00037283564, -0.00059653702, -0.00089480553, 0.0015509963, 0.00037283564, 0.00079799909, -0.0012767985, -0.0019151978, 0.0033196762, 0.00079799909, -1.7987684e-05, 2.8780295e-05, 4.3170442e-05, -7.4828767e-05, -1.7987684e-05, 0.00013490763, -0.00021585221, -0.00032377832, 0.00056121575, 0.00013490763, -0.00066325498, 0.001061208, 0.0015918119, -0.0027591407, -0.00066325498, 0.00055925346, -0.00089480553, -0.0013422083, 0.0023264944, 0.00055925346, 0.0011969986, -0.0019151978, -0.0028727967, 0.0049795143, 0.0011969986, -2.6981526e-05, 4.3170442e-05, 6.4755663e-05, -0.00011224315, -2.6981526e-05, -0.0002338399, 0.00037414383, 0.00056121575, -0.00097277397, -0.0002338399, 0.001149642, -0.0018394271, -0.0027591407, 0.0047825106, 0.001149642, -0.00096937266, 0.0015509963, 0.0023264944, -0.0040325903, -0.00096937266, -0.0020747976, 0.0033196762, 0.0049795143, -0.0086311581, -0.0020747976, 4.6767979e-05, -7.4828767e-05, -0.00011224315, 0.00019455479, 4.6767979e-05, -5.6211513e-05, 8.9938421e-05, 0.00013490763, -0.0002338399, -5.6211513e-05, 0.00027635624, -0.00044216998, -0.00066325498, 0.001149642, 0.00027635624, -0.00023302227, 0.00037283564, 0.00055925346, -0.00096937266, -0.00023302227, -0.00049874943, 0.00079799909, 0.0011969986, -0.0020747976, -0.00049874943, 1.1242303e-05, -1.7987684e-05, -2.6981526e-05, 4.6767979e-05, 1.1242303e-05, + 0.005468256, 0.0073258932, -0.0078491713, 0.0010465562, 0.00013081952, -0.0087492096, -0.011721429, 0.012558674, -0.0016744899, -0.00020931124, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.022747945, 0.030475716, -0.032652553, 0.0043536737, 0.00054420921, 0.005468256, 0.0073258932, -0.0078491713, 0.0010465562, 0.00013081952, -0.0087492096, -0.011721429, 0.012558674, -0.0016744899, -0.00020931124, 0.013998735, 0.018754287, -0.020093879, 0.0026791838, 0.00033489798, 0.020998103, 0.02813143, -0.030140818, 0.0040187757, 0.00050234697, -0.036396712, -0.048761145, 0.052244084, -0.0069658779, -0.00087073474, -0.0087492096, -0.011721429, 0.012558674, -0.0016744899, -0.00020931124, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.020998103, 0.02813143, -0.030140818, 0.0040187757, 0.00050234697, 0.031497155, 0.042197145, -0.045211227, 0.0060281636, 0.00075352045, -0.054595068, -0.073141718, 0.078366127, -0.010448817, -0.0013061021, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.022747945, 0.030475716, -0.032652553, 0.0043536737, 0.00054420921, -0.036396712, -0.048761145, 0.052244084, -0.0069658779, -0.00087073474, -0.054595068, -0.073141718, 0.078366127, -0.010448817, -0.0013061021, 0.094631451, 0.12677898, -0.13583462, 0.018111283, 0.0022639103, 0.022747945, 0.030475716, -0.032652553, 0.0043536737, 0.00054420921, 0.005468256, 0.0073258932, -0.0078491713, 0.0010465562, 0.00013081952, -0.0087492096, -0.011721429, 0.012558674, -0.0016744899, -0.00020931124, -0.013123814, -0.017582144, 0.018838011, -0.0025117348, -0.00031396685, 0.022747945, 0.030475716, -0.032652553, 0.0043536737, 0.00054420921, 0.005468256, 0.0073258932, -0.0078491713, 0.0010465562, 0.00013081952, + -0.00051407984, 0.002264813, 0.0039270385, 0.002117641, 0.00024017647, 0.00082252775, -0.0036237008, -0.0062832616, -0.0033882256, -0.00038428235, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.0021385721, 0.009421622, 0.01633648, 0.0088093866, 0.0009991341, -0.00051407984, 0.002264813, 0.0039270385, 0.002117641, 0.00024017647, 0.00082252775, -0.0036237008, -0.0062832616, -0.0033882256, -0.00038428235, -0.0013160444, 0.0057979212, 0.010053219, 0.005421161, 0.00061485175, -0.0019740666, 0.0086968818, 0.015079828, 0.0081317415, 0.00092227763, 0.0034217154, -0.015074595, -0.026138368, -0.014095019, -0.0015986146, 0.00082252775, -0.0036237008, -0.0062832616, -0.0033882256, -0.00038428235, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.0019740666, 0.0086968818, 0.015079828, 0.0081317415, 0.00092227763, -0.0029610999, 0.013045323, 0.022619742, 0.012197612, 0.0013834164, 0.0051325731, -0.022611893, -0.039207553, -0.021142528, -0.0023979218, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.0021385721, 0.009421622, 0.01633648, 0.0088093866, 0.0009991341, 0.0034217154, -0.015074595, -0.026138368, -0.014095019, -0.0015986146, 0.0051325731, -0.022611893, -0.039207553, -0.021142528, -0.0023979218, -0.0088964601, 0.039193947, 0.067959758, 0.036647048, 0.0041563979, -0.0021385721, 0.009421622, 0.01633648, 0.0088093866, 0.0009991341, -0.00051407984, 0.002264813, 0.0039270385, 0.002117641, 0.00024017647, 0.00082252775, -0.0036237008, -0.0062832616, -0.0033882256, -0.00038428235, 0.0012337916, -0.0054355511, -0.0094248925, -0.0050823384, -0.00057642352, -0.0021385721, 0.009421622, 0.01633648, 0.0088093866, 0.0009991341, -0.00051407984, 0.002264813, 0.0039270385, 0.002117641, 0.00024017647, + 0.00014717196, -0.00039245857, -0.00058868785, 0.0035321271, 0.0010694496, -0.00023547514, 0.00062793371, 0.00094190056, -0.0056514034, -0.0017111193, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 0.00061223536, -0.0016326276, -0.0024489415, 0.014693649, 0.0044489103, 0.00014717196, -0.00039245857, -0.00058868785, 0.0035321271, 0.0010694496, -0.00023547514, 0.00062793371, 0.00094190056, -0.0056514034, -0.0017111193, 0.00037676022, -0.0010046939, -0.0015070409, 0.0090422454, 0.002737791, 0.00056514034, -0.0015070409, -0.0022605613, 0.013563368, 0.0041066864, -0.00097957658, 0.0026122042, 0.0039183063, -0.023509838, -0.0071182565, -0.00023547514, 0.00062793371, 0.00094190056, -0.0056514034, -0.0017111193, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 0.00056514034, -0.0015070409, -0.0022605613, 0.013563368, 0.0041066864, 0.0008477105, -0.0022605613, -0.003390842, 0.020345052, 0.0061600297, -0.0014693649, 0.0039183063, 0.0058774595, -0.035264757, -0.010677385, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 0.00061223536, -0.0016326276, -0.0024489415, 0.014693649, 0.0044489103, -0.00097957658, 0.0026122042, 0.0039183063, -0.023509838, -0.0071182565, -0.0014693649, 0.0039183063, 0.0058774595, -0.035264757, -0.010677385, 0.0025468991, -0.006791731, -0.010187596, 0.061125579, 0.018507467, 0.00061223536, -0.0016326276, -0.0024489415, 0.014693649, 0.0044489103, 0.00014717196, -0.00039245857, -0.00058868785, 0.0035321271, 0.0010694496, -0.00023547514, 0.00062793371, 0.00094190056, -0.0056514034, -0.0017111193, -0.00035321271, 0.00094190056, 0.0014128508, -0.008477105, -0.002566679, 0.00061223536, -0.0016326276, -0.0024489415, 0.014693649, 0.0044489103, 0.00014717196, -0.00039245857, -0.00058868785, 0.0035321271, 0.0010694496, + -5.6211513e-05, 0.00027635624, -0.00023302227, -0.00049874943, 1.1242303e-05, 8.9938421e-05, -0.00044216998, 0.00037283564, 0.00079799909, -1.7987684e-05, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -0.0002338399, 0.001149642, -0.00096937266, -0.0020747976, 4.6767979e-05, -5.6211513e-05, 0.00027635624, -0.00023302227, -0.00049874943, 1.1242303e-05, 8.9938421e-05, -0.00044216998, 0.00037283564, 0.00079799909, -1.7987684e-05, -0.00014390147, 0.00070747198, -0.00059653702, -0.0012767985, 2.8780295e-05, -0.00021585221, 0.001061208, -0.00089480553, -0.0019151978, 4.3170442e-05, 0.00037414383, -0.0018394271, 0.0015509963, 0.0033196762, -7.4828767e-05, 8.9938421e-05, -0.00044216998, 0.00037283564, 0.00079799909, -1.7987684e-05, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -0.00021585221, 0.001061208, -0.00089480553, -0.0019151978, 4.3170442e-05, -0.00032377832, 0.0015918119, -0.0013422083, -0.0028727967, 6.4755663e-05, 0.00056121575, -0.0027591407, 0.0023264944, 0.0049795143, -0.00011224315, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -0.0002338399, 0.001149642, -0.00096937266, -0.0020747976, 4.6767979e-05, 0.00037414383, -0.0018394271, 0.0015509963, 0.0033196762, -7.4828767e-05, 0.00056121575, -0.0027591407, 0.0023264944, 0.0049795143, -0.00011224315, -0.00097277397, 0.0047825106, -0.0040325903, -0.0086311581, 0.00019455479, -0.0002338399, 0.001149642, -0.00096937266, -0.0020747976, 4.6767979e-05, -5.6211513e-05, 0.00027635624, -0.00023302227, -0.00049874943, 1.1242303e-05, 8.9938421e-05, -0.00044216998, 0.00037283564, 0.00079799909, -1.7987684e-05, 0.00013490763, -0.00066325498, 0.00055925346, 0.0011969986, -2.6981526e-05, -0.0002338399, 0.001149642, -0.00096937266, -0.0020747976, 4.6767979e-05, -5.6211513e-05, 0.00027635624, -0.00023302227, -0.00049874943, 1.1242303e-05, + 0.00065409761, -0.0010465562, -0.0015698343, 0.0027210461, 0.00065409761, -0.0010465562, 0.0016744899, 0.0025117348, -0.0043536737, -0.0010465562, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.0027210461, -0.0043536737, -0.0065305105, 0.011319552, 0.0027210461, 0.00065409761, -0.0010465562, -0.0015698343, 0.0027210461, 0.00065409761, -0.0010465562, 0.0016744899, 0.0025117348, -0.0043536737, -0.0010465562, 0.0016744899, -0.0026791838, -0.0040187757, 0.0069658779, 0.0016744899, 0.0025117348, -0.0040187757, -0.0060281636, 0.010448817, 0.0025117348, -0.0043536737, 0.0069658779, 0.010448817, -0.018111283, -0.0043536737, -0.0010465562, 0.0016744899, 0.0025117348, -0.0043536737, -0.0010465562, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.0025117348, -0.0040187757, -0.0060281636, 0.010448817, 0.0025117348, 0.0037676022, -0.0060281636, -0.0090422454, 0.015673225, 0.0037676022, -0.0065305105, 0.010448817, 0.015673225, -0.027166924, -0.0065305105, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.0027210461, -0.0043536737, -0.0065305105, 0.011319552, 0.0027210461, -0.0043536737, 0.0069658779, 0.010448817, -0.018111283, -0.0043536737, -0.0065305105, 0.010448817, 0.015673225, -0.027166924, -0.0065305105, 0.011319552, -0.018111283, -0.027166924, 0.047089335, 0.011319552, 0.0027210461, -0.0043536737, -0.0065305105, 0.011319552, 0.0027210461, 0.00065409761, -0.0010465562, -0.0015698343, 0.0027210461, 0.00065409761, -0.0010465562, 0.0016744899, 0.0025117348, -0.0043536737, -0.0010465562, -0.0015698343, 0.0025117348, 0.0037676022, -0.0065305105, -0.0015698343, 0.0027210461, -0.0043536737, -0.0065305105, 0.011319552, 0.0027210461, 0.00065409761, -0.0010465562, -0.0015698343, 0.0027210461, 0.00065409761, +}; + + +static double * projection_matrices[] = +{ + dgq0_refined_onto_dgq0, + dgq1_refined_onto_dgq1, + dgq2_refined_onto_dgq2, + dgq3_refined_onto_dgq3, + dgq4_refined_onto_dgq4, + 0,0,0,0,0,0,0 +}; diff --git a/deal.II/deal.II/source/fe/mat_q.1 b/deal.II/deal.II/source/fe/mat_q.1 index e69de29bb2..c6c848b5b5 100644 --- a/deal.II/deal.II/source/fe/mat_q.1 +++ b/deal.II/deal.II/source/fe/mat_q.1 @@ -0,0 +1,114 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + +static double q1_into_q1_refined_0[] = +{ + 1., 0., + 13.5/27., 13.5/27., +}; + +static double q1_into_q1_refined_1[] = +{ + 13.5/27., 13.5/27., + 0., 1., +}; + +static double q2_into_q2_refined_0[] = +{ + 1., 0., 0., + 0., 0., 1., + 10.125/27., -3.375/27., 20.25/27., +}; + +static double q2_into_q2_refined_1[] = +{ + 0., 0., 1., + 0., 1., 0., + -3.375/27., 10.125/27., 20.25/27., +}; + +static double q3_into_q3_refined_0[] = +{ + 1., 0., 0., 0., + -1.6875/27., -1.6875/27., 15.1875/27., 15.1875/27., + 8.4375/27., 1.6875/27., 25.3125/27., -8.4375/27., + 0., 0., 1., 0. +}; + +static double q3_into_q3_refined_1[] = +{ + -1.6875/27., -1.6875/27., 15.1875/27., 15.1875/27., + 0., 1., 0., 0., + 0., 0., 0., 1., + 1.6875/27., 8.4375/27., -8.4375/27., 25.3125/27., +}; + +static double q4_into_q4_refined_0[] = +{ + 1., 0., 0., 0., 0., + 0., 0., 0., 1., 0., + 7.3828125/27., -1.0546875/27., 29.53125/27., -14.765625/27., 5.90625/27., + 0., 0., 1., 0., 0., + -1.0546875/27., 0.6328125/27., 12.65625/27., 18.984375/27., -4.21875/27., +}; + +static double q4_into_q4_refined_1[] = +{ + 0., 0., 0., 1., 0., + 0., 1., 0., 0., 0., + 0.6328125/27., -1.0546875/27., -4.21875/27., 18.984375/27., 12.65625/27., + 0., 0., 0., 0., 1., + -1.0546875/27., 7.3828125/27., 5.90625/27., -14.765625/27., 29.53125/27., +}; + +static double * embedding0[] = +{ + q1_into_q1_refined_0, + q2_into_q2_refined_0, + q3_into_q3_refined_0, + q4_into_q4_refined_0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding1[] = +{ + q1_into_q1_refined_1, + q2_into_q2_refined_1, + q3_into_q3_refined_1, + q4_into_q4_refined_1, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double** embedding2; +static double** embedding3; +static double** embedding4; +static double** embedding5; +static double** embedding6; +static double** embedding7; + +// No constrants in 1d + +static double ** constraint_matrices = 0; + diff --git a/deal.II/deal.II/source/fe/mat_q.2 b/deal.II/deal.II/source/fe/mat_q.2 index e69de29bb2..089a416c63 100644 --- a/deal.II/deal.II/source/fe/mat_q.2 +++ b/deal.II/deal.II/source/fe/mat_q.2 @@ -0,0 +1,292 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + +static double q1_into_q1_refined_0[] = +{ + 1., 0., 0., 0., + 13.5/27., 13.5/27., 0., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 13.5/27., 0., 0., 13.5/27., +}; + +static double q1_into_q1_refined_1[] = +{ + 13.5/27., 13.5/27., 0., 0., + 0., 1., 0., 0., + 0., 13.5/27., 13.5/27., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., +}; + +static double q1_into_q1_refined_2[] = +{ + 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 0., 13.5/27., 13.5/27., 0., + 0., 0., 1., 0., + 0., 0., 13.5/27., 13.5/27., +}; + +static double q1_into_q1_refined_3[] = +{ + 13.5/27., 0., 0., 13.5/27., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 0., 0., 13.5/27., 13.5/27., + 0., 0., 0., 1., +}; + +static double q2_into_q2_refined_0[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 1., 0., + 10.125/27., -3.375/27., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 10.125/27., 0., 0., -3.375/27., 0., 0., 0., 20.25/27., 0., + 3.796875/27., -1.265625/27., 0.421875/27., -1.265625/27., 7.59375/27., -2.53125/27., -2.53125/27., 7.59375/27., 15.1875/27., +}; + +static double q2_into_q2_refined_1[] = +{ + 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1., + -3.375/27., 10.125/27., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 10.125/27., -3.375/27., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + -1.265625/27., 3.796875/27., -1.265625/27., 0.421875/27., 7.59375/27., 7.59375/27., -2.53125/27., -2.53125/27., 15.1875/27., +}; + +static double q2_into_q2_refined_2[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., -3.375/27., 10.125/27., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 10.125/27., -3.375/27., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0.421875/27., -1.265625/27., 3.796875/27., -1.265625/27., -2.53125/27., 7.59375/27., 7.59375/27., -2.53125/27., 15.1875/27., +}; + +static double q2_into_q2_refined_3[] = +{ + 0., 0., 0., 0., 0., 0., 0., 1., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0., 0., -3.375/27., 10.125/27., 0., 0., 20.25/27., 0., 0., + -3.375/27., 0., 0., 10.125/27., 0., 0., 0., 20.25/27., 0., + -1.265625/27., 0.421875/27., -1.265625/27., 3.796875/27., -2.53125/27., -2.53125/27., 7.59375/27., 7.59375/27., 15.1875/27., +}; + +static double q3_into_q3_refined_0[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -1.6875/27., -1.6875/27., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0.10546875/27., 0.10546875/27., 0.10546875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., + -1.6875/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., + 8.4375/27., 1.6875/27., 0., 0., 25.3125/27., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., -0.52734375/27., -0.10546875/27., -0.10546875/27., 4.74609375/27., 4.74609375/27., -1.58203125/27., 0.52734375/27., 0.94921875/27., 0.94921875/27., -1.58203125/27., 0.52734375/27., 14.23828125/27., 14.23828125/27., -4.74609375/27., -4.74609375/27., + 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 15.1875/27., 15.1875/27., 0., 0., + -0.52734375/27., -0.10546875/27., -0.10546875/27., -0.52734375/27., -1.58203125/27., 0.52734375/27., 0.94921875/27., 0.94921875/27., -1.58203125/27., 0.52734375/27., 4.74609375/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 14.23828125/27., -4.74609375/27., + 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 15.1875/27., 0., + 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 25.3125/27., -8.4375/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., + 2.63671875/27., 0.52734375/27., 0.10546875/27., 0.52734375/27., 7.91015625/27., -2.63671875/27., 1.58203125/27., -0.52734375/27., 1.58203125/27., -0.52734375/27., 7.91015625/27., -2.63671875/27., 23.73046875/27., -7.91015625/27., -7.91015625/27., 2.63671875/27., + 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 25.3125/27., 0., -8.4375/27., 0., + 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 8.4375/27., 0., 25.3125/27., -8.4375/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., +}; + +static double q3_into_q3_refined_1[] = +{ + -1.6875/27., -1.6875/27., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., -1.6875/27., -1.6875/27., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0.10546875/27., 0.10546875/27., 0.10546875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., + 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 1.6875/27., 8.4375/27., 0., 0., -8.4375/27., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 8.4375/27., 1.6875/27., 0., 0., 0., 25.3125/27., -8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 15.1875/27., + -0.10546875/27., -0.52734375/27., -0.52734375/27., -0.10546875/27., 0.52734375/27., -1.58203125/27., 4.74609375/27., 4.74609375/27., 0.52734375/27., -1.58203125/27., 0.94921875/27., 0.94921875/27., -4.74609375/27., 14.23828125/27., -4.74609375/27., 14.23828125/27., + -0.52734375/27., -0.52734375/27., -0.10546875/27., -0.10546875/27., 4.74609375/27., 4.74609375/27., -1.58203125/27., 0.52734375/27., 0.94921875/27., 0.94921875/27., -1.58203125/27., 0.52734375/27., 14.23828125/27., 14.23828125/27., -4.74609375/27., -4.74609375/27., + 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 15.1875/27., 15.1875/27., 0., 0., + 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 25.3125/27., 0., -8.4375/27., + 0.52734375/27., 2.63671875/27., 0.52734375/27., 0.10546875/27., -2.63671875/27., 7.91015625/27., 7.91015625/27., -2.63671875/27., -0.52734375/27., 1.58203125/27., 1.58203125/27., -0.52734375/27., -7.91015625/27., 23.73046875/27., 2.63671875/27., -7.91015625/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 1.6875/27., 0., -8.4375/27., 25.3125/27., 0., 0., +}; + +static double q3_into_q3_refined_2[] = +{ + 0.10546875/27., 0.10546875/27., 0.10546875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., + 0., -1.6875/27., -1.6875/27., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., -1.6875/27., -1.6875/27., 0., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 15.1875/27., + -0.10546875/27., -0.52734375/27., -0.52734375/27., -0.10546875/27., 0.52734375/27., -1.58203125/27., 4.74609375/27., 4.74609375/27., 0.52734375/27., -1.58203125/27., 0.94921875/27., 0.94921875/27., -4.74609375/27., 14.23828125/27., -4.74609375/27., 14.23828125/27., + 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1.6875/27., 8.4375/27., 0., 0., 0., -8.4375/27., 25.3125/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 8.4375/27., 1.6875/27., 0., 0., 0., 0., -8.4375/27., 25.3125/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 15.1875/27., 15.1875/27., + -0.10546875/27., -0.10546875/27., -0.52734375/27., -0.52734375/27., 0.94921875/27., 0.94921875/27., 0.52734375/27., -1.58203125/27., 4.74609375/27., 4.74609375/27., 0.52734375/27., -1.58203125/27., -4.74609375/27., -4.74609375/27., 14.23828125/27., 14.23828125/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 8.4375/27., 0., 0., 0., 1.6875/27., 0., 0., -8.4375/27., 25.3125/27., + 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 8.4375/27., 0., 0., 0., -8.4375/27., 0., 25.3125/27., + 0.10546875/27., 0.52734375/27., 2.63671875/27., 0.52734375/27., -0.52734375/27., 1.58203125/27., -2.63671875/27., 7.91015625/27., -2.63671875/27., 7.91015625/27., -0.52734375/27., 1.58203125/27., 2.63671875/27., -7.91015625/27., -7.91015625/27., 23.73046875/27., +}; + +static double q3_into_q3_refined_3[] = +{ + -1.6875/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., + 0.10546875/27., 0.10546875/27., 0.10546875/27., 0.10546875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., 8.54296875/27., + 0., 0., -1.6875/27., -1.6875/27., 0., 0., 0., 0., 15.1875/27., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -0.52734375/27., -0.10546875/27., -0.10546875/27., -0.52734375/27., -1.58203125/27., 0.52734375/27., 0.94921875/27., 0.94921875/27., -1.58203125/27., 0.52734375/27., 4.74609375/27., 4.74609375/27., 14.23828125/27., -4.74609375/27., 14.23828125/27., -4.74609375/27., + 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 0., 15.1875/27., 0., 15.1875/27., 0., + 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., -1.6875/27., 0., 0., 15.1875/27., 15.1875/27., + -0.10546875/27., -0.10546875/27., -0.52734375/27., -0.52734375/27., 0.94921875/27., 0.94921875/27., 0.52734375/27., -1.58203125/27., 4.74609375/27., 4.74609375/27., 0.52734375/27., -1.58203125/27., -4.74609375/27., -4.74609375/27., 14.23828125/27., 14.23828125/27., + 0., 0., 1.6875/27., 8.4375/27., 0., 0., 0., 0., 25.3125/27., -8.4375/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., + 1.6875/27., 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., -8.4375/27., 25.3125/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 8.4375/27., 0., 0., 25.3125/27., -8.4375/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 0.52734375/27., 0.10546875/27., 0.52734375/27., 2.63671875/27., 1.58203125/27., -0.52734375/27., -0.52734375/27., 1.58203125/27., 7.91015625/27., -2.63671875/27., -2.63671875/27., 7.91015625/27., -7.91015625/27., 2.63671875/27., 23.73046875/27., -7.91015625/27., + 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 8.4375/27., 0., 0., 0., -8.4375/27., 0., 25.3125/27., 0., +}; + + +static double * embedding0[] = +{ + q1_into_q1_refined_0, + q2_into_q2_refined_0, + q3_into_q3_refined_0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding1[] = +{ + q1_into_q1_refined_1, + q2_into_q2_refined_1, + q3_into_q3_refined_1, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding2[] = +{ + q1_into_q1_refined_2, + q2_into_q2_refined_2, + q3_into_q3_refined_2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding3[] = +{ + q1_into_q1_refined_3, + q2_into_q2_refined_3, + q3_into_q3_refined_3, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double** embedding4; +static double** embedding5; +static double** embedding6; +static double** embedding7; + +// Constraint matrices taken from Wolfgangs old version + +static double constraint_q1[] = +{ + .5, .5 +}; + +static double constraint_q2[] = +{ + 0., 0., 1., + .375, -.125, .75, + -.125, .375, .75 +}; + +static double constraint_q3[] = +{ + -.0625, -.0625, .5625, .5625, + .3125, .0625, .9375, -.3125, + 0., 0., 1., 0., + 0., 0., 0., 1., + .0625, .3125, -.3125, 0.9375 +}; + +static double constraint_q4[] = +{ + 0., 0., 0., 1., 0., + 0.2734375, -0.0390625, 1.09375, -0.546875, 0.21875, + 0., 0., 1., 0., 0., + -0.0390625, 0.0234375, 0.46875, 0.703125, -0.15625, + 0.0234375, -0.0390625, -0.15625, 0.703125, 0.46875, + 0., 0., 0., 0., 1., + -0.0390625, 0.2734375, 0.21875, -0.546875, 1.09375 +}; + +static double* constraint_matrices[] = +{ + constraint_q1, + constraint_q2, + constraint_q3, + constraint_q4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + diff --git a/deal.II/deal.II/source/fe/mat_q.3 b/deal.II/deal.II/source/fe/mat_q.3 index e69de29bb2..38791acf43 100644 --- a/deal.II/deal.II/source/fe/mat_q.3 +++ b/deal.II/deal.II/source/fe/mat_q.3 @@ -0,0 +1,552 @@ +//---------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------------------------------------------- + +// Transfer matrices for finite elements + + +static double q1_into_q1_refined_0[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., + 13.5/27., 13.5/27., 0., 0., 0., 0., 0., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., 0., 0., 0., 0., + 13.5/27., 0., 0., 13.5/27., 0., 0., 0., 0., + 13.5/27., 0., 0., 0., 13.5/27., 0., 0., 0., + 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., +}; + +static double q1_into_q1_refined_1[] = +{ + 13.5/27., 13.5/27., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., + 0., 13.5/27., 13.5/27., 0., 0., 0., 0., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., 0., 0., 0., 0., + 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., + 0., 13.5/27., 0., 0., 0., 13.5/27., 0., 0., + 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., +}; + +static double q1_into_q1_refined_2[] = +{ + 6.75/27., 6.75/27., 6.75/27., 6.75/27., 0., 0., 0., 0., + 0., 13.5/27., 13.5/27., 0., 0., 0., 0., 0., + 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 13.5/27., 13.5/27., 0., 0., 0., 0., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., + 0., 0., 13.5/27., 0., 0., 0., 13.5/27., 0., + 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., +}; + +static double q1_into_q1_refined_3[] = +{ + 13.5/27., 0., 0., 13.5/27., 0., 0., 0., 0., + 6.75/27., 6.75/27., 6.75/27., 6.75/27., 0., 0., 0., 0., + 0., 0., 13.5/27., 13.5/27., 0., 0., 0., 0., + 0., 0., 0., 1., 0., 0., 0., 0., + 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., + 0., 0., 0., 13.5/27., 0., 0., 0., 13.5/27., +}; + +static double q1_into_q1_refined_4[] = +{ + 13.5/27., 0., 0., 0., 13.5/27., 0., 0., 0., + 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., + 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 13.5/27., 13.5/27., 0., 0., + 0., 0., 0., 0., 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 0., 0., 0., 0., 13.5/27., 0., 0., 13.5/27., +}; + +static double q1_into_q1_refined_5[] = +{ + 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., + 0., 13.5/27., 0., 0., 0., 13.5/27., 0., 0., + 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 0., 0., 0., 0., 13.5/27., 13.5/27., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 13.5/27., 13.5/27., 0., + 0., 0., 0., 0., 6.75/27., 6.75/27., 6.75/27., 6.75/27., +}; + +static double q1_into_q1_refined_6[] = +{ + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., + 0., 0., 13.5/27., 0., 0., 0., 13.5/27., 0., + 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., + 0., 0., 0., 0., 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 0., 0., 0., 0., 0., 13.5/27., 13.5/27., 0., + 0., 0., 0., 0., 0., 0., 1., 0., + 0., 0., 0., 0., 0., 0., 13.5/27., 13.5/27., +}; + +static double q1_into_q1_refined_7[] = +{ + 6.75/27., 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., + 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., 3.375/27., + 0., 0., 6.75/27., 6.75/27., 0., 0., 6.75/27., 6.75/27., + 0., 0., 0., 13.5/27., 0., 0., 0., 13.5/27., + 0., 0., 0., 0., 13.5/27., 0., 0., 13.5/27., + 0., 0., 0., 0., 6.75/27., 6.75/27., 6.75/27., 6.75/27., + 0., 0., 0., 0., 0., 0., 13.5/27., 13.5/27., + 0., 0., 0., 0., 0., 0., 0., 1., +}; + +static double q2_into_q2_refined_0[] = +{ + 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 10.125/27., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 20.25/27., 0., + 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., + 3.796875/27., -1.265625/27., 0.421875/27., -1.265625/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., -1.265625/27., 0.421875/27., -1.265625/27., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 7.59375/27., 15.1875/27., + 3.796875/27., -1.265625/27., 0., 0., -1.265625/27., 0.421875/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 0.421875/27., 0., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 7.59375/27., 0., -2.53125/27., 0., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 3.796875/27., 0., 0.421875/27., 0., -1.265625/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 0., -2.53125/27., 0., 7.59375/27., 15.1875/27., + 3.796875/27., 0., 0., -1.265625/27., -1.265625/27., 0., 0., 0.421875/27., 0., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 15.1875/27., 0., + 1.423828125/27., -0.474609375/27., 0.158203125/27., -0.474609375/27., -0.474609375/27., 0.158203125/27., -0.052734375/27., 0.158203125/27., 2.84765625/27., -0.94921875/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., 5.6953125/27., -1.8984375/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 5.6953125/27., 11.390625/27., +}; + +static double q2_into_q2_refined_1[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., + -1.265625/27., 3.796875/27., -1.265625/27., 0.421875/27., 0., 0., 0., 0., 7.59375/27., 7.59375/27., -2.53125/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 3.796875/27., -1.265625/27., 0.421875/27., 0., 0., 7.59375/27., 7.59375/27., -2.53125/27., -2.53125/27., 15.1875/27., + -1.265625/27., 3.796875/27., 0., 0., 0.421875/27., -1.265625/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., + 0., 3.796875/27., -1.265625/27., 0., 0., -1.265625/27., 0.421875/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 0.421875/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 7.59375/27., 0., -2.53125/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 0.421875/27., 0., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 7.59375/27., 0., -2.53125/27., 0., 15.1875/27., + -0.474609375/27., 1.423828125/27., -0.474609375/27., 0.158203125/27., 0.158203125/27., -0.474609375/27., 0.158203125/27., -0.052734375/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., 5.6953125/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 11.390625/27., +}; + +static double q2_into_q2_refined_2[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., + 0.421875/27., -1.265625/27., 3.796875/27., -1.265625/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., -1.265625/27., 3.796875/27., -1.265625/27., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., -2.53125/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 0.421875/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 7.59375/27., 0., -2.53125/27., 15.1875/27., + 0., -1.265625/27., 3.796875/27., 0., 0., 0.421875/27., -1.265625/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., + 0., 0., 3.796875/27., -1.265625/27., 0., 0., -1.265625/27., 0.421875/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 3.796875/27., 0., 0.421875/27., 0., -1.265625/27., 0., 0., 0., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 0., 7.59375/27., 0., 15.1875/27., + 0.158203125/27., -0.474609375/27., 1.423828125/27., -0.474609375/27., -0.052734375/27., 0.158203125/27., -0.474609375/27., 0.158203125/27., -0.94921875/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., -0.94921875/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., -1.8984375/27., 11.390625/27., +}; + +static double q2_into_q2_refined_3[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., + 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -3.375/27., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 10.125/27., 0., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., + -1.265625/27., 0.421875/27., -1.265625/27., 3.796875/27., 0., 0., 0., 0., -2.53125/27., -2.53125/27., 7.59375/27., 7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0.421875/27., -1.265625/27., 3.796875/27., 0., 0., -2.53125/27., -2.53125/27., 7.59375/27., 7.59375/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 3.796875/27., 0., 0.421875/27., 0., -1.265625/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., 0., -2.53125/27., 0., 7.59375/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 3.796875/27., 0., 0.421875/27., 0., -1.265625/27., 0., 0., 0., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 0., 7.59375/27., 0., 15.1875/27., + 0., 0., -1.265625/27., 3.796875/27., 0., 0., 0.421875/27., -1.265625/27., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., + -1.265625/27., 0., 0., 3.796875/27., 0.421875/27., 0., 0., -1.265625/27., 0., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., -2.53125/27., 0., 0., 7.59375/27., 0., 0., 0., 0., 0., 15.1875/27., 0., + -0.474609375/27., 0.158203125/27., -0.474609375/27., 1.423828125/27., 0.158203125/27., -0.052734375/27., 0.158203125/27., -0.474609375/27., -0.94921875/27., -0.94921875/27., 2.84765625/27., 2.84765625/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., 11.390625/27., +}; + +static double q2_into_q2_refined_4[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 10.125/27., 0., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 3.796875/27., -1.265625/27., 0.421875/27., -1.265625/27., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 7.59375/27., 15.1875/27., + 0., 0., 0., 0., 3.796875/27., -1.265625/27., 0.421875/27., -1.265625/27., 0., 0., 0., 0., 7.59375/27., -2.53125/27., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., + -1.265625/27., 0.421875/27., 0., 0., 3.796875/27., -1.265625/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0.421875/27., 0., 3.796875/27., 0., -1.265625/27., 0., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., 0., -2.53125/27., 0., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 3.796875/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 0., -2.53125/27., 0., 7.59375/27., 15.1875/27., + -1.265625/27., 0., 0., 0.421875/27., 3.796875/27., 0., 0., -1.265625/27., 0., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 7.59375/27., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 15.1875/27., 0., + -0.474609375/27., 0.158203125/27., -0.052734375/27., 0.158203125/27., 1.423828125/27., -0.474609375/27., 0.158203125/27., -0.474609375/27., -0.94921875/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., -0.94921875/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 5.6953125/27., 11.390625/27., +}; + +static double q2_into_q2_refined_5[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 20.25/27., + 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., + 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 3.796875/27., -1.265625/27., 0.421875/27., 0., 0., 7.59375/27., 7.59375/27., -2.53125/27., -2.53125/27., 15.1875/27., + 0., 0., 0., 0., -1.265625/27., 3.796875/27., -1.265625/27., 0.421875/27., 0., 0., 0., 0., 7.59375/27., 7.59375/27., -2.53125/27., -2.53125/27., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., + 0.421875/27., -1.265625/27., 0., 0., -1.265625/27., 3.796875/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., + 0., -1.265625/27., 0.421875/27., 0., 0., 3.796875/27., -1.265625/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0.421875/27., 0., 3.796875/27., 0., -1.265625/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 7.59375/27., 0., -2.53125/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0.421875/27., 0., 3.796875/27., 0., -1.265625/27., 0., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., 0., -2.53125/27., 0., 15.1875/27., + 0.158203125/27., -0.474609375/27., 0.158203125/27., -0.052734375/27., -0.474609375/27., 1.423828125/27., -0.474609375/27., 0.158203125/27., -0.94921875/27., -0.94921875/27., 0.31640625/27., 0.31640625/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 11.390625/27., +}; + +static double q2_into_q2_refined_6[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 10.125/27., 0., -3.375/27., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 10.125/27., -3.375/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., + 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., -1.265625/27., 3.796875/27., -1.265625/27., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., -2.53125/27., 15.1875/27., + 0., 0., 0., 0., 0.421875/27., -1.265625/27., 3.796875/27., -1.265625/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0.421875/27., 0., 3.796875/27., 0., -1.265625/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 7.59375/27., 0., -2.53125/27., 15.1875/27., + 0., 0.421875/27., -1.265625/27., 0., 0., -1.265625/27., 3.796875/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., + 0., 0., -1.265625/27., 0.421875/27., 0., 0., 3.796875/27., -1.265625/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 0., 0., 15.1875/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 3.796875/27., 0., 0., 0., 0., 0., -2.53125/27., 7.59375/27., -2.53125/27., 0., 7.59375/27., 0., 15.1875/27., + -0.052734375/27., 0.158203125/27., -0.474609375/27., 0.158203125/27., 0.158203125/27., -0.474609375/27., 1.423828125/27., -0.474609375/27., 0.31640625/27., -0.94921875/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -0.94921875/27., -1.8984375/27., 5.6953125/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., -1.8984375/27., 11.390625/27., +}; + +static double q2_into_q2_refined_7[] = +{ + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., -3.375/27., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 10.125/27., 0., 0., 0., 0., 20.25/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., + 0., 0., 0., -3.375/27., 0., 0., 0., 10.125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 20.25/27., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0.421875/27., -1.265625/27., 3.796875/27., 0., 0., -2.53125/27., -2.53125/27., 7.59375/27., 7.59375/27., 15.1875/27., + 0., 0., 0., 0., -1.265625/27., 0.421875/27., -1.265625/27., 3.796875/27., 0., 0., 0., 0., -2.53125/27., -2.53125/27., 7.59375/27., 7.59375/27., 0., 0., 0., 0., 0., 15.1875/27., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 3.796875/27., 0., 0., 0., 0., -2.53125/27., 7.59375/27., 0., -2.53125/27., 0., 7.59375/27., 15.1875/27., + 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., -1.265625/27., 0., -1.265625/27., 0., 3.796875/27., 0., 0., 0., 0., 0., -2.53125/27., 7.59375/27., -2.53125/27., 0., 7.59375/27., 0., 15.1875/27., + 0., 0., 0.421875/27., -1.265625/27., 0., 0., -1.265625/27., 3.796875/27., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., 0., 0., 0., -2.53125/27., 7.59375/27., 0., 0., 0., 0., 15.1875/27., 0., 0., + 0.421875/27., 0., 0., -1.265625/27., -1.265625/27., 0., 0., 3.796875/27., 0., 0., 0., -2.53125/27., 0., 0., 0., 7.59375/27., -2.53125/27., 0., 0., 7.59375/27., 0., 0., 0., 0., 0., 15.1875/27., 0., + 0.158203125/27., -0.052734375/27., 0.158203125/27., -0.474609375/27., -0.474609375/27., 0.158203125/27., -0.474609375/27., 1.423828125/27., 0.31640625/27., 0.31640625/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., -0.94921875/27., 2.84765625/27., 2.84765625/27., -0.94921875/27., 0.31640625/27., -0.94921875/27., 2.84765625/27., -1.8984375/27., 5.6953125/27., -1.8984375/27., -1.8984375/27., 5.6953125/27., 5.6953125/27., 11.390625/27., +}; + + + + +static double * embedding0[] = +{ + q1_into_q1_refined_0, + q2_into_q2_refined_0, +// q3_into_q3_refined_0, +// q4_into_q4_refined_0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding1[] = +{ + q1_into_q1_refined_1, + q2_into_q2_refined_1, +// q3_into_q3_refined_1, +// q4_into_q4_refined_1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding2[] = +{ + q1_into_q1_refined_2, + q2_into_q2_refined_2, +// q3_into_q3_refined_2, +// q4_into_q4_refined_2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding3[] = +{ + q1_into_q1_refined_3, + q2_into_q2_refined_3, +// q3_into_q3_refined_3, +// q4_into_q4_refined_3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding4[] = +{ + q1_into_q1_refined_4, + q2_into_q2_refined_4, +// q3_into_q3_refined_4, +// q4_into_q4_refined_4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding5[] = +{ + q1_into_q1_refined_5, + q2_into_q2_refined_5, +// q3_into_q3_refined_5, +// q4_into_q4_refined_5, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding6[] = +{ + q1_into_q1_refined_6, + q2_into_q2_refined_6, +// q3_into_q3_refined_6, +// q4_into_q4_refined_6, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +static double * embedding7[] = +{ + q1_into_q1_refined_7, + q2_into_q2_refined_7, +// q3_into_q3_refined_7, +// q4_into_q4_refined_7, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +}; + + + +static double constraint_q1[] = +{ + .25,.25,.25,.25, + .5,.5,0.,0., + 0.,.5,.5,0., + 0.,0.,.5,.5, + .5,0.,0.,.5 +}; + +static double constraint_q2[] = +{ + 0,0,0,0,0,0,0,0,1, + 0,0,0,0,1,0,0,0,0, + 0,0,0,0,0,1,0,0,0, + 0,0,0,0,0,0,1,0,0, + 0,0,0,0,0,0,0,1,0, + 0,0,0,0,.375,0,-.125,0,.75, + 0,0,0,0,0,.375,0,-.125,.75, + 0,0,0,0,-.125,0,.375,0,.75, + 0,0,0,0,0,-.125,0,.375,.75, + .375,-.125,0,0,.75,0,0,0,0, + -.125,.375,0,0,.75,0,0,0,0, + 0,.375,-.125,0,0,.75,0,0,0, + 0,-.125,.375,0,0,.75,0,0,0, + 0,0,-.125,.375,0,0,.75,0,0, + 0,0,.375,-.125,0,0,.75,0,0, + .375,0,0,-.125,0,0,0,.75,0, + -.125,0,0,.375,0,0,0,.75,0, + .140625,-.046875,.015625,-.046875,.28125,-.09375,-.09375,.28125,.5625, + -.046875,.140625,-.046875,.015625,.28125,.28125,-.09375,-.09375,.5625, + .015625,-.046875,.140625,-.046875,-.09375,.28125,.28125,-.09375,.5625, + -.046875,.015625,-.046875,.140625,-.09375,-.09375,.28125,.28125,.5625 +}; + +static double* constraint_matrices[] = +{ + constraint_q1, + constraint_q2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 +// constraint_q3, +// constraint_q4 +}; + diff --git a/deal.II/deal.II/source/fe/q1_mapping.cc b/deal.II/deal.II/source/fe/q1_mapping.cc deleted file mode 100644 index ec48f7351c..0000000000 --- a/deal.II/deal.II/source/fe/q1_mapping.cc +++ /dev/null @@ -1,801 +0,0 @@ -//---------------------------- q1_mapping.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- q1_mapping.cc --------------------------- - - -#include -#include -#include -#include -#include -#include -#include - -#include - - -// if necessary try to work around a bug in the IBM xlC compiler -#ifdef XLC_WORK_AROUND_STD_BUG -using namespace std; -#endif - - - -/*---------------------------- FEQ1Mapping ----------------------------------*/ - - -#if deal_II_dimension == 1 - -template <> -FEQ1Mapping<1>::FEQ1Mapping (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_components, - const std::vector &restriction_is_additive_flags) : - FiniteElement<1> (FiniteElementData<1> (dofs_per_vertex, - dofs_per_line, - GeometryInfo<1>::vertices_per_cell, - n_components), - restriction_is_additive_flags) -{ - Assert (dofs_per_quad==0, ExcInvalidData()); - Assert (dofs_per_hex==0, ExcInvalidData()); -}; - - -template <> -double -FEQ1Mapping<1>::shape_value_transform (const unsigned int i, - const Point<1> &p) const -{ - Assert((i<2), ExcIndexRange(i,0,2)); - const double xi = p(0); - switch (i) - { - case 0: return 1.-xi; - case 1: return xi; - } - return 0.; -}; - - -template <> -Tensor<1,1> -FEQ1Mapping<1>::shape_grad_transform(const unsigned int i, - const Point<1>&) const -{ - Assert((i<2), ExcIndexRange(i,0,2)); - switch (i) - { - case 0: return Point<1>(-1.); - case 1: return Point<1>(1.); - } - return Point<1>(); -}; - - -template <> -void FEQ1Mapping<1>::get_face_jacobians (const DoFHandler<1>::face_iterator &, - const std::vector > &, - std::vector &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ1Mapping<1>::get_subface_jacobians (const DoFHandler<1>::face_iterator &, - const unsigned int , - const std::vector > &, - std::vector &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ1Mapping<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ1Mapping<1>::get_normal_vectors (const DoFHandler<1>::cell_iterator &, - const unsigned int, - const unsigned int, - const std::vector > &, - std::vector > &) const { - Assert (false, ExcInternalError()); -}; - - -template <> -void FEQ1Mapping<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cell, - const std::vector > &unit_points, - std::vector > &jacobians, - const bool compute_jacobians, - std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - std::vector > &support_points, - const bool compute_support_points, - std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const std::vector > > &shape_gradients_transform) const { - // simply pass down - FiniteElement<1>::fill_fe_values (cell, unit_points, - jacobians, compute_jacobians, - jacobians_grad, compute_jacobians_grad, - support_points, compute_support_points, - q_points, compute_q_points, - shape_values_transform, shape_gradients_transform); -}; - - -#endif - - -#if deal_II_dimension == 2 - -template <> -FEQ1Mapping<2>::FEQ1Mapping (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_components, - const std::vector &restriction_is_additive_flags) : - FiniteElement<2> (FiniteElementData<2> (dofs_per_vertex, - dofs_per_line, - dofs_per_quad, - GeometryInfo<2>::vertices_per_cell, - n_components), - restriction_is_additive_flags) -{ - Assert (dofs_per_hex == 0, ExcInvalidData()); -}; - - -template <> -double -FEQ1Mapping<2>::shape_value_transform (const unsigned int i, - const Point<2>& p) const -{ - Assert((i<4), ExcIndexRange(i,0,4)); - switch (i) - { - case 0: return (1.-p(0)) * (1.-p(1)); - case 1: return p(0) * (1.-p(1)); - case 2: return p(0) * p(1); - case 3: return (1.-p(0)) * p(1); - } - return 0.; -}; - - -template <> -Tensor<1,2> -FEQ1Mapping<2>::shape_grad_transform (const unsigned int i, - const Point<2>& p) const -{ - Assert((i<4), ExcIndexRange(i,0,4)); - switch (i) - { - case 0: return Point<2> (p(1)-1., p(0)-1.); - case 1: return Point<2> (1.-p(1), -p(0)); - case 2: return Point<2> (p(1), p(0)); - case 3: return Point<2> (-p(1), 1.-p(0)); - } - return Point<2> (); -}; - - -template <> -void FEQ1Mapping<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &face, - const std::vector > &unit_points, - std::vector &face_jacobians) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == face_jacobians.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - face_jacobians.size())); - - // a linear mapping for a single line - // produces particularly simple - // expressions for the jacobi - // determinant :-) - const double h = sqrt((face->vertex(1) - face->vertex(0)).square()); - fill_n (face_jacobians.begin(), - unit_points.size(), - h); -}; - - -template <> -void FEQ1Mapping<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator &face, - const unsigned int , - const std::vector > &unit_points, - std::vector &face_jacobians) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == face_jacobians.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - face_jacobians.size())); - Assert (face->at_boundary() == false, - FiniteElement<2>::ExcBoundaryFaceUsed ()); - - // a linear mapping for a single line - // produces particularly simple - // expressions for the jacobi - // determinant :-) - const double h = sqrt((face->vertex(1) - face->vertex(0)).square()); - fill_n (face_jacobians.begin(), - unit_points.size(), - h/2); -}; - - -template <> -void FEQ1Mapping<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, - const unsigned int face_no, - const std::vector > &unit_points, - std::vector > &normal_vectors) const { - // more or less copied from the linear - // finite element - Assert (unit_points.size() == normal_vectors.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - normal_vectors.size())); - - const DoFHandler<2>::face_iterator face = cell->face(face_no); - // compute direction of line - const Point<2> line_direction = (face->vertex(1) - face->vertex(0)); - // rotate to the right by 90 degrees - const Point<2> normal_direction(line_direction(1), - -line_direction(0)); - - if (face_no <= 1) - // for sides 0 and 1: return the correctly - // scaled vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / sqrt(normal_direction.square())); - else - // for sides 2 and 3: scale and invert - // vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / (-sqrt(normal_direction.square()))); -}; - - -template <> -void FEQ1Mapping<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cell, - const unsigned int face_no, - const unsigned int, - const std::vector > &unit_points, - std::vector > &normal_vectors) const -{ - // more or less copied from the - // linear finite element note, that - // in 2D the normal vectors to the - // subface have the same direction - // as that for the face, so we can - // ignore the subface number - Assert (unit_points.size() == normal_vectors.size(), - FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), - normal_vectors.size())); - Assert (cell->face(face_no)->at_boundary() == false, - FiniteElement<2>::ExcBoundaryFaceUsed ()); - - const DoFHandler<2>::face_iterator face = cell->face(face_no); - // compute direction of line - const Point<2> line_direction = (face->vertex(1) - face->vertex(0)); - // rotate to the right by 90 degrees - const Point<2> normal_direction(line_direction(1), - -line_direction(0)); - - if (face_no <= 1) - // for sides 0 and 1: return the correctly - // scaled vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / sqrt(normal_direction.square())); - else - // for sides 2 and 3: scale and invert - // vector - fill (normal_vectors.begin(), normal_vectors.end(), - normal_direction / (-sqrt(normal_direction.square()))); -}; - -#endif - - -#if deal_II_dimension == 3 - -template <> -FEQ1Mapping<3>::FEQ1Mapping (const unsigned int dofs_per_vertex, - const unsigned int dofs_per_line, - const unsigned int dofs_per_quad, - const unsigned int dofs_per_hex, - const unsigned int n_components, - const std::vector &restriction_is_additive_flags) : - FiniteElement<3> (FiniteElementData<3> (dofs_per_vertex, - dofs_per_line, - dofs_per_quad, - dofs_per_hex, - GeometryInfo<3>::vertices_per_cell, - n_components), - restriction_is_additive_flags) -{}; - - -template <> -double -FEQ1Mapping<3>::shape_value_transform (const unsigned int i, - const Point<3>& p) const -{ - Assert((i<8), ExcIndexRange(i,0,8)); - switch (i) - { - case 0: return 1.0-p(0)+(-1.0+p(0))*p(1)+(-1.0+p(0)+(1.0-p(0))*p(1))*p(2); - case 1: return p(0)-p(0)*p(1)+(-p(0)+p(0)*p(1))*p(2); - case 2: return (p(0)-p(0)*p(1))*p(2); - case 3: return (1.0-p(0)+(-1.0+p(0))*p(1))*p(2); - case 4: return (1.0-p(0))*p(1)+(-1.0+p(0))*p(1)*p(2); - case 5: return p(0)*p(1)-p(0)*p(1)*p(2); - case 6: return p(0)*p(1)*p(2); - case 7: return (1.0-p(0))*p(1)*p(2); - } - return 0.; -}; - - -template <> -Tensor<1,3> -FEQ1Mapping<3>::shape_grad_transform (const unsigned int i, - const Point<3>& p) const -{ - Assert((i<8), ExcIndexRange(i,0,8)); - switch (i) - { - case 0: return Point<3>(-1.0+p(1)+(1.0-p(1))*p(2), - -1.0+p(0)+(1.0-p(0))*p(2), - -1.0+p(0)+(1.0-p(0))*p(1)); - case 1: return Point<3>(1.0-p(1)+(-1.0+p(1))*p(2), - -p(0)+p(0)*p(2), - -p(0)+p(0)*p(1)); - case 2: return Point<3>((1.0-p(1))*p(2), - -p(0)*p(2), - p(0)-p(0)*p(1)); - case 3: return Point<3>((-1.0+p(1))*p(2), - (-1.0+p(0))*p(2), - 1.0-p(0)+(-1.0+p(0))*p(1)); - case 4: return Point<3>(-p(1)+p(1)*p(2), - 1.0-p(0)+(-1.0+p(0))*p(2), - (-1.0+p(0))*p(1)); - case 5: return Point<3>(p(1)-p(1)*p(2), - p(0)-p(0)*p(2), - -p(0)*p(1)); - case 6: return Point<3>(p(1)*p(2), - p(0)*p(2), - p(0)*p(1)); - case 7: return Point<3>(-p(1)*p(2), - (1.0-p(0))*p(2), - (1.0-p(0))*p(1)); - } - return Point<3> (); -}; - - -template <> -void FEQ1Mapping<3>::get_face_jacobians (const DoFHandler<3>::face_iterator &face, - const std::vector > &unit_points, - std::vector &face_jacobians) const { - Assert (unit_points.size() == face_jacobians.size(), - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - face_jacobians.size())); - - // the computation of the face jacobians is - // along the following lines: let x_i be - // the four vertices of a face, then the - // unit point (xi,eta) is mapped to the - // point vec x(xi,eta)=\sum x_i phi_i(xi,eta), - // with phi_i being the shape functions - // of this face - // - // now, while d(xi) d(eta) is the area - // element on the unit face, - // abs(dx dy) is the respective element - // of the real face. to compute it, we - // compute the image of the elements d(xi) - // and d(eta): - // (\vec x(xi+dxi,eta) - \vec x(xi,eta) ) - // (\vec x(xi,eta+deta) - \vec x(xi,eta) ) - // the area then is the norm of the - // cross product of these two vectors - // and the determinant is the area - // divided by d(xi)d(eta) - // - // written down, we remark that the - // determinant we are looking for is - // the cross product of the following - // two vectors: - // d/d(xi) vec x(xi,eta) - // d/d(eta) vec x(xi,eta) - // we then arrive at: - // - // detJ = - // || \sum_l \sum_k \phi_{l,xi} \phi_{k,eta} - // x_l \times x_k || - // - // a maple script doing this computation is - // in the directory - const Point<3> vertices[4] = { face->vertex(0), - face->vertex(1), - face->vertex(2), - face->vertex(3) }; - - for (unsigned int point=0; point -void FEQ1Mapping<3>::get_subface_jacobians (const DoFHandler<3>::face_iterator &/*face*/, - const unsigned int , - const std::vector > &unit_points, - std::vector &face_jacobians) const { - Assert (false, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - face_jacobians.size())); -}; - - -template <> -void FEQ1Mapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &cell, - const unsigned int face_no, - const std::vector > &unit_points, - std::vector > &normal_vectors) const { - Assert (unit_points.size() == normal_vectors.size(), - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - normal_vectors.size())); - - // taken from the same script as is - // the computation of the jacobian - // determinant above - - const Point<3> vertices[4] = { cell->face(face_no)->vertex(0), - cell->face(face_no)->vertex(1), - cell->face(face_no)->vertex(2), - cell->face(face_no)->vertex(3) }; - - for (unsigned int point=0; point -void FEQ1Mapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &/*cell*/, - const unsigned int /*face_no*/, - const unsigned int, - const std::vector > &unit_points, - std::vector > &normal_vectors) const { - // more or less copied from the linear - // finite element - // note, that in 2D the normal vectors to the - // subface have the same direction as that - // for the face - Assert (false, - FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), - normal_vectors.size())); -}; - -#endif - - -template -Point FEQ1Mapping::transform_unit_to_real_cell ( - const typename DoFHandler::cell_iterator &cell, - const Point &p) const -{ - Point p_real; - for (unsigned int i=0; i::vertices_per_cell; ++i) - p_real+=cell->vertex(i) * shape_value_transform (i, p); - return p_real; -} - - -template -Point FEQ1Mapping::transform_real_to_unit_cell ( - const typename DoFHandler::cell_iterator &cell, - const Point &p) const -{ - // Newton iteration to solve - // f(x)=p(x)-p=0 - // x_{n+1}=x_n-[f'(x)]^{-1}f(x) - - // start value in center of unit - // cell (p_unit stands for x) - Point p_unit; - for (unsigned int i=0; i p_real(transform_unit_to_real_cell(cell, p_unit)); - Point f = p_real-p; - - double eps=1e-15*cell->diameter(); - - while (f.square()>eps*eps) - { - // f'(x) - Tensor<2,dim> df; - for (unsigned int k=0; k::vertices_per_cell; ++k) - { - Tensor<1,dim> grad_transform(shape_grad_transform (k, p_unit)); - Point &vertex=cell->vertex(k); - - - for (unsigned int i=0; i d; - Tensor<2,dim> df_1; - - df_1 = invert(df); - contract (d, df_1, f); - - p_unit -= d; - // f(x) - p_real=transform_unit_to_real_cell(cell, p_unit); - f = p_real-p; - } - - return p_unit; -} - - -template -void FEQ1Mapping::fill_fe_values (const typename DoFHandler::cell_iterator &cell, - const typename std::vector > &unit_points, - typename std::vector > &jacobians, - const bool compute_jacobians, - typename std::vector > &jacobians_grad, - const bool compute_jacobians_grad, - typename std::vector > &support_points, - const bool compute_support_points, - typename std::vector > &q_points, - const bool compute_q_points, - const FullMatrix &shape_values_transform, - const typename std::vector > > &shape_grad_transform) const -{ - Assert ((!compute_jacobians) || (jacobians.size() == unit_points.size()), - typename FiniteElementBase::ExcWrongFieldDimension(jacobians.size(), - unit_points.size())); - Assert ((!compute_jacobians_grad) || (jacobians_grad.size() == unit_points.size()), - typename FiniteElementBase::ExcWrongFieldDimension(jacobians_grad.size(), - unit_points.size())); - Assert ((!compute_q_points) || (q_points.size() == unit_points.size()), - typename FiniteElementBase::ExcWrongFieldDimension(q_points.size(), - unit_points.size())); - Assert ((!compute_support_points) || (support_points.size() == dofs_per_cell), - typename FiniteElementBase::ExcWrongFieldDimension(support_points.size(), - dofs_per_cell)); - - - unsigned int n_points=unit_points.size(); - - Point vertices[GeometryInfo::vertices_per_cell]; - for (unsigned int l=0; l::vertices_per_cell; ++l) - vertices[l] = cell->vertex(l); - - - if (compute_q_points) - { - // initialize points to zero - for (unsigned int i=0; i (); - - // note: let x_l be the vector of the - // lth quadrature point in real space and - // xi_l that on the unit cell, let further - // p_j be the vector of the jth vertex - // of the cell in real space and - // N_j(xi_l) be the value of the associated - // basis function at xi_l, then - // x_l(xi_l) = sum_j p_j N_j(xi_l) - // - // Here, N_j is the *linear* basis function, - // not that of the finite element, since we - // use a subparametric mapping - for (unsigned int j=0; j::vertices_per_cell; ++j) - for (unsigned int l=0; l directory. - - ------------------------------------------- - #include - #include - #include - #include - #include - #include - #include - #include - #include - - int main () { - Triangulation<2> tria; - tria.create_hypercube (0,1); - tria.begin_active()->vertex(2)(0) = 2; - - DoFHandler<2> dof(&tria); - FELinear<2> fe; - dof.distribute_dofs(fe); - - StraightBoundary<2> b; - QTrapez<2> q; - FEValues<2> fevalues(fe,q,update_gradients); - fevalues.reinit (dof.begin_active(),b); - - - Vector val(4); - val(2) = 1; - - std::vector > grads(4); - fevalues.get_function_grads (val, grads); - - for (unsigned int i=0; i<4; ++i) - std::cout << "Vertex " << i - << " grad=" << grads[i] << std::endl; - }; - --------------------------------------------- - - The correct output should be - -------------------------------- - Vertex 0 grad=0 0 - Vertex 1 grad=0.5 0 - Vertex 2 grad=0 1 - Vertex 3 grad=0.5 0.5 - -------------------------------- - and the wrong would be - -------------------------------- - Vertex 0 grad=0 0 - Vertex 1 grad=0.5 0 - Vertex 2 grad=-1 1 - Vertex 3 grad=0 1 - -------------------------------- -*/ - - if (compute_jacobians) - { - if (dim == 1) - { - const double h = (cell->vertex(1)(0)-cell->vertex(0)(0)); - - for (unsigned int point=0; point M; - for (unsigned int l=0; l::vertices_per_cell; ++s) - { - // we want the linear transform, - // so use that function - const Point gradient = shape_grad_transform[s][l]; - for (unsigned int i=0; i; diff --git a/deal.II/deal.II/source/fe/q1_mapping.jacobians.cc b/deal.II/deal.II/source/fe/q1_mapping.jacobians.cc deleted file mode 100644 index 505838872d..0000000000 --- a/deal.II/deal.II/source/fe/q1_mapping.jacobians.cc +++ /dev/null @@ -1,4636 +0,0 @@ -//---------------------------- q1_mapping.jacobians.cc --------------------------- -// $Id$ -// Version: $Name$ -// -// Copyright (C) 1998, 1999, 2000, 2001 by the deal.II authors -// -// This file is subject to QPL and may not be distributed -// without copyright and license information. Please refer -// to the file deal.II/doc/license.html for the text and -// further information on this license. -// -//---------------------------- q1_mapping.jacobians.cc --------------------------- - - -#include -#include -#include -#include - -#include - - -/** - * This file has been singled out from q1_mapping.cc because the computation - * of the 3d matrices is so extremely large that it can't be done with - * optimization switched on. On the other hand, this also is not necessary, - * because Maple outputs fairly good optimized code already. Singling out this file - * allows to compile this file with less optimization without affecting the other - * files. - */ - - -#if deal_II_dimension == 1 - -template <> -void FEQ1Mapping<1>::compute_jacobian_gradients (const DoFHandler<1>::cell_iterator &, - const std::vector > &unit_points, - std::vector > &jacobians_grad) -{ - Assert (unit_points.size() == jacobians_grad.size(), - FiniteElementBase<3>::ExcWrongFieldDimension(jacobians_grad.size(), - unit_points.size())); - - // derivative of the - // jacobian is always zero - // for a linear mapping in 1d - for (unsigned int point=0; point -void FEQ1Mapping<2>::compute_jacobian_gradients (const DoFHandler<2>::cell_iterator &cell, - const std::vector > &unit_points, - std::vector > &jacobians_grad) -{ - Assert (unit_points.size() == jacobians_grad.size(), - FiniteElementBase<2>::ExcWrongFieldDimension(jacobians_grad.size(), - unit_points.size())); - - const unsigned int dim = 2; - - Point vertices[GeometryInfo::vertices_per_cell]; - for (unsigned int l=0; l::vertices_per_cell; ++l) - vertices[l] = cell->vertex(l); - - for (unsigned int point=0; point -void FEQ1Mapping<3>::compute_jacobian_gradients (const DoFHandler<3>::cell_iterator &cell, - const std::vector > &unit_points, - std::vector > &jacobians_grad) -{ - Assert (unit_points.size() == jacobians_grad.size(), - FiniteElementBase<3>::ExcWrongFieldDimension(jacobians_grad.size(), - unit_points.size())); - - const unsigned int dim = 3; - - Point vertices[GeometryInfo::vertices_per_cell]; - for (unsigned int l=0; l::vertices_per_cell; ++l) - vertices[l] = cell->vertex(l); - - for (unsigned int point=0; point