From: wolf Date: Tue, 16 Feb 1999 17:14:05 +0000 (+0000) Subject: This is the long awaited, long worked on, gorgeous patch implementing the whole 3d... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b7c1a1c9b8bb4b179d3e2b13afcf0edf0303e2f;p=dealii-svn.git This is the long awaited, long worked on, gorgeous patch implementing the whole 3d stuff. It presently compiles without problems, the test programs don't abort any more, but apart from the grid handling and the distribution of degrees of freedom, nothing is tested thoroughly. However, since this doesn't affect all those doing computations in 2d only, I check it in finally. git-svn-id: https://svn.dealii.org/trunk@817 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/dofs/dof_accessor.h b/deal.II/deal.II/include/dofs/dof_accessor.h index 1b977fc235..02da83439d 100644 --- a/deal.II/deal.II/include/dofs/dof_accessor.h +++ b/deal.II/deal.II/include/dofs/dof_accessor.h @@ -408,6 +408,137 @@ class DoFQuadAccessor : public DoFAccessor, public BaseClass { +/** + * Grant access to the degrees of freedom located on quads. + * + * @see DoFLineAccessor + */ +template +class DoFHexAccessor : public DoFAccessor, public BaseClass { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef DoFHandler AccessorData; + + /** + * Default constructor, unused thus + * not implemented. + */ + DoFHexAccessor (); + + /** + * Constructor. The #local_data# + * argument is assumed to be a pointer + * to a #DoFHandler# object. + */ + DoFHexAccessor (Triangulation *tria, + const int level, + const int index, + const AccessorData *local_data) : + DoFAccessor (local_data), + BaseClass (tria,level,index) {}; + + /** + * Return the index of the #i#th degree + * of freedom of this quad. + */ + int dof_index (const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * of freedom of this quad to #index#. + */ + void set_dof_index (const unsigned int i, const int index) const; + + /** + * Return the index of the #i#th degree + * on the #vertex#th vertex. + */ + int vertex_dof_index (const unsigned int vertex, + const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * on the #vertex#th vertex to #index#. + */ + void set_vertex_dof_index (const unsigned int vertex, + const unsigned int i, + const int index) const; + + /** + * Return the indices of the dofs of this + * quad in the standard ordering: dofs + * on vertex 0, dofs on vertex 1, etc, + * dofs on line 0, dofs on line 1, etc, + * dofs on quad 0, etc. + * + * It is assumed that the vector already + * has the right size beforehand. + */ + void get_dof_indices (vector &dof_indices) const; + + /** + * Return a pointer to the #i#th line + * bounding this #Hex#. + */ + TriaIterator > > + line (const unsigned int i) const; + + /** + * Return a pointer to the #i#th quad + * bounding this #Hex#. + */ + TriaIterator > > + quad (const unsigned int i) const; + + /** + * Return the #i#th child as a DoF hex + * iterator. This function is needed since + * the child function of the base + * class returns a hex accessor without + * access to the DoF data. + */ + TriaIterator > child (const unsigned int) const; + + /** + * Distribute a local (cell based) vector + * to a global one by mapping the local + * numbering of the degrees of freedom + * to the global one and entering the + * local values into the global vector. + * + * The elements are {\it added} up to + * the elements in the global vector, + * rather than just set, since this is + * usually what one wants. + */ + void distribute_local_to_global (const dVector &local_source, + dVector &global_destination) const; + + /** + * This function does much the same as the + * #distribute_local_to_global(dVector,dVector)# + * function, but operates on matrices + * instead of vectors. The sparse matrix + * is supposed to have non-zero entry + * slots where required. + */ + void distribute_local_to_global (const dFMatrix &local_source, + dSMatrix &global_destination) const; + + /** + * Implement the copy operator needed + * for the iterator classes. + */ + void copy_from (const DoFHexAccessor &a); +}; + + + + @@ -503,6 +634,7 @@ class DoFSubstructAccessor<2> : public DoFQuadAccessor<2,CellAccessor<2> > { * iterator classes. */ typedef typename DoFQuadAccessor<2,CellAccessor<2> >::AccessorData AccessorData; + /** * Constructor */ @@ -523,6 +655,41 @@ class DoFSubstructAccessor<2> : public DoFQuadAccessor<2,CellAccessor<2> > { +/** + * Intermediate, "typedef"-class, not for public use. + * + * @see DoFSubstructAccessor<1> + */ +template <> +class DoFSubstructAccessor<3> : public DoFHexAccessor<3,CellAccessor<3> > { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef typename DoFQuadAccessor<3,CellAccessor<3> >::AccessorData AccessorData; + + /** + * Constructor + */ + DoFSubstructAccessor (Triangulation<3> *tria, + const int level, + const int index, + const AccessorData *local_data) : + DoFHexAccessor<3,CellAccessor<3> > (tria,level,index,local_data) {}; + // do this here, since this way the + // CellAccessor has the possibility to know + // what a face_iterator is. Otherwise + // it would have to ask the DoFHandler + // which would need another big include + // file and maybe cyclic interdependence + typedef TriaIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > > face_iterator; +}; + + + + /** diff --git a/deal.II/deal.II/include/dofs/dof_handler.h b/deal.II/deal.II/include/dofs/dof_handler.h index 9c60d84c85..7f260bf513 100644 --- a/deal.II/deal.II/include/dofs/dof_handler.h +++ b/deal.II/deal.II/include/dofs/dof_handler.h @@ -13,10 +13,12 @@ template class TriaAccessor; template class LineAccessor; template class QuadAccessor; +template class HexAccessor; template class CellAccessor; template class DoFLineAccessor; template class DoFQuadAccessor; +template class DoFHexAccessor; template class DoFCellAccessor; template class DoFLevel; @@ -73,6 +75,10 @@ class DoFDimensionInfo<1> { typedef void * quad_iterator; typedef void * active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_line_iterator raw_cell_iterator; typedef line_iterator cell_iterator; typedef active_line_iterator active_cell_iterator; @@ -102,6 +108,10 @@ class DoFDimensionInfo<2> { typedef TriaIterator<2,DoFCellAccessor<2> > quad_iterator; typedef TriaActiveIterator<2,DoFCellAccessor<2> > active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_quad_iterator raw_cell_iterator; typedef quad_iterator cell_iterator; typedef active_quad_iterator active_cell_iterator; @@ -113,6 +123,36 @@ class DoFDimensionInfo<2> { +/** + * Define some types for the DoF handling in two dimensions. + * + * The types have the same meaning as those declared in \Ref{TriaDimensionInfo<3>}. + */ +class DoFDimensionInfo<3> { + public: + typedef TriaRawIterator<3,DoFLineAccessor<3,LineAccessor<3> > > raw_line_iterator; + typedef TriaIterator<3,DoFLineAccessor<3,LineAccessor<3> > > line_iterator; + typedef TriaActiveIterator<3,DoFLineAccessor<3,LineAccessor<3> > > active_line_iterator; + + typedef TriaRawIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > > raw_quad_iterator; + typedef TriaIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > > quad_iterator; + typedef TriaActiveIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > > active_quad_iterator; + + typedef TriaRawIterator<3,DoFCellAccessor<3> > raw_hex_iterator; + typedef TriaIterator<3,DoFCellAccessor<3> > hex_iterator; + typedef TriaActiveIterator<3,DoFCellAccessor<3> > active_hex_iterator; + + typedef raw_hex_iterator raw_cell_iterator; + typedef hex_iterator cell_iterator; + typedef active_hex_iterator active_cell_iterator; + + typedef raw_quad_iterator raw_face_iterator; + typedef quad_iterator face_iterator; + typedef active_quad_iterator active_face_iterator; +}; + + + @@ -473,6 +513,10 @@ class DoFHandler : public DoFDimensionInfo { typedef typename DoFDimensionInfo::quad_iterator quad_iterator; typedef typename DoFDimensionInfo::active_quad_iterator active_quad_iterator; + typedef typename DoFDimensionInfo::raw_hex_iterator raw_hex_iterator; + typedef typename DoFDimensionInfo::hex_iterator hex_iterator; + typedef typename DoFDimensionInfo::active_hex_iterator active_hex_iterator; + typedef typename DoFDimensionInfo::raw_cell_iterator raw_cell_iterator; typedef typename DoFDimensionInfo::cell_iterator cell_iterator; typedef typename DoFDimensionInfo::active_cell_iterator active_cell_iterator; @@ -1268,6 +1312,113 @@ class DoFHandler : public DoFDimensionInfo { /*---------------------------------------*/ + /** + * @name Hex iterator functions*/ + /*@{ + */ + /** + * Return iterator to the first hex, used + * or not, on level #level#. If a level + * has no hexs, a past-the-end iterator + * is returned. + */ + raw_hex_iterator + begin_raw_hex (const unsigned int level = 0) const; + + /** + * Return iterator to the first used hex + * on level #level#. + */ + hex_iterator + begin_hex (const unsigned int level = 0) const; + + /** + * Return iterator to the first active + * hex on level #level#. + */ + active_hex_iterator + begin_active_hex(const unsigned int level = 0) const; + + /** + * Return iterator past the end; this + * iterator serves for comparisons of + * iterators with past-the-end or + * before-the-beginning states. + */ + raw_hex_iterator + end_hex () const; + + /** + * Return an iterator which is the first + * iterator not on level. If #level# is + * the last level, then this returns + * #end()#. + */ + hex_iterator end_hex (const unsigned int level) const; + + /** + * Return a raw iterator which is the first + * iterator not on level. If #level# is + * the last level, then this returns + * #end()#. + */ + raw_hex_iterator end_raw_hex (const unsigned int level) const; + + /** + * Return an active iterator which is the + * first iterator not on level. If #level# + * is the last level, then this returns + * #end()#. + */ + active_hex_iterator end_active_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the + * last hex, used or not. + */ + raw_hex_iterator + last_raw_hex () const; + + /** + * Return an iterator pointing to the last + * hex of the level #level#, used or not. + + */ + raw_hex_iterator + last_raw_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the last + * used hex. + */ + hex_iterator + last_hex () const; + + /** + * Return an iterator pointing to the last + * used hex on level #level#. + */ + hex_iterator + last_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the last + * active hex. + */ + active_hex_iterator + last_active_hex () const; + + /** + * Return an iterator pointing to the last + * active hex on level #level#. + */ + active_hex_iterator + last_active_hex (const unsigned int level) const; + /*@}*/ + + /*---------------------------------------*/ + + /** * Return number of degrees of freedom. * Included in this number are those @@ -1466,6 +1617,8 @@ class DoFHandler : public DoFDimensionInfo { friend class DoFLineAccessor >; friend class DoFQuadAccessor >; friend class DoFQuadAccessor >; + friend class DoFHexAccessor >; + friend class DoFHexAccessor >; }; diff --git a/deal.II/deal.II/include/dofs/dof_levels.h b/deal.II/deal.II/include/dofs/dof_levels.h index 8682610f85..e5b460d0b4 100644 --- a/deal.II/deal.II/include/dofs/dof_levels.h +++ b/deal.II/deal.II/include/dofs/dof_levels.h @@ -93,6 +93,22 @@ class DoFLevel<2> : public DoFLevel<1> { +/** + * Store the indices of the degrees of freedom which are located on hexhedra. + * See \Ref{DoFLevel<1>} for more information. + */ +class DoFLevel<3> : public DoFLevel<2> { + public: + /** + * Store the global indices of the degrees + * of freedom. See \Ref{DoFLevel} for + * detailed information. + */ + vector hex_dofs; +}; + + + /*---------------------------- dof_levels.h ---------------------------*/ /* end of #ifndef __dof_levels_H */ #endif diff --git a/deal.II/deal.II/include/dofs/mg_dof_accessor.h b/deal.II/deal.II/include/dofs/mg_dof_accessor.h index 37a6cfb5ee..0ee7b25e6b 100644 --- a/deal.II/deal.II/include/dofs/mg_dof_accessor.h +++ b/deal.II/deal.II/include/dofs/mg_dof_accessor.h @@ -333,6 +333,115 @@ class MGDoFQuadAccessor : public MGDoFAccessor, public DoFQuadAccessor +class MGDoFHexAccessor : public MGDoFAccessor, public DoFHexAccessor { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef MGDoFHandler AccessorData; + + /** + * Default constructor, unused thus + * not implemented. + */ + MGDoFHexAccessor (); + + /** + * Constructor. The #local_data# + * argument is assumed to be a pointer + * to a #DoFHandler# object. + */ + MGDoFHexAccessor (Triangulation *tria, + const int level, + const int index, + const AccessorData *local_data); + + /** + * Return the index of the #i#th degree + * of freedom of this hex on the level + * this quad lives on. + */ + int mg_dof_index (const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * of freedom of this hex on the + * level this hex lives on to #index#. + */ + void set_mg_dof_index (const unsigned int i, const int index) const; + + /** + * Return the index of the #i#th degree + * on the #vertex#th vertex for the level + * this hex lives on. + */ + int mg_vertex_dof_index (const unsigned int vertex, + const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * on the #vertex#th vertex for the + * level this hex lives on to #index#. + */ + void set_mg_vertex_dof_index (const unsigned int vertex, + const unsigned int i, + const int index) const; + + /** + * Return the indices of the dofs of this + * hex in the standard ordering: dofs + * on vertex 0, dofs on vertex 1, etc, + * dofs on line 0, dofs on line 1, etc, + * dofs on quad 0, etc. + * + * It is assumed that the vector already + * has the right size beforehand. The + * indices refer to the local numbering + * for the level this hex lives on. + */ + void get_mg_dof_indices (vector &dof_indices) const; + + /** + * Return a pointer to the #i#th line + * bounding this #Hex#. + */ + TriaIterator > > + line (const unsigned int i) const; + + /** + * Return a pointer to the #i#th quad + * bounding this #Hex#. + */ + TriaIterator > > + quad (const unsigned int i) const; + + /** + * Return the #i#th child as a DoF quad + * iterator. This function is needed since + * the child function of the base + * class returns a hex accessor without + * access to the DoF data. + */ + TriaIterator > child (const unsigned int) const; + + /** + * Implement the copy operator needed + * for the iterator classes. + */ + void copy_from (const MGDoFHexAccessor &a); +}; + + + + /** * Intermediate, "typedef"-class, not for public use. @@ -445,6 +554,40 @@ class MGDoFSubstructAccessor<2> : public MGDoFQuadAccessor<2,CellAccessor<2> > { +/** + * Intermediate, "typedef"-class, not for public use. + * + * @see MGDoFSubstructAccessor<1> + */ +template <> +class MGDoFSubstructAccessor<3> : public MGDoFHexAccessor<3,CellAccessor<3> > { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef MGDoFHexAccessor<3,CellAccessor<3> >::AccessorData AccessorData; + + /** + * Constructor + */ + MGDoFSubstructAccessor (Triangulation<3> *tria, + const int level, + const int index, + const AccessorData *local_data) : + MGDoFHexAccessor<3,CellAccessor<3> > (tria,level,index,local_data) {}; + // do this here, since this way the + // CellAccessor has the possibility to know + // what a face_iterator is. Otherwise + // it would have to ask the DoFHandler + // which would need another big include + // file and maybe cyclic interdependence + typedef TriaIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > face_iterator; +}; + + + diff --git a/deal.II/deal.II/include/dofs/mg_dof_handler.h b/deal.II/deal.II/include/dofs/mg_dof_handler.h index f5d5b1e958..6f80e19be7 100644 --- a/deal.II/deal.II/include/dofs/mg_dof_handler.h +++ b/deal.II/deal.II/include/dofs/mg_dof_handler.h @@ -47,6 +47,10 @@ class MGDoFDimensionInfo<1> { typedef void * quad_iterator; typedef void * active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_line_iterator raw_cell_iterator; typedef line_iterator cell_iterator; typedef active_line_iterator active_cell_iterator; @@ -76,6 +80,10 @@ class MGDoFDimensionInfo<2> { typedef TriaIterator<2,MGDoFCellAccessor<2> > quad_iterator; typedef TriaActiveIterator<2,MGDoFCellAccessor<2> > active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_quad_iterator raw_cell_iterator; typedef quad_iterator cell_iterator; typedef active_quad_iterator active_cell_iterator; @@ -88,6 +96,37 @@ class MGDoFDimensionInfo<2> { +/** + * Define some types for the DoF handling in two dimensions. + * + * The types have the same meaning as those declared in \Ref{TriaDimensionInfo<2>}. + */ +class MGDoFDimensionInfo<3> { + public: + typedef TriaRawIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > raw_line_iterator; + typedef TriaIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > line_iterator; + typedef TriaActiveIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > active_line_iterator; + + typedef TriaRawIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > raw_quad_iterator; + typedef TriaIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > quad_iterator; + typedef TriaActiveIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > active_quad_iterator; + + typedef TriaRawIterator<3,MGDoFCellAccessor<3> > raw_hex_iterator; + typedef TriaIterator<3,MGDoFCellAccessor<3> > hex_iterator; + typedef TriaActiveIterator<3,MGDoFCellAccessor<3> > active_hex_iterator; + + typedef raw_hex_iterator raw_cell_iterator; + typedef hex_iterator cell_iterator; + typedef active_hex_iterator active_cell_iterator; + + typedef raw_quad_iterator raw_face_iterator; + typedef quad_iterator face_iterator; + typedef active_quad_iterator active_face_iterator; +}; + + + + template class MGDoFHandler : public DoFHandler { diff --git a/deal.II/deal.II/include/fe/fe.h b/deal.II/deal.II/include/fe/fe.h index 22ae825564..7d29d97057 100644 --- a/deal.II/deal.II/include/fe/fe.h +++ b/deal.II/deal.II/include/fe/fe.h @@ -147,7 +147,7 @@ class FiniteElementData * me why we have to declare and implement * this one explicitely. */ - bool operator == (const FiniteElementData<2> &) const; + bool operator == (const FiniteElementData &) const; /** * Exception @@ -472,7 +472,7 @@ class FiniteElementBase : * 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 $n\times m$-matrix #line_constraints#, where $n$ is the + * are represented by a $n\times m$-matrix #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 @@ -498,6 +498,178 @@ class FiniteElementBase : * 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} + * 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 #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 #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. + * + * + * \subsection{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 #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. + * + * * \subsection{Notes on extending the finite element library} * * The #deal.II# library was mainly made to use lagrange elements of arbitrary @@ -1110,6 +1282,33 @@ class FiniteElement : public FiniteElementBase { * 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 chose 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 + * #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 + * #ExcComputationNotUseful# declared + * in this class, for example through the + * #AssertThrow# mechanism; 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. */ virtual void get_local_mass_matrix (const DoFHandler::cell_iterator &cell, const Boundary &boundary, @@ -1131,6 +1330,14 @@ class FiniteElement : public FiniteElementBase { * Exception */ DeclException0 (ExcJacobiDeterminantHasWrongSign); + /** + * Exception + */ + DeclException1 (ExcComputationNotUseful, + int, + << "The computation you required from this function is not " + << "feasable or not probable in the present dimension (" + << arg1 << ") because it would be prohibitively expensive."); }; template 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 c44d72be05..9842e8d854 100644 --- a/deal.II/deal.II/include/fe/fe_lib.lagrange.h +++ b/deal.II/deal.II/include/fe/fe_lib.lagrange.h @@ -22,7 +22,10 @@ * with the $j$th corner point, on the unit cell at point $\vec \xi$. The sum * over $j$ runs over all corner points. * - * @author Wolfgang Bangerth, 1998 + * The number of degrees of freedom equal the number of the respective vertex + * of the cell + * + * @author Wolfgang Bangerth, 1998, 1999 */ template @@ -95,6 +98,15 @@ class FELinear : public FELinearMapping { /** * 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 DoFHandler::cell_iterator &cell, const Boundary &boundary, @@ -121,7 +133,82 @@ class FELinear : public FELinearMapping { * A linear (subparametric) mapping from the unit cell * to the real cell is implemented. * - * @author Wolfgang Bangerth, 1998 + * 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: #[0, 0, 0]#; + * \item Index 1: #[1, 0, 0]#; + * \item Index 2: #[1, 0, 1]#; + * \item Index 3: #[0, 0, 1]#; + * \item Index 4: #[0, 1, 0]#; + * \item Index 5: #[1, 1, 0]#; + * \item Index 6: #[1, 1, 1]#; + * \item Index 7: #[0, 1, 1]#; + * \item Index 8: #[1/2, 0, 0]#; + * \item Index 9: #[1, 0, 1/2]#; + * \item Index 10: # [1/2, 0, 1]#; + * \item Index 11: # [0, 0, 1/2]#; + * \item Index 12: # [1/2, 1, 0]#; + * \item Index 13: # [1, 1, 1/2]#; + * \item Index 14: # [1/2, 1, 1]#; + * \item Index 15: # [0, 1, 1/2]#; + * \item Index 16: # [0, 1/2, 0]#; + * \item Index 17: # [1, 1/2, 0]#; + * \item Index 18: # [1, 1/2, 1]#; + * \item Index 19: # [0, 1/2, 1]#; + * \item Index 20: # [1/2, 0, 1/2]#; + * \item Index 21: # [1/2, 1, 1/2]#; + * \item Index 22: # [1/2, 1/2, 0]#; + * \item Index 23: # [1, 1/2, 1/2]#; + * \item Index 24: # [1/2, 1/2, 1]#; + * \item Index 25: # [0, 1/2, 1/2]#; + * \item Index 26: # [1/2, 1/2, 1/2]#; + * \end{itemize} + * \end{itemize} + * + * @author Wolfgang Bangerth, 1998, 1999 */ template class FEQuadraticSub : public FELinearMapping { @@ -192,6 +279,15 @@ class FEQuadraticSub : public FELinearMapping { /** * 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 DoFHandler::cell_iterator &cell, const Boundary &boundary, @@ -308,6 +404,15 @@ class FECubicSub : public FELinearMapping { /** * 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 DoFHandler::cell_iterator &cell, const Boundary &boundary, @@ -424,7 +529,16 @@ class FEQuarticSub : public FELinearMapping { /** * Refer to the base class for detailed - * information on this function. + * 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 DoFHandler::cell_iterator &cell, const Boundary &boundary, diff --git a/deal.II/deal.II/include/fe/fe_linear_mapping.h b/deal.II/deal.II/include/fe/fe_linear_mapping.h index 4a489b7aba..b9001fb258 100644 --- a/deal.II/deal.II/include/fe/fe_linear_mapping.h +++ b/deal.II/deal.II/include/fe/fe_linear_mapping.h @@ -25,11 +25,15 @@ class FELinearMapping : public FiniteElement { * Constructor. Simply passes through * its arguments to the base class. For * one space dimension, #dofs_per_quad# + * shall be zero; similarly, for one and + * two space dimensions, #dofs_per_hex# * shall be zero. */ FELinearMapping (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, - const unsigned int dofs_per_quad=0); + const unsigned int dofs_per_quad=0, + const unsigned int dofs_per_hex =0, + const unsigned int n_components =1); /** * Return the value of the #i#th shape @@ -146,6 +150,31 @@ class FELinearMapping : public FiniteElement { const vector > > &shape_grad_transform, const Boundary &boundary) const; + /** + * Compute the jacobian matrices + * of the mapping between unit + * and real cell at the given + * points on the unit cell. + */ + static void compute_jacobian_matrices (const DoFHandler::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians); + + /** + * 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 DoFHandler::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians); + + + /** + * Exception + */ + DeclException0 (ExcInternalError); /** * Exception */ diff --git a/deal.II/deal.II/include/grid/geometry_info.h b/deal.II/deal.II/include/grid/geometry_info.h index cfcaf9d4ef..0be10a79d3 100644 --- a/deal.II/deal.II/include/grid/geometry_info.h +++ b/deal.II/deal.II/include/grid/geometry_info.h @@ -90,7 +90,7 @@ struct GeometryInfo * * 1. Duplicated it in the new coordinate direction. * - * 2. Connect all corrsponding + * 2. Connect all corresponding * vertices of the original * hypercube and the copy by * lines. @@ -150,6 +150,11 @@ struct GeometryInfo * are (ordered in the direction of the * face) 0 and 1, on face 2 they are * 3 and 2, etc. + * + * For three spatial dimensions, + * the exact order of the children is + * laid down in the documentation of + * the #Triangulation# class. */ static unsigned int child_cell_on_face (unsigned int face, unsigned int subface); @@ -184,13 +189,22 @@ GeometryInfo<2>::child_cell_on_face (const unsigned int face, template<> -inline unsigned int -GeometryInfo<3>::child_cell_on_face (const unsigned int, - const unsigned int) -{ - Assert(false, ExcNotImplemented()); - return 0; -} +inline +unsigned int GeometryInfo<3>::child_cell_on_face (const unsigned int face, + const unsigned int subface) { + Assert (face class Boundary; template class TriaAccessor; template class LineAccessor; template class QuadAccessor; +template class HexAccessor; template class CellAccessor; template class TriangulationLevel; @@ -28,9 +29,6 @@ template class TriaActiveIterator; template class DoFHandler; template class MGDoFHandler; -template struct CellData; -struct SubCellData; - class dVector; @@ -163,6 +161,7 @@ class TriaDimensionInfo; /** * This class implements some types which differ between the dimensions. + * These are the declararions for the 1D case only. * * A #line_iterator# is typdef'd to an iterator operating on the * #lines# member variable of a #Triangulation<1># object. An @@ -179,7 +178,8 @@ class TriaDimensionInfo; * To enable the declaration of #begin_quad# and the like in * #Triangulation<1>#, the #quad_iterator#s are declared as * #void *#. Thus these types exist, but are useless and will - * certainly make any involuntary use visible. + * certainly make any involuntary use visible. The same holds + * for hexahedron iterators. * * The same applies for the #face_iterator# types, since lines * have no substructures apart from vertices, which are handled in @@ -196,6 +196,10 @@ class TriaDimensionInfo<1> { typedef void * quad_iterator; typedef void * active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_line_iterator raw_cell_iterator; typedef line_iterator cell_iterator; typedef active_line_iterator active_cell_iterator; @@ -208,19 +212,25 @@ class TriaDimensionInfo<1> { /** * This class implements some types which differ between the dimensions. + * These are the declararions for the 2D case only. * * A #line_iterator# is typdef'd to an iterator operating on the - * #lines# member variable of a #Triangulation<1># object. An + * #lines# member variable of a #Triangulation<2># object. An * #active_line_iterator# only operates on the active lines. * #raw_line_iterator# objects operate on all lines, used or not. - * Using #active_line_iterator#s may not be particularly useful since it + * Using #active_line_iterator#s may not be particularly in 2D useful since it * only operates on unrefined lines. However, also refined lines may bound * unrefined cells if the neighboring cell is refined once more than the * present one. * - * Similarly, #quad_iterator#, #raw_quad_iterator# and + * Similarly to line iterators, #quad_iterator#, #raw_quad_iterator# and * #active_quad_iterator# are declared. * + * To enable the declaration of #begin_hex# and the like in + * #Triangulation<[12]>#, the #hex_iterator#s are declared as + * #void *#. Thus these types exist, but are useless and will + * certainly make any involuntary use visible. + * * Since we are in two dimension, the following identities are declared: * \begin{verbatim} * typedef raw_quad_iterator raw_cell_iterator; @@ -243,6 +253,10 @@ class TriaDimensionInfo<2> { typedef TriaIterator<2,CellAccessor<2> > quad_iterator; typedef TriaActiveIterator<2,CellAccessor<2> > active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_quad_iterator raw_cell_iterator; typedef quad_iterator cell_iterator; typedef active_quad_iterator active_cell_iterator; @@ -255,6 +269,47 @@ class TriaDimensionInfo<2> { +/** + * This class implements some types which differ between the dimensions. + * These are the declararions for the 3D case only. + * + * For the declarations of the data types, more or less the same holds + * as for lower dimensions (see #TriaDimensionInfo<[12]>#). The + * dimension specific data types are here, since we are in three dimensions: + * \begin{verbatim} + * typedef raw_hex_iterator raw_cell_iterator; + * typedef hex_iterator cell_iterator; + * typedef active_hex_iterator active_cell_iterator; + * + * typedef raw_quad_iterator raw_face_iterator; + * typedef quad_iterator face_iterator; + * typedef active_quad_iterator active_face_iterator; + * \end{verbatim} + */ +template <> +class TriaDimensionInfo<3> { + public: + typedef TriaRawIterator<3,LineAccessor<3> > raw_line_iterator; + typedef TriaIterator<3,LineAccessor<3> > line_iterator; + typedef TriaActiveIterator<3,LineAccessor<3> > active_line_iterator; + + typedef TriaRawIterator<3,QuadAccessor<3> > raw_quad_iterator; + typedef TriaIterator<3,QuadAccessor<3> > quad_iterator; + typedef TriaActiveIterator<3,QuadAccessor<3> > active_quad_iterator; + + typedef TriaRawIterator<3,CellAccessor<3> > raw_hex_iterator; + typedef TriaIterator<3,CellAccessor<3> > hex_iterator; + typedef TriaActiveIterator<3,CellAccessor<3> > active_hex_iterator; + + typedef raw_hex_iterator raw_cell_iterator; + typedef hex_iterator cell_iterator; + typedef active_hex_iterator active_cell_iterator; + + typedef raw_quad_iterator raw_face_iterator; + typedef quad_iterator face_iterator; + typedef active_quad_iterator active_face_iterator; +}; + @@ -1131,6 +1186,22 @@ class TriaDimensionInfo<2> { * Similarly we define, that the four children of a quad are adjacent to the * vertex with the same number of the old quad. * + * \subsubsection{Coordinate systems} + * + * When explicit coordinates are required for points in a cell (e.g for + * quadrature formulae or the point of definition of trial functions), we + * define the following coordinate system for the unit cell: + * \begin{verbatim} + * y^ 3-------2 + * | | | + * | | | + * | | | + * | 0-------1 + * *-------------->x + * \end{verbatim} + * with vertex 0 being the origin of the coordinate system, vertex 1 having + * coordinates #(1,0)#, vertex 2 at #(1,1)# and vertex 3 at #(0,1)#. + * * * \subsection{Implementational conventions for three spatial dimensions} * @@ -1212,16 +1283,144 @@ class TriaDimensionInfo<2> { * \begin{verbatim} * *-------* *-------* * /| | / /| - * / | 2 | / 5 / | + * / | 1 | / 4 / | * / | | / / | * * | | *-------* | - * | 6 *-------* | | 4 * + * | 5 *-------* | | 3 * * | / / | | / - * | / 3 / | 1 | / + * | / 2 / | 0 | / * |/ / | |/ * *-------* *-------* * \end{verbatim} * + * The direction of the faces is determined by the numbers the lines have within + * a given face. This is like follows: + * \begin{itemize} + * \item Faces 0 and 1: + * \begin{verbatim} + * *---2---* *-------* + * /| | / /| + * / | 1 / / | + * / 3 | / / | + * * | | *---2---* | + * | *---0---* | | * + * | / / | 1 / + * | / / 3 | / + * |/ / | |/ + * *-------* *---0---* + * \end{verbatim} + * + * \item Faces 2 and 4: + * \begin{verbatim} + * *-------* *---2---* + * /| | / /| + * / | | 3 1 | + * / | | / / | + * * | | *---0---* | + * | *---2---* | | * + * | / / | | / + * | 3 1 | | / + * |/ / | |/ + * *---0---* *-------* + * \end{verbatim} + * + * \item Faces 3 and 5: + * \begin{verbatim} + * *-------* *-------* + * /| | / /| + * 2 1 | / 2 1 + * / | | / / | + * * | | *-------* | + * | *-------* | | * + * 3 / / | 3 / + * | 0 / | | 0 + * |/ / | |/ + * *-------* *-------* + * \end{verbatim} + * \end{itemize} + * + * Due to this numbering, the following lines are identical: + * \begin{itemize} + * \item Line 0 of face 0, and line 0 of face 2; + * \item Line 1 of face 0, and line 3 of face 3; + * \item Line 2 of face 0, and line 0 of face 4; + * \item Line 3 of face 0, and line 3 of face 5; + * \item Line 0 of face 1, and line 2 of face 2; + * \item Line 1 of face 1, and line 1 of face 3; + * \item Line 2 of face 1, and line 2 of face 4; + * \item Line 3 of face 1, and line 1 of face 5; + * \item Line 3 of face 2, and line 0 of face 5; + * \item Line 1 of face 2, and line 0 of face 3; + * \item Line 1 of face 4, and line 2 of face 3; + * \item Line 3 of face 4, and line 2 of face 5. + * \end{itemize} + * + * + * \subsubsection{Children} + * + * The eight children of a cell are numbered as follows: + * \begin{verbatim} + * *-------* *-------* + * /| 7 6 | / 7 6 /| + * /7| | / /6| + * / | | / 3 2 / | + * * | 4 5 | *-------*2 5| + * |3 4*-------* | 3 2 | * + * | / 4 5 / | | / + * |0/ / | |1/ + * |/0 1 / | 0 1 |/ + * *-------* *-------* + * \end{verbatim} + * + * Taking into account the orientation of the faces, the following + * children are adjacent to the respective faces: + * \begin{itemize} + * \item Face 0: children 0, 1, 2, 3; + * \item Face 1: children 4, 5, 6, 7; + * \item Face 2: children 0, 1, 5, 4; + * \item Face 3: children 1, 5, 6, 2; + * \item Face 4: children 3, 2, 6, 7; + * \item Face 5: children 0, 4, 7, 3. + * \end{itemize} + * You can get these numbers using the #GeometryInfo<3>::child_cell_on_face# + * function. Each child is adjacent to the vertex with the same number. + * + * + * \subsubsection{Coordinate systems} + * + * We define the following coordinate system for the explicit coordinates of + * the vertices of the unit cell: + * \begin{verbatim} + * 7-------6 7-------6 + * /| | / /| + * / | | / / | + * z / | | / / | + * ^ 3 | | 3-------2 | + * | ^y | 4-------5 | | 5 + * | / | / / | | / + * | / | / / | | / + * |/ |/ / | |/ + * *------>x 0-------1 0-------1 + * \end{verbatim} + * This convention in conjunction with the numbering of the vertices is a bit + * unfortunate, since the vertices 0 through 3 have the coordinates #(x,0,z)# + * with #x# and #z# being the same as the #x# and #y# coordinates of a quad + * in the plane; more intuitive would have been if they had the coordinates + * #(x,y,0)#. However, the vertex numbering was historically chosen as shown. + * + * By the convention laid down as above, the vertices have the following + * coordinates: + * \begin{itemize} + * \item Vertex 0: #(0,0,0)#; + * \item Vertex 1: #(1,0,0)#; + * \item Vertex 2: #(1,0,1)#; + * \item Vertex 3: #(0,0,1)#; + * \item Vertex 4: #(0,1,0)#; + * \item Vertex 5: #(1,1,0)#; + * \item Vertex 6: #(1,1,1)#; + * \item Vertex 7: #(0,1,1)#. + * \end{itemize} + * * * \subsection{Warning} * @@ -1237,9 +1436,6 @@ class TriaDimensionInfo<2> { template class Triangulation : public TriaDimensionInfo, public Subscriptor { public: - // insert these definitions for gcc2.8, - // since it can't inherit typedefs (I - // believe it should, but it can't) typedef typename TriaDimensionInfo::raw_line_iterator raw_line_iterator; typedef typename TriaDimensionInfo::line_iterator line_iterator; typedef typename TriaDimensionInfo::active_line_iterator active_line_iterator; @@ -1248,6 +1444,10 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { typedef typename TriaDimensionInfo::quad_iterator quad_iterator; typedef typename TriaDimensionInfo::active_quad_iterator active_quad_iterator; + typedef typename TriaDimensionInfo::raw_hex_iterator raw_hex_iterator; + typedef typename TriaDimensionInfo::hex_iterator hex_iterator; + typedef typename TriaDimensionInfo::active_hex_iterator active_hex_iterator; + typedef typename TriaDimensionInfo::raw_cell_iterator raw_cell_iterator; typedef typename TriaDimensionInfo::cell_iterator cell_iterator; typedef typename TriaDimensionInfo::active_cell_iterator active_cell_iterator; @@ -1294,7 +1494,10 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * function, i.e. you have to make sure * that it is not destroyed before * #Triangulation<>::execute_refinement()# - * is called the last time. + * is called the last time. Checking this + * is mostly done by the library by + * using a #Subscriptor# object as base + * class for boundary objects. * * If you copy this triangulation to * another one using the @@ -1302,6 +1505,26 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * make sure that the lifetime of boundary * object extends to the lifetime of the * new triangulation as well. + * + * Because of the use of the #Subscriptor# + * base class, you must wait for the + * #Triangulation# object to release the + * lock to the boundary object before + * destroying that. This usually happens + * when the destructor of the + * triangulation is executed, but you may + * manually do so by calling + * #set_boundary(0)#, passing a Null + * pointer as new boundary object. This + * is the interpreted as "take the + * default boundary object", which + * actually is a #StraightBoundary# + * object. + * + * You are allowed to remove or replace + * the boundary object during the lifetime + * of a non-empty triangulation, but + * you should be sure about what you do. */ void set_boundary (const Boundary *boundary_object); @@ -1524,7 +1747,10 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * were previously flagged for refinement. * * The function resets all refinement - * flags to false. + * flags to false. In three spatial + * dimensions, the user flag is used + * for lines and quads, but not for + * cells. * * See the general docs for more * information. @@ -1550,7 +1776,9 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * doc of this class for more information. * * This function is mostly dimension - * independent. + * independent. However, for some + * dimension dependent things, it calls + * #prepare_refinement_dim_dependent#. */ bool prepare_refinement (); @@ -1744,6 +1972,27 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * Load the user flags located on quads. */ void load_user_flags_quad (const vector &v); + + /** + * Save the user flags on hexs. + */ + void save_user_flags_hex (ostream &out) const; + + /** + * Same as above, but store the flags to + * a bitvector rather than to a file. + */ + void save_user_flags_hex (vector &v) const; + + /** + * Load the user flags located on hexs. + */ + void load_user_flags_hex (istream &in); + + /** + * Load the user flags located on hexs. + */ + void load_user_flags_hex (const vector &v); /*@}*/ /* ------------------------------------ */ @@ -2213,6 +2462,112 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { /*---------------------------------------*/ + /** + * @name Hex iterator functions*/ + /*@{ + */ + /** + * Return iterator to the first hex, used + * or not, on level #level#. If a level + * has no hexs, a past-the-end iterator + * is returned. + */ + raw_hex_iterator + begin_raw_hex (const unsigned int level = 0) const; + + /** + * Return iterator to the first used hex + * on level #level#. + */ + hex_iterator + begin_hex (const unsigned int level = 0) const; + + /** + * Return iterator to the first active + * hex on level #level#. + */ + active_hex_iterator + begin_active_hex(const unsigned int level = 0) const; + + /** + * Return iterator past the end; this + * iterator serves for comparisons of + * iterators with past-the-end or + * before-the-beginning states. + */ + raw_hex_iterator + end_hex () const; + + /** + * Return an iterator which is the first + * iterator not on level. If #level# is + * the last level, then this returns + * #end()#. + */ + hex_iterator end_hex (const unsigned int level) const; + + /** + * Return a raw iterator which is the first + * iterator not on level. If #level# is + * the last level, then this returns + * #end()#. + */ + raw_hex_iterator end_raw_hex (const unsigned int level) const; + + /** + * Return an active iterator which is the + * first iterator not on level. If #level# + * is the last level, then this returns + * #end()#. + */ + active_hex_iterator end_active_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the + * last hex, used or not. + */ + raw_hex_iterator + last_raw_hex () const; + + /** + * Return an iterator pointing to the last + * hex of the level #level#, used or not. + + */ + raw_hex_iterator + last_raw_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the last + * used hex. + */ + hex_iterator + last_hex () const; + + /** + * Return an iterator pointing to the last + * used hex on level #level#. + */ + hex_iterator + last_hex (const unsigned int level) const; + + /** + * Return an iterator pointing to the last + * active hex. + */ + active_hex_iterator + last_active_hex () const; + + /** + * Return an iterator pointing to the last + * active hex on level #level#. + */ + active_hex_iterator + last_active_hex (const unsigned int level) const; + /*@}*/ + + /*---------------------------------------*/ + /** * @name Input/Output functions */ @@ -2291,7 +2646,7 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * for the #n_cells()# function. */ unsigned int n_quads () const; - + /** * Return total number of used quads, * active or not on level #level#. @@ -2322,6 +2677,46 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { */ unsigned int n_active_quads (const unsigned int level) const; + /** + * Return total number of used hexahedra, + * active or not. + * + * Regarding the computational effort of + * this function, the same applies as + * for the #n_cells()# function. + */ + unsigned int n_hexs() const; + + /** + * Return total number of used hexahedra, + * active or not on level #level#. + * + * Regarding the computational effort of + * this function, the same applies as + * for the #n_cells()# function. + */ + unsigned int n_hexs(const unsigned int level) const; + + /** + * Return total number of active hexahedra, + * active or not. + * + * Regarding the computational effort of + * this function, the same applies as + * for the #n_cells()# function. + */ + unsigned int n_active_hexs() const; + + /** + * Return total number of active hexahedra, + * active or not on level #level#. + * + * Regarding the computational effort of + * this function, the same applies as + * for the #n_cells()# function. + */ + unsigned int n_active_hexs(const unsigned int level) const; + /** * Return total number of used cells, * active or not. @@ -2564,6 +2959,26 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { * of #execute_coarsening#. */ void delete_cell (cell_iterator &cell); + + /** + * Some dimension dependent stuff for + * mesh smoothing. This function returns + * whether some flags were changed. + * + * At present, this function does nothing + * in 1d and 2d, but makes sure no two + * cells with a level difference greater + * than one share one line in 3d. This + * is a requirement needed for the + * interpolation of hanging nodes, since + * otherwise to steps of interpolation + * would be necessary. This would make + * the processes implemented in the + * #ConstraintMatrix# class much more + * complex, since these two steps of + * interpolation do not commute. + */ + bool prepare_refinement_dim_dependent (); /** * Array of pointers pointing to the @@ -2604,16 +3019,22 @@ class Triangulation : public TriaDimensionInfo, public Subscriptor { friend class TriaAccessor; friend class LineAccessor; friend class QuadAccessor; + friend class HexAccessor; - friend class CellAccessor<1>; - friend class CellAccessor<2>; + friend class CellAccessor; friend class TriaRawIterator<1,LineAccessor<1> >; friend class TriaRawIterator<1,CellAccessor<1> >; + friend class TriaRawIterator<2,LineAccessor<2> >; friend class TriaRawIterator<2,QuadAccessor<2> >; friend class TriaRawIterator<2,CellAccessor<2> >; + friend class TriaRawIterator<3,LineAccessor<3> >; + friend class TriaRawIterator<3,QuadAccessor<3> >; + friend class TriaRawIterator<3,HexAccessor<3> >; + friend class TriaRawIterator<3,CellAccessor<3> >; + friend class DoFHandler; friend class MGDoFHandler; }; diff --git a/deal.II/deal.II/include/grid/tria_accessor.h b/deal.II/deal.II/include/grid/tria_accessor.h index 275a1d74b4..3b3c39f8bb 100644 --- a/deal.II/deal.II/include/grid/tria_accessor.h +++ b/deal.II/deal.II/include/grid/tria_accessor.h @@ -12,6 +12,8 @@ // forward declaration needed class Line; class Quad; +class Hexahedron; + template class Point; @@ -191,6 +193,14 @@ class TriaAccessor { /** * Exception */ + DeclException1 (ExcCantSetChildren, + int, + << "You can only set the child index if the cell has no " + << "children, or clear it. The given " + << "index was " << arg1 << " (-1 means: clear children)"); + /** + * Exception + */ DeclException0 (ExcUnusedCellAsNeighbor); /** * Exception @@ -240,29 +250,11 @@ class TriaAccessor { */ Triangulation *tria; - friend class TriaRawIterator<1,LineAccessor<1> >; - friend class TriaRawIterator<1,CellAccessor<1> >; - friend class TriaRawIterator<2,LineAccessor<2> >; - friend class TriaRawIterator<2,QuadAccessor<2> >; - friend class TriaRawIterator<2,CellAccessor<2> >; - - friend class TriaIterator<1,LineAccessor<1> >; - friend class TriaIterator<1,CellAccessor<1> >; - friend class TriaIterator<2,LineAccessor<2> >; - friend class TriaIterator<2,QuadAccessor<2> >; - friend class TriaIterator<2,CellAccessor<2> >; - - friend class TriaActiveIterator<1,LineAccessor<1> >; - friend class TriaActiveIterator<1,CellAccessor<1> >; - friend class TriaActiveIterator<2,LineAccessor<2> >; - friend class TriaActiveIterator<2,QuadAccessor<2> >; - friend class TriaActiveIterator<2,CellAccessor<2> >; - - friend class TriaRawIterator<1,DoFCellAccessor<1> >; - friend class TriaRawIterator<2,DoFCellAccessor<2> >; + template friend class TriaRawIterator; + template friend class TriaIterator; + template friend class TriaActiveIterator; + friend class TriaRawIterator<2,DoFLineAccessor<2,LineAccessor<2> > >; - friend class TriaIterator<1,DoFCellAccessor<1> >; - friend class TriaIterator<2,DoFCellAccessor<2> >; friend class TriaIterator<2,DoFLineAccessor<2,LineAccessor<2> > >; }; @@ -276,7 +268,7 @@ class TriaAccessor { * Accessor to dereference the data of lines. This accessor is used to * point to lines in #dim# space dimensions. There is a derived class * for lines in one space dimension, in which case a line is also a cell - * and thus has much more functionality than in lower dimensions. + * and thus has much more functionality than in other dimensions. * * @author Wolfgang Bangerth, 1998 */ @@ -541,12 +533,7 @@ class LineAccessor : public TriaAccessor { - public: -// protected: - // would be better to make this private, - // but that would require making all - // TriaRawIterator<...>s friend.->wait for - // gcc 2.30687 + protected: /**@name Advancement of iterators*/ /*@{*/ @@ -574,6 +561,12 @@ class LineAccessor : public TriaAccessor { */ void operator -- (); /*@}*/ + + /** + * Declare some friends. + */ + template friend class TriaRawIterator >; + template <> friend class TriaRawIterator<1,CellAccessor<1> >; }; @@ -583,7 +576,7 @@ class LineAccessor : public TriaAccessor { * point to quads in #dim# space dimensions (only #dim>=2# seems reasonable * to me). There is a derived class * for quads in two space dimension, in which case a quad is also a cell - * and thus has much more functionality than in lower dimensions. + * and thus has much more functionality than in other dimensions. * * @author Wolfgang Bangerth, 1998 */ @@ -685,20 +678,20 @@ class QuadAccessor : public TriaAccessor { void recursively_clear_user_flag () const; /** - * Set the user pointer of this line + * Set the user pointer of this quad * to #p#. */ void set_user_pointer (void *p) const; /** - * Reset the user pointer of this line + * Reset the user pointer of this quad * to a #NULL# pointer. */ void clear_user_pointer () const; /** * Access the value of the user pointer - * of this line. It is in the + * of this quad. It is in the * responsibility of the user to make * sure that the pointer points to * something useful. You should use the @@ -748,18 +741,18 @@ class QuadAccessor : public TriaAccessor { /** * Return the boundary indicator of this - * line. Since boundary data is only useful + * quad. Since boundary data is only useful * for structures with a dimension less * than the dimension of a cell, this * function issues an error if #dim<3#. * * If the return value is 255, then this - * line is in the interior of the domain. + * quad is in the interior of the domain. */ unsigned char boundary_indicator () const; /** - * Set the boundary indicator of this line. + * Set the boundary indicator of this quad. * The same applies as for the * #boundary_indicator()# function. * @@ -780,9 +773,9 @@ class QuadAccessor : public TriaAccessor { * Return whether this line is at the * boundary. This is checked via the * the boundary indicator field, which - * is always 255 if the line is in the + * is always 255 if the quad is in the * interior of the domain. Obviously, - * this is only possible for #dim>2#; + * this function is only useful for #dim>2#; * however, for #dim==2#, a quad is * a cell and the #CellAccessor# class * offers another possibility to @@ -832,9 +825,8 @@ class QuadAccessor : public TriaAccessor { Point center () const; /** - * Return the barycenter of the aud, - * which is the midpoint. The same - * applies as for the #center# function + * Return the barycenter of the qaud. The + * same applies as for the #center# function * with regard to quads at the boundary. */ Point barycenter () const; @@ -888,13 +880,355 @@ class QuadAccessor : public TriaAccessor { */ void operator = (const QuadAccessor &); + protected: + /**@name Advancement of iterators*/ + /*@{*/ + /** + * This operator advances the iterator to + * the next element. + * + * The next element is next on this + * level if there are more. If the + * present element is the last on + * this level, the first on the + * next level is accessed. + */ + void operator ++ (); + + /** + * This operator moves the iterator to + * the previous element. + * + * The previous element is previous on + * this level if #index>0#. If the + * present element is the first on + * this level, the last on the + * previous level is accessed. + */ + void operator -- (); + /*@}*/ + + /** + * Declare some friends. + */ + template friend class TriaRawIterator >; + template <> friend class TriaRawIterator<2,CellAccessor<2> >; +}; + + + +/** + * Accessor to dereference the data of hexahedra. This accessor is used to + * point to hexs in #dim# space dimensions (only #dim>=3# seems reasonable + * to me). There is a derived class + * for hexs in three space dimension, in which case a hex is also a cell + * and thus has much more functionality than in other dimensions. + * + * @author Wolfgang Bangerth, 1998 + */ +template +class HexAccessor : public TriaAccessor { public: -// protected: - // would be better to make this private, - // but that would require making all - // TriaRawIterator<...>s friend.->wait for - // gcc 2.30687 + /** + * Constructor. + */ + HexAccessor (Triangulation *parent = 0, + const int level = -1, + const int index = -1, + const void *local_data = 0) : + TriaAccessor (parent, level, index, local_data) {}; + + /** + * Copy the data of the given hex. + */ + void set (const Hexahedron &h) const; + + /** + * Return index of vertex #i=0,...,7# of + * a hex. The convention regarding the + * numbering of vertices is laid down + * in the documentation of the + * #Triangulation# class. + */ + int vertex_index (const unsigned int i) const; + + /** + * Return a reference (not an iterator!) + * to the #i#th vertex. + */ + Point & vertex (const unsigned int i) const; + + /** + * Return a pointer to the #i#th line + * bounding this #Hex#. + */ + TriaIterator > line (const unsigned int i) const; + + /** + * Return the line index of the #i#th + * line. The level is naturally + * the same as that of the hex. + */ + unsigned int line_index (const unsigned int i) const; + + /** + * Return a pointer to the #i#th quad + * bounding this #Hex#. + */ + TriaIterator > quad (const unsigned int i) const; + + /** + * Return the quad index of the #i#th + * side (a quad). The level is naturally + * the same as that of the hex. + */ + unsigned int quad_index (const unsigned int i) const; + + /** + * Test for the element being used + * or not. + */ + bool used () const; + + /** + * Set the #used# flag. You should know + * quite exactly what you are doing of you + * touch this function. It is exclusively + * for internal use in the library. + */ + void set_used_flag () const; + + /** + * Clear the #used# flag. You should know + * quite exactly what you are doing of you + * touch this function. It is exclusively + * for internal use in the library. + */ + void clear_used_flag () const; + + /** + * Return whether the user flag + * is set or not. + */ + bool user_flag_set () const; + + /** + * Flag the user flag for this cell. + */ + void set_user_flag () const; + + /** + * Clear the user flag. + */ + void clear_user_flag () const; + + /** + * set the user flag of this object + * and of all its children and their + * children, etc. + */ + void recursively_set_user_flag () const; + + /** + * Clear the user flag of this object + * and of all its children and their + * children, etc. + */ + void recursively_clear_user_flag () const; + + /** + * Set the user pointer of this hex + * to #p#. + */ + void set_user_pointer (void *p) const; + + /** + * Reset the user pointer of this hex + * to a #NULL# pointer. + */ + void clear_user_pointer () const; + + /** + * Access the value of the user pointer + * of this hex. It is in the + * responsibility of the user to make + * sure that the pointer points to + * something useful. You should use the + * new style cast operator to maintain + * a minimum of typesafety, e.g. + * #A *a=static_cast(cell->user_pointer());#. + */ + void * user_pointer () const; + + /** + * Return a pointer to the #i#th + * child. + */ + TriaIterator > child (const unsigned int i) const; + + /** + * Return the index of the #i#th child. + * The level of the child is one higher + * than that of the present cell. + * If the child does not exist, -1 + * is returned. + */ + int child_index (const unsigned int i) const; + + /** + * Set the child field. Since we + * only store the index of the first + * child (the others follow directly) + * only one child index is to be + * given. The level of the child is + * one level up of the level of the + * cell to which this iterator points. + */ + void set_children (const int index) const; + + /** + * Clear the child field, i.e. set + * it to a value which indicates + * that this cell has no children. + */ + void clear_children () const; + + /** + * Test whether the hex has children. + */ + bool has_children () const; + + /** + * Return the boundary indicator of this + * hex. Since boundary data is only useful + * for structures with a dimension less + * than the dimension of a cell, this + * function issues an error if #dim<4#. + * + * If the return value is 255, then this + * line is in the interior of the domain. + */ + unsigned char boundary_indicator () const; + /** + * Set the boundary indicator of this hex. + * The same applies as for the + * #boundary_indicator()# function. + * + * You should be careful with this function + * and especially never try to set the + * boundary indicator to 255, unless + * you exactly know what you are doing, + * since this value is reserved for + * another purpose and algorithms may + * not work if boundary cells have have + * this boundary indicator or if interior + * cells have boundary indicators other + * than 255. + */ + void set_boundary_indicator (unsigned char) const; + + /** + * Return whether this hex is at the + * boundary. This is checked via + * the boundary indicator field, which + * is always 255 if the hex is in the + * interior of the domain. Obviously, + * the use of this function is only + * possible for #dim>3#; + * however, for #dim==3#, a hex is + * a cell and the #CellAccessor# class + * offers another possibility to + * determine whether a cell is at the + * boundary or not. + */ + bool at_boundary () const; + + /** + * Return the diameter of the hex. + * + * The diameter of a hex is computed to + * be the largest diagonal. You + * should absolutely be clear about the + * fact that this definitely is not the + * diameter of all hexahedra; however + * it may serve as an approximation and + * is exact in many cases, especially + * if the hexahedron is not too much + * distorted. + */ + double diameter () const; + + /** + * Return the center of the hex. The + * center of a hex is defined to be + * the average of the vertices, + * which is also the point where the + * trilinear mapping places the midpoint + * of the unit hex in real space. + * However, this may not be the point + * of the barycenter of the hex. + */ + Point center () const; + + /** + * Return the barycenter of the hex. + */ + Point barycenter () const; + + /** + * Return the volume of the hex. With + * volume, we mean the area included by + * the hexahedron if its faces are + * supposed to be derived by a trilinear + * mapping from the unit cell, only using + * the location of the vertices. + * Therefore, no information + * about the boundary is used; if + * you want other than trilinearly + * mapped unit hexahedra, ask the + * appropriate finite element class + * for the volume. + */ + double measure () const; + + /** + * Compute and return the number of + * children of this hex. Actually, + * this function only counts the number + * of active children, i.e. the number + * if hexs which are not further + * refined. Thus, if all of the eight + * children of a hex are further + * refined exactly once, the returned + * number will be 64, not 80. + * + * If the present cell is not refined, + * one is returned. + */ + unsigned int number_of_children () const; + + private: + /** + * Copy operator. This is normally + * used in a context like + * #iterator a,b; *a=*b;#. Since + * the meaning is to copy the object + * pointed to by #b# to the object + * pointed to by #a# and since + * accessors are not real but + * virtual objects, this operation + * is not useful for iterators on + * triangulations. We declare this + * function here private, thus it may + * not be used from outside. + * Furthermore it is not implemented + * and will give a linker error if + * used anyway. + */ + void operator = (const HexAccessor &); + + protected: /**@name Advancement of iterators*/ /*@{*/ /** @@ -921,11 +1255,20 @@ class QuadAccessor : public TriaAccessor { */ void operator -- (); /*@}*/ + + /** + * Declare some friends. + */ + template friend class TriaRawIterator >; + template <> friend class TriaRawIterator<3,CellAccessor<3> >; }; + + + /** * Intermediate, "typedef"-class, not for public use. */ @@ -945,6 +1288,7 @@ class TriaSubstructAccessor; * \begin{verbatim} * TriaSubstructAccessor<1> := LineAccessor<1>; * TriaSubstructAccessor<2> := QuadAccessor<2>; + * TriaSubstructAccessor<3> := HexAccessor<3>; * \end{verbatim} * We do this rather complex (and needless, provided C++ the needed constructs!) * class hierarchy manipulation, since this way we can declare and implement @@ -1007,6 +1351,34 @@ class TriaSubstructAccessor<2> : public QuadAccessor<2> { +/** + * Intermediate, "typedef"-class, not for public use. + * + * @see TriaSubstructAccessor<1> + */ +template <> +class TriaSubstructAccessor<3> : public HexAccessor<3> { + public: + /** + * Constructor + */ + TriaSubstructAccessor (Triangulation<3> *tria, + const int level, + const int index, + const void *local_data) : + HexAccessor<3> (tria,level,index,local_data) {}; + + // do this here, since this way the + // CellAccessor has the possibility to know + // what a substruct_iterator is. Otherwise + // it would have to ask the DoFHandler + // which would need another big include + // file and maybe cyclic interdependence + typedef TriaIterator<3,QuadAccessor<3> > substruct_iterator; +}; + + + diff --git a/deal.II/deal.II/include/grid/tria_iterator.h b/deal.II/deal.II/include/grid/tria_iterator.h index 65dea7aae8..0dc0afe7ae 100644 --- a/deal.II/deal.II/include/grid/tria_iterator.h +++ b/deal.II/deal.II/include/grid/tria_iterator.h @@ -216,7 +216,7 @@ template class Triangulation; * @author Wolfgang Bangerth, 1998 */ template -class TriaRawIterator : public bidirectional_iterator{ +class TriaRawIterator : public bidirectional_iterator { public: /** * Declare the type of the Accessor for diff --git a/deal.II/deal.II/include/grid/tria_quad.h b/deal.II/deal.II/include/grid/tria_quad.h index 619ed67bb3..3ce7b84c0c 100644 --- a/deal.II/deal.II/include/grid/tria_quad.h +++ b/deal.II/deal.II/include/grid/tria_quad.h @@ -8,6 +8,10 @@ #include + +template class Triangulation; + + /** * #Quad#s denote the fundamental entities of triangulations in two dimensions * and the boundaries of hexaeders in three dimensions. They are diff --git a/deal.II/deal.II/include/multigrid/mg_dof_accessor.h b/deal.II/deal.II/include/multigrid/mg_dof_accessor.h index 37a6cfb5ee..0ee7b25e6b 100644 --- a/deal.II/deal.II/include/multigrid/mg_dof_accessor.h +++ b/deal.II/deal.II/include/multigrid/mg_dof_accessor.h @@ -333,6 +333,115 @@ class MGDoFQuadAccessor : public MGDoFAccessor, public DoFQuadAccessor +class MGDoFHexAccessor : public MGDoFAccessor, public DoFHexAccessor { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef MGDoFHandler AccessorData; + + /** + * Default constructor, unused thus + * not implemented. + */ + MGDoFHexAccessor (); + + /** + * Constructor. The #local_data# + * argument is assumed to be a pointer + * to a #DoFHandler# object. + */ + MGDoFHexAccessor (Triangulation *tria, + const int level, + const int index, + const AccessorData *local_data); + + /** + * Return the index of the #i#th degree + * of freedom of this hex on the level + * this quad lives on. + */ + int mg_dof_index (const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * of freedom of this hex on the + * level this hex lives on to #index#. + */ + void set_mg_dof_index (const unsigned int i, const int index) const; + + /** + * Return the index of the #i#th degree + * on the #vertex#th vertex for the level + * this hex lives on. + */ + int mg_vertex_dof_index (const unsigned int vertex, + const unsigned int i) const; + + /** + * Set the index of the #i#th degree + * on the #vertex#th vertex for the + * level this hex lives on to #index#. + */ + void set_mg_vertex_dof_index (const unsigned int vertex, + const unsigned int i, + const int index) const; + + /** + * Return the indices of the dofs of this + * hex in the standard ordering: dofs + * on vertex 0, dofs on vertex 1, etc, + * dofs on line 0, dofs on line 1, etc, + * dofs on quad 0, etc. + * + * It is assumed that the vector already + * has the right size beforehand. The + * indices refer to the local numbering + * for the level this hex lives on. + */ + void get_mg_dof_indices (vector &dof_indices) const; + + /** + * Return a pointer to the #i#th line + * bounding this #Hex#. + */ + TriaIterator > > + line (const unsigned int i) const; + + /** + * Return a pointer to the #i#th quad + * bounding this #Hex#. + */ + TriaIterator > > + quad (const unsigned int i) const; + + /** + * Return the #i#th child as a DoF quad + * iterator. This function is needed since + * the child function of the base + * class returns a hex accessor without + * access to the DoF data. + */ + TriaIterator > child (const unsigned int) const; + + /** + * Implement the copy operator needed + * for the iterator classes. + */ + void copy_from (const MGDoFHexAccessor &a); +}; + + + + /** * Intermediate, "typedef"-class, not for public use. @@ -445,6 +554,40 @@ class MGDoFSubstructAccessor<2> : public MGDoFQuadAccessor<2,CellAccessor<2> > { +/** + * Intermediate, "typedef"-class, not for public use. + * + * @see MGDoFSubstructAccessor<1> + */ +template <> +class MGDoFSubstructAccessor<3> : public MGDoFHexAccessor<3,CellAccessor<3> > { + public: + /** + * Declare the data type that this accessor + * class expects to get passed from the + * iterator classes. + */ + typedef MGDoFHexAccessor<3,CellAccessor<3> >::AccessorData AccessorData; + + /** + * Constructor + */ + MGDoFSubstructAccessor (Triangulation<3> *tria, + const int level, + const int index, + const AccessorData *local_data) : + MGDoFHexAccessor<3,CellAccessor<3> > (tria,level,index,local_data) {}; + // do this here, since this way the + // CellAccessor has the possibility to know + // what a face_iterator is. Otherwise + // it would have to ask the DoFHandler + // which would need another big include + // file and maybe cyclic interdependence + typedef TriaIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > face_iterator; +}; + + + diff --git a/deal.II/deal.II/include/multigrid/mg_dof_handler.h b/deal.II/deal.II/include/multigrid/mg_dof_handler.h index f5d5b1e958..6f80e19be7 100644 --- a/deal.II/deal.II/include/multigrid/mg_dof_handler.h +++ b/deal.II/deal.II/include/multigrid/mg_dof_handler.h @@ -47,6 +47,10 @@ class MGDoFDimensionInfo<1> { typedef void * quad_iterator; typedef void * active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_line_iterator raw_cell_iterator; typedef line_iterator cell_iterator; typedef active_line_iterator active_cell_iterator; @@ -76,6 +80,10 @@ class MGDoFDimensionInfo<2> { typedef TriaIterator<2,MGDoFCellAccessor<2> > quad_iterator; typedef TriaActiveIterator<2,MGDoFCellAccessor<2> > active_quad_iterator; + typedef void * raw_hex_iterator; + typedef void * hex_iterator; + typedef void * active_hex_iterator; + typedef raw_quad_iterator raw_cell_iterator; typedef quad_iterator cell_iterator; typedef active_quad_iterator active_cell_iterator; @@ -88,6 +96,37 @@ class MGDoFDimensionInfo<2> { +/** + * Define some types for the DoF handling in two dimensions. + * + * The types have the same meaning as those declared in \Ref{TriaDimensionInfo<2>}. + */ +class MGDoFDimensionInfo<3> { + public: + typedef TriaRawIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > raw_line_iterator; + typedef TriaIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > line_iterator; + typedef TriaActiveIterator<3,MGDoFLineAccessor<3,LineAccessor<3> > > active_line_iterator; + + typedef TriaRawIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > raw_quad_iterator; + typedef TriaIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > quad_iterator; + typedef TriaActiveIterator<3,MGDoFQuadAccessor<3,QuadAccessor<3> > > active_quad_iterator; + + typedef TriaRawIterator<3,MGDoFCellAccessor<3> > raw_hex_iterator; + typedef TriaIterator<3,MGDoFCellAccessor<3> > hex_iterator; + typedef TriaActiveIterator<3,MGDoFCellAccessor<3> > active_hex_iterator; + + typedef raw_hex_iterator raw_cell_iterator; + typedef hex_iterator cell_iterator; + typedef active_hex_iterator active_cell_iterator; + + typedef raw_quad_iterator raw_face_iterator; + typedef quad_iterator face_iterator; + typedef active_quad_iterator active_face_iterator; +}; + + + + template class MGDoFHandler : public DoFHandler { diff --git a/deal.II/deal.II/source/Makefile b/deal.II/deal.II/source/Makefile index 6f091bcf94..b4460f78ab 100644 --- a/deal.II/deal.II/source/Makefile +++ b/deal.II/deal.II/source/Makefile @@ -31,6 +31,24 @@ go-files-2d = $(addprefix ../lib/2d/go/, $(tmp1:.cc=_2d.go)) o-files-3d = $(addprefix ../lib/3d/o/, $(tmp1:.cc=_3d.o) ) go-files-3d = $(addprefix ../lib/3d/go/, $(tmp1:.cc=_3d.go)) + + + + +default: 2d +all: 1d 2d 3d + +1d: ../lib/libdeal_II_1d.g.a ../lib/libdeal_II_1d.a + +2d: ../lib/libdeal_II_2d.g.a ../lib/libdeal_II_2d.a + +3d: ../lib/libdeal_II_3d.g.a ../lib/libdeal_II_3d.a + + + +# rules how to generate object files from source files. note that +# there are some files which needs exceptional rules; these are +# listed immediately below ../lib/1d/go/%.go : @echo ==============1d======debug============= $< @$(CXX) $(CXXFLAGS.g) -Ddeal_II_dimension=1 -c $< -o $@ @@ -52,19 +70,13 @@ go-files-3d = $(addprefix ../lib/3d/go/, $(tmp1:.cc=_3d.go)) @echo ==============3d======optimized========= $< @$(CXX) $(CXXFLAGS) -Ddeal_II_dimension=3 -c $< -o $@ +# special rules for exceptional files +../lib/3d/o/fe_linear_mapping.jacobians_3d.o: + @echo "==============3d======opt==(special)====" $< + @$(CXX) $(filter-out -O2 -Wuninitialized,$(CXXFLAGS)) -Ddeal_II_dimension=3 -c $< -o $@ -default: 2d -all: 1d 2d 3d - -1d: ../lib/libdeal_II_1d.g.a ../lib/libdeal_II_1d.a - -2d: ../lib/libdeal_II_2d.g.a ../lib/libdeal_II_2d.a - -3d: ../lib/libdeal_II_3d.g.a ../lib/libdeal_II_3d.a - - ../lib/libdeal_II_1d.g.a: $(go-files-1d) @echo ======================================== Updating library: $@ diff --git a/deal.II/deal.II/source/dofs/dof_accessor.cc b/deal.II/deal.II/source/dofs/dof_accessor.cc index c55ffbac34..8de719c16a 100644 --- a/deal.II/deal.II/source/dofs/dof_accessor.cc +++ b/deal.II/deal.II/source/dofs/dof_accessor.cc @@ -390,6 +390,226 @@ void DoFQuadAccessor::copy_from (const DoFQuadAccessor +inline +int DoFHexAccessor::dof_index (const unsigned int i) const { + Assert (dof_handler != 0, ExcInvalidObject()); + // make sure a FE has been selected + // and enough room was reserved + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (iselected_fe->dofs_per_hex, + ExcInvalidIndex (i, 0, dof_handler->selected_fe->dofs_per_hex)); + + return dof_handler->levels[present_level] + ->hex_dofs[present_index*dof_handler->selected_fe->dofs_per_hex+i]; +}; + + + +template +void DoFHexAccessor::set_dof_index (const unsigned int i, + const int index) const { + Assert (dof_handler != 0, ExcInvalidObject()); + // make sure a FE has been selected + // and enough room was reserved + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (iselected_fe->dofs_per_hex, + ExcInvalidIndex (i, 0, dof_handler->selected_fe->dofs_per_hex)); + + dof_handler->levels[present_level] + ->hex_dofs[present_index*dof_handler->selected_fe->dofs_per_hex+i] = index; +}; + + + +template +inline +int DoFHexAccessor::vertex_dof_index (const unsigned int vertex, + const unsigned int i) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (vertex<8, ExcInvalidIndex (i,0,8)); + Assert (iselected_fe->dofs_per_vertex, + ExcInvalidIndex (i, 0, dof_handler->selected_fe->dofs_per_vertex)); + + const unsigned int dof_number = (vertex_index(vertex) * + dof_handler->selected_fe->dofs_per_vertex + + i); + return dof_handler->vertex_dofs[dof_number]; +}; + + + +template +void DoFHexAccessor::set_vertex_dof_index (const unsigned int vertex, + const unsigned int i, + const int index) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (vertex<8, ExcInvalidIndex (i,0,8)); + Assert (iselected_fe->dofs_per_vertex, + ExcInvalidIndex (i, 0, dof_handler->selected_fe->dofs_per_vertex)); + + const unsigned int dof_number = (vertex_index(vertex) * + dof_handler->selected_fe->dofs_per_vertex + + i); + dof_handler->vertex_dofs[dof_number] = index; +}; + + + +template +void +DoFHexAccessor::get_dof_indices (vector &dof_indices) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (dof_indices.size() == (8*dof_handler->get_fe().dofs_per_vertex + + 12*dof_handler->get_fe().dofs_per_line + + 6*dof_handler->get_fe().dofs_per_quad + + dof_handler->get_fe().dofs_per_hex), + ExcVectorDoesNotMatch()); + + const unsigned int dofs_per_vertex = dof_handler->get_fe().dofs_per_vertex, + dofs_per_line = dof_handler->get_fe().dofs_per_line, + dofs_per_quad = dof_handler->get_fe().dofs_per_quad, + dofs_per_hex = dof_handler->get_fe().dofs_per_hex; + vector::iterator next = dof_indices.begin(); + for (unsigned int vertex=0; vertex<8; ++vertex) + for (unsigned int d=0; dline(line)->dof_index(d); + for (unsigned int quad=0; quad<6; ++quad) + for (unsigned int d=0; dquad(quad)->dof_index(d); + for (unsigned int d=0; d +TriaIterator > > +DoFHexAccessor::line (const unsigned int i) const { + TriaIterator > l = BaseClass::line(i); + return TriaIterator > > + ( + tria, + present_level, + l->index(), + dof_handler + ); +}; + + + +template +TriaIterator > > +DoFHexAccessor::quad (const unsigned int i) const { + Assert (i<6, ExcInvalidIndex (i, 0, 6)); + + return TriaIterator > > + ( + tria, + present_level, + quad_index (i), + dof_handler + ); +}; + + + +template +TriaIterator > +DoFHexAccessor::child (const unsigned int i) const { + TriaIterator > q (tria, + present_level+1, + child_index (i), + dof_handler); + +#ifdef DEBUG + if (q.state() != past_the_end) + Assert (q->used(), typename TriaAccessor::ExcUnusedCellAsChild()); +#endif + return q; +}; + + + +template +void DoFHexAccessor:: +distribute_local_to_global (const dVector &local_source, + dVector &global_destination) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (local_source.size() == (8*dof_handler->get_fe().dofs_per_vertex + + 12*dof_handler->get_fe().dofs_per_line + + 6*dof_handler->get_fe().dofs_per_quad + + dof_handler->get_fe().dofs_per_hex), + ExcVectorDoesNotMatch()); + Assert (dof_handler->n_dofs() == global_destination.size(), + ExcVectorDoesNotMatch()); + + const unsigned int n_dofs = local_source.size(); + + // get indices of dofs + vector dofs (n_dofs); + get_dof_indices (dofs); + + // distribute cell vector + for (unsigned int j=0; j +void DoFHexAccessor:: +distribute_local_to_global (const dFMatrix &local_source, + dSMatrix &global_destination) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (dof_handler->selected_fe != 0, ExcInvalidObject()); + Assert (local_source.m() == (8*dof_handler->get_fe().dofs_per_vertex + + 12*dof_handler->get_fe().dofs_per_line + + 6*dof_handler->get_fe().dofs_per_quad + + dof_handler->get_fe().dofs_per_hex), + ExcMatrixDoesNotMatch()); + Assert (local_source.m() == local_source.n(), + ExcMatrixDoesNotMatch()); + Assert (dof_handler->n_dofs() == global_destination.m(), + ExcMatrixDoesNotMatch()); + Assert (global_destination.m() == global_destination.n(), + ExcMatrixDoesNotMatch()); + + const unsigned int n_dofs = local_source.m(); + + // get indices of dofs + vector dofs (n_dofs); + get_dof_indices (dofs); + + // distribute cell matrix + for (unsigned int i=0; i +void DoFHexAccessor::copy_from (const DoFHexAccessor &a) { + BaseClass::copy_from (a); + set_dof_handler (a.dof_handler); +}; + + + + + + /*------------------------- Functions: DoFCellAccessor -----------------------*/ @@ -560,6 +780,84 @@ DoFCellAccessor<2>::set_dof_values (const dVector &local_values, +#if deal_II_dimension == 3 + +template <> +DoFSubstructAccessor<3>::face_iterator +DoFCellAccessor<3>::face (const unsigned int i) const { + return quad(i); +}; + + + +template <> +void +DoFCellAccessor<3>::get_dof_values (const dVector &values, + dVector &local_values) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (&dof_handler->get_fe() != 0, ExcInvalidObject()); + Assert (local_values.size() == dof_handler->get_fe().total_dofs, + ExcVectorDoesNotMatch()); + Assert (values.size() == dof_handler->n_dofs(), + ExcVectorDoesNotMatch()); + Assert (active(), ExcNotActive()); + + const unsigned int dofs_per_vertex = dof_handler->get_fe().dofs_per_vertex, + dofs_per_line = dof_handler->get_fe().dofs_per_line, + dofs_per_quad = dof_handler->get_fe().dofs_per_quad, + dofs_per_hex = dof_handler->get_fe().dofs_per_hex; + vector::iterator next_local_value=local_values.begin(); + for (unsigned int vertex=0; vertex<8; ++vertex) + for (unsigned int d=0; dline(line)->dof_index(d)); + for (unsigned int quad=0; quad<6; ++quad) + for (unsigned int d=0; dquad(quad)->dof_index(d)); + for (unsigned int d=0; d +void +DoFCellAccessor<3>::set_dof_values (const dVector &local_values, + dVector &values) const { + Assert (dof_handler != 0, ExcInvalidObject()); + Assert (&dof_handler->get_fe() != 0, ExcInvalidObject()); + Assert (local_values.size() == dof_handler->get_fe().total_dofs, + ExcVectorDoesNotMatch()); + Assert (values.size() == dof_handler->n_dofs(), + ExcVectorDoesNotMatch()); + Assert (active(), ExcNotActive()); + + const unsigned int dofs_per_vertex = dof_handler->get_fe().dofs_per_vertex, + dofs_per_line = dof_handler->get_fe().dofs_per_line, + dofs_per_quad = dof_handler->get_fe().dofs_per_quad, + dofs_per_hex = dof_handler->get_fe().dofs_per_hex; + vector::const_iterator next_local_value=local_values.begin(); + for (unsigned int vertex=0; vertex<8; ++vertex) + for (unsigned int d=0; dline(line)->dof_index(d)) = *next_local_value++; + for (unsigned int quad=0; quad<6; ++quad) + for (unsigned int d=0; dquad(quad)->dof_index(d)) = *next_local_value++; + for (unsigned int d=0; d void @@ -679,3 +977,24 @@ template class TriaActiveIterator<2,DoFCellAccessor<2> >; #endif + +#if deal_II_dimension == 3 +template class DoFLineAccessor<3,LineAccessor<3> >; +template class DoFQuadAccessor<3,QuadAccessor<3> >; +template class DoFHexAccessor<3,HexAccessor<3> >; +template class DoFHexAccessor<3,CellAccessor<3> >; +template class DoFCellAccessor<3>; + +template class TriaRawIterator<3,DoFLineAccessor<3,LineAccessor<3> > >; +template class TriaRawIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > >; +template class TriaRawIterator<3,DoFHexAccessor<3,HexAccessor<3> > >; +template class TriaRawIterator<3,DoFCellAccessor<3> >; +template class TriaIterator<3,DoFLineAccessor<3,LineAccessor<3> > >; +template class TriaIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > >; +template class TriaIterator<3,DoFCellAccessor<3> >; +template class TriaActiveIterator<3,DoFLineAccessor<3,LineAccessor<3> > >; +template class TriaActiveIterator<3,DoFQuadAccessor<3,QuadAccessor<3> > >; +template class TriaActiveIterator<3,DoFCellAccessor<3> >; +#endif + + diff --git a/deal.II/deal.II/source/dofs/dof_constraints.cc b/deal.II/deal.II/source/dofs/dof_constraints.cc index 1a7ec28737..396b7ad1cf 100644 --- a/deal.II/deal.II/source/dofs/dof_constraints.cc +++ b/deal.II/deal.II/source/dofs/dof_constraints.cc @@ -236,55 +236,61 @@ void ConstraintMatrix::condense (dSMatrixStruct &sparsity) const { int n_rows = sparsity.n_rows(); for (int row=0; row(c); int n_rows = sparsity.n_rows(); - for (int row=0; row::last_active_quad () const { return 0; }; + + +template <> +DoFHandler<1>::raw_hex_iterator +DoFHandler<1>::begin_raw_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::hex_iterator +DoFHandler<1>::begin_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::active_hex_iterator +DoFHandler<1>::begin_active_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::raw_hex_iterator +DoFHandler<1>::end_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::raw_hex_iterator +DoFHandler<1>::last_raw_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::raw_hex_iterator +DoFHandler<1>::last_raw_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::hex_iterator +DoFHandler<1>::last_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::hex_iterator +DoFHandler<1>::last_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::active_hex_iterator +DoFHandler<1>::last_active_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<1>::active_hex_iterator +DoFHandler<1>::last_active_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + #endif @@ -463,11 +553,272 @@ DoFHandler<2>::last_active_face (const unsigned int level) const { return last_active_line (level); }; + + +template <> +DoFHandler<2>::raw_hex_iterator +DoFHandler<2>::begin_raw_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::hex_iterator +DoFHandler<2>::begin_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::active_hex_iterator +DoFHandler<2>::begin_active_hex (unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::raw_hex_iterator +DoFHandler<2>::end_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::raw_hex_iterator +DoFHandler<2>::last_raw_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::raw_hex_iterator +DoFHandler<2>::last_raw_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::hex_iterator +DoFHandler<2>::last_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::hex_iterator +DoFHandler<2>::last_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::active_hex_iterator +DoFHandler<2>::last_active_hex (const unsigned int) const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +DoFHandler<2>::active_hex_iterator +DoFHandler<2>::last_active_hex () const { + Assert (false, ExcNotImplemented()); + return 0; +}; + + #endif + +#if deal_II_dimension == 3 + +template <> +DoFHandler<3>::raw_cell_iterator +DoFHandler<3>::begin_raw (const unsigned int level) const { + return begin_raw_hex (level); +}; + + + +template <> +DoFHandler<3>::cell_iterator +DoFHandler<3>::begin (const unsigned int level) const { + return begin_hex (level); +}; + + + +template <> +DoFHandler<3>::active_cell_iterator +DoFHandler<3>::begin_active (const unsigned int level) const { + return begin_active_hex (level); +}; + + + +template <> +DoFHandler<3>::raw_cell_iterator +DoFHandler<3>::end () const { + return end_hex (); +}; + + + +template <> +DoFHandler<3>::raw_cell_iterator +DoFHandler<3>::last_raw () const { + return last_raw_hex (); +}; + + + +template <> +DoFHandler<3>::raw_cell_iterator +DoFHandler<3>::last_raw (const unsigned int level) const { + return last_raw_hex (level); +}; + + + +template <> +DoFHandler<3>::cell_iterator +DoFHandler<3>::last () const { + return last_hex (); +}; + + + +template <> +DoFHandler<3>::cell_iterator +DoFHandler<3>::last (const unsigned int level) const { + return last_hex (level); +}; + + + +template <> +DoFHandler<3>::active_cell_iterator +DoFHandler<3>::last_active () const { + return last_active_hex (); +}; + + + +template <> +DoFHandler<3>::active_cell_iterator +DoFHandler<3>::last_active (const unsigned int level) const { + return last_active_hex (level); +}; + + + + + + + +template <> +DoFHandler<3>::raw_face_iterator +DoFHandler<3>::begin_raw_face (const unsigned int level) const { + return begin_raw_quad (level); +}; + + + +template <> +DoFHandler<3>::face_iterator +DoFHandler<3>::begin_face (const unsigned int level) const { + return begin_quad (level); +}; + + + +template <> +DoFHandler<3>::active_face_iterator +DoFHandler<3>::begin_active_face (const unsigned int level) const { + return begin_active_quad (level); +}; + + + +template <> +DoFHandler<3>::raw_face_iterator +DoFHandler<3>::end_face () const { + return end_quad (); +}; + + + +template <> +DoFHandler<3>::raw_face_iterator +DoFHandler<3>::last_raw_face () const { + return last_raw_quad (); +}; + + + +template <> +DoFHandler<3>::raw_face_iterator +DoFHandler<3>::last_raw_face (const unsigned int level) const { + return last_raw_quad (level); +}; + + + +template <> +DoFHandler<3>::face_iterator +DoFHandler<3>::last_face () const { + return last_quad (); +}; + + + +template <> +DoFHandler<3>::face_iterator +DoFHandler<3>::last_face (const unsigned int level) const { + return last_quad (level); +}; + + + +template <> +DoFHandler<3>::active_face_iterator +DoFHandler<3>::last_active_face () const { + return last_active_quad (); +}; + + + +template <> +DoFHandler<3>::active_face_iterator +DoFHandler<3>::last_active_face (const unsigned int level) const { + return last_active_quad (level); +}; + + +#endif + + + template typename DoFHandler::raw_line_iterator DoFHandler::begin_raw_line (const unsigned int level) const { @@ -534,6 +885,40 @@ DoFHandler::begin_active_quad (const unsigned int level) const { + +template +typename DoFHandler::raw_hex_iterator +DoFHandler::begin_raw_hex (const unsigned int level) const { + return raw_hex_iterator (tria, + tria->begin_raw_hex(level)->level(), + tria->begin_raw_hex(level)->index(), + this); +}; + + + +template +typename DoFHandler::hex_iterator +DoFHandler::begin_hex (const unsigned int level) const { + return hex_iterator (tria, + tria->begin_hex(level)->level(), + tria->begin_hex(level)->index(), + this); +}; + + + +template +typename DoFHandler::active_hex_iterator +DoFHandler::begin_active_hex (const unsigned int level) const { + return active_hex_iterator (tria, + tria->begin_active_hex(level)->level(), + tria->begin_active_hex(level)->index(), + this); +}; + + + template typename DoFHandler::raw_line_iterator DoFHandler::end_line () const { @@ -550,6 +935,14 @@ DoFHandler::end_quad () const { +template +typename DoFHandler::raw_hex_iterator +DoFHandler::end_hex () const { + return raw_hex_iterator (tria, -1, -1, this); +}; + + + template typename DoFDimensionInfo::raw_cell_iterator DoFHandler::end_raw (const unsigned int level) const { @@ -671,6 +1064,36 @@ DoFHandler::end_active_quad (const unsigned int level) const { +template +typename DoFDimensionInfo::raw_hex_iterator +DoFHandler::end_raw_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + end_hex() : + begin_raw_hex (level+1)); +}; + + + +template +typename DoFDimensionInfo::hex_iterator +DoFHandler::end_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + hex_iterator(end_hex()) : + begin_hex (level+1)); +}; + + + +template +typename DoFDimensionInfo::active_hex_iterator +DoFHandler::end_active_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + active_hex_iterator(end_hex()) : + begin_active_hex (level+1)); +}; + + + template typename DoFHandler::raw_line_iterator DoFHandler::last_raw_line (const unsigned int level) const { @@ -717,29 +1140,63 @@ DoFHandler::last_raw_quad (const unsigned int level) const { template -typename DoFHandler::quad_iterator -DoFHandler::last_quad (const unsigned int level) const { - return quad_iterator (tria, - tria->last_quad(level)->level(), - tria->last_quad(level)->index(), - this); +typename DoFHandler::quad_iterator +DoFHandler::last_quad (const unsigned int level) const { + return quad_iterator (tria, + tria->last_quad(level)->level(), + tria->last_quad(level)->index(), + this); +}; + + + + +template +typename DoFHandler::active_quad_iterator +DoFHandler::last_active_quad (const unsigned int level) const { + return active_quad_iterator (tria, + tria->last_active_quad(level)->level(), + tria->last_active_quad(level)->index(), + this); +}; + + + +template +typename DoFHandler::raw_hex_iterator +DoFHandler::last_raw_hex (const unsigned int level) const { + return raw_hex_iterator (tria, + tria->last_raw_hex(level)->level(), + tria->last_raw_hex(level)->index(), + this); +}; + + + + +template +typename DoFHandler::hex_iterator +DoFHandler::last_hex (const unsigned int level) const { + return hex_iterator (tria, + tria->last_hex(level)->level(), + tria->last_hex(level)->index(), + this); }; template -typename DoFHandler::active_quad_iterator -DoFHandler::last_active_quad (const unsigned int level) const { - return active_quad_iterator (tria, - tria->last_active_quad(level)->level(), - tria->last_active_quad(level)->index(), - this); +typename DoFHandler::active_hex_iterator +DoFHandler::last_active_hex (const unsigned int level) const { + return active_hex_iterator (tria, + tria->last_active_hex(level)->level(), + tria->last_active_hex(level)->index(), + this); }; - template typename DoFHandler::raw_line_iterator DoFHandler::last_raw_line () const { @@ -756,6 +1213,14 @@ DoFHandler::last_raw_quad () const { +template +typename DoFHandler::raw_hex_iterator +DoFHandler::last_raw_hex () const { + return last_raw_hex (levels.size()-1); +}; + + + template typename DoFHandler::line_iterator DoFHandler::last_line () const { @@ -772,6 +1237,14 @@ DoFHandler::last_quad () const { +template +typename DoFHandler::hex_iterator +DoFHandler::last_hex () const { + return last_hex (levels.size()-1); +}; + + + template typename DoFHandler::active_line_iterator DoFHandler::last_active_line () const { @@ -780,7 +1253,6 @@ DoFHandler::last_active_line () const { - template typename DoFHandler::active_quad_iterator DoFHandler::last_active_quad () const { @@ -789,6 +1261,14 @@ DoFHandler::last_active_quad () const { +template +typename DoFHandler::active_hex_iterator +DoFHandler::last_active_hex () const { + return last_active_hex (levels.size()-1); +}; + + + @@ -1022,6 +1502,68 @@ unsigned int DoFHandler<2>::distribute_dofs_on_cell (active_cell_iterator &cell, +#if deal_II_dimension == 3 + +template <> +unsigned int DoFHandler<3>::distribute_dofs_on_cell (active_cell_iterator &cell, + unsigned int next_free_dof) { + if (selected_fe->dofs_per_vertex > 0) + // number dofs on vertices + for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) + // check whether dofs for this + // vertex have been distributed + // (only check the first dof) + if (cell->vertex_dof_index(vertex, 0) == -1) + for (unsigned int d=0; ddofs_per_vertex; ++d) + cell->set_vertex_dof_index (vertex, d, next_free_dof++); + + // for the lines + if (selected_fe->dofs_per_line > 0) + for (unsigned int l=0; l::lines_per_cell; ++l) + { + line_iterator line = cell->line(l); + + // distribute dofs if necessary: + // check whether line dof is already + // numbered (check only first dof) + if (line->dof_index(0) == -1) + // if not: distribute dofs + for (unsigned int d=0; ddofs_per_line; ++d) + line->set_dof_index (d, next_free_dof++); + }; + + // for the quads + if (selected_fe->dofs_per_quad > 0) + for (unsigned int q=0; q::quads_per_cell; ++q) + { + quad_iterator quad = cell->quad(q); + + // distribute dofs if necessary: + // check whether quad dof is already + // numbered (check only first dof) + if (quad->dof_index(0) == -1) + // if not: distribute dofs + for (unsigned int d=0; ddofs_per_quad; ++d) + quad->set_dof_index (d, next_free_dof++); + }; + + + // dofs of hex + if (selected_fe->dofs_per_hex > 0) + for (unsigned int d=0; ddofs_per_hex; ++d) + cell->set_dof_index (d, next_free_dof++); + + + // note that this cell has been processed + cell->set_user_flag (); + + return next_free_dof; +}; + +#endif + + + template void DoFHandler::renumber_dofs (const RenumberingMethod method, const bool use_constraints, @@ -1037,17 +1579,10 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, constraints.condense (sparsity); }; - int total_dofs = sparsity.n_rows(); + int n_dofs = sparsity.n_rows(); // store the new dof numbers; -1 means // that no new number was chosen yet - // - // the commented line is what would be the - // correct way to do, but gcc2.8 chokes - // over that. The other lines are a - // workaround -// vector new_number(sparsity.n_rows(), -1); - vector new_number; - new_number.resize (sparsity.n_rows(), -1); + vector new_number(sparsity.n_rows(), -1); // store the indices of the dofs renumbered // in the last round. Default to starting @@ -1056,7 +1591,7 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, // delete disallowed elements for (unsigned int i=0; i=total_dofs)) + if ((last_round_dofs[i]<0) || (last_round_dofs[i]>=n_dofs)) last_round_dofs[i] = -1; remove_if (last_round_dofs.begin(), last_round_dofs.end(), @@ -1069,8 +1604,8 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, if (last_round_dofs.size() == 0) { int starting_point = -1; - unsigned int min_coordination = total_dofs; - for (int row=0; row::renumber_dofs (const RenumberingMethod method, // test for all indices numbered if (find (new_number.begin(), new_number.end(), -1) != new_number.end()) Assert (false, ExcRenumberingIncomplete()); - Assert (next_free_number == total_dofs, + Assert (next_free_number == n_dofs, ExcRenumberingIncomplete()); #endif @@ -1190,7 +1725,7 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, case reverse_Cuthill_McKee: { for (vector::iterator i=new_number.begin(); i!=new_number.end(); ++i) - *i = total_dofs-*i; + *i = n_dofs-*i; break; }; default: @@ -1305,6 +1840,64 @@ void DoFHandler<2>::renumber_dofs (const vector &new_numbers) { #endif +#if deal_II_dimension == 3 + +template <> +void DoFHandler<3>::renumber_dofs (const vector &new_numbers) { + Assert (new_numbers.size() == n_dofs(), ExcRenumberingIncomplete()); +#ifdef DEBUG + // assert that the new indices are + // consecutively numbered + if (true) + { + vector tmp(new_numbers); + sort (tmp.begin(), tmp.end()); + vector::const_iterator p = tmp.begin(); + int i = 0; + for (; p!=tmp.end(); ++p, ++i) + Assert (*p == i, ExcNewNumbersNotConsecutive(i)); + }; +#endif + + // note that we can not use cell iterators + // in this function since then we would + // renumber the dofs on the interface of + // two cells more than once. Anyway, this + // way it's not only more correct but also + // faster; note, however, that dof numbers + // may be -1, namely when the appropriate + // vertex/line/etc is unused + for (vector::iterator i=vertex_dofs.begin(); i!=vertex_dofs.end(); ++i) + if (*i != -1) + *i = new_numbers[*i]; + else + // if index is -1: check if this one + // really is unused + Assert (tria->vertices_used[(i-vertex_dofs.begin()) / + selected_fe->dofs_per_vertex] == false, + ExcInternalError ()); + + for (unsigned int level=0; level::iterator i=levels[level]->line_dofs.begin(); + i!=levels[level]->line_dofs.end(); ++i) + if (*i != -1) + *i = new_numbers[*i]; + for (vector::iterator i=levels[level]->quad_dofs.begin(); + i!=levels[level]->quad_dofs.end(); ++i) + if (*i != -1) + *i = new_numbers[*i]; + for (vector::iterator i=levels[level]->hex_dofs.begin(); + i!=levels[level]->hex_dofs.end(); ++i) + if (*i != -1) + *i = new_numbers[*i]; + }; +}; + +#endif + + + #if deal_II_dimension == 1 template <> @@ -1409,6 +2002,163 @@ void DoFHandler<2>::make_constraint_matrix (ConstraintMatrix &constraints) const +#if deal_II_dimension == 3 + +template <> +void DoFHandler<3>::make_constraint_matrix (ConstraintMatrix &constraints) const { + const unsigned int dim = 3; + + constraints.clear (); + + // first mark all faces which are subject + // to constraints. We do so by looping + // over all active cells and checking + // whether any of the faces are refined + // which can only be from the neighboring + // cell because this one is active. In that + // case, the face is subject to constraints + tria->clear_user_flags (); + Triangulation::active_cell_iterator cell = tria->begin_active(), + endc = tria->end(); + for (; cell!=endc; ++cell) + for (unsigned int face=0; face::faces_per_cell; ++face) + if (cell->face(face)->has_children()) + cell->face(face)->set_user_flag(); + + + + + face_iterator face = begin_face(), + endf = end_face(); + // loop over all faces; only on faces + // there can be constraints. + for (; face != endf; ++face) + // if dofs on this line are subject + // to constraints + if (face->user_flag_set() == true) + { + // reserve space to gather + // the dof numbers. We could + // get them when we need them, + // but it seems easier to gather + // them only once. + vector dofs_on_mother; + vector dofs_on_children; + dofs_on_mother.reserve (4*selected_fe->dofs_per_vertex+ + 4*selected_fe->dofs_per_line+ + selected_fe->dofs_per_quad); + dofs_on_children.reserve (5*selected_fe->dofs_per_vertex+ + 12*selected_fe->dofs_per_line+ + 4*selected_fe->dofs_per_quad); + + Assert(4*selected_fe->dofs_per_vertex+ + 4*selected_fe->dofs_per_line+ + selected_fe->dofs_per_quad + == + selected_fe->constraints().n(), + ExcDifferentDimensions(4*selected_fe->dofs_per_vertex+ + 4*selected_fe->dofs_per_line+ + selected_fe->dofs_per_quad, + selected_fe->constraints().n())); + Assert(5*selected_fe->dofs_per_vertex+ + 12*selected_fe->dofs_per_line+ + 4*selected_fe->dofs_per_quad + == + selected_fe->constraints().m(), + ExcDifferentDimensions(5*selected_fe->dofs_per_vertex+ + 12*selected_fe->dofs_per_line+ + 4*selected_fe->dofs_per_quad, + selected_fe->constraints().m())); + + // fill the dofs indices. Use same + // enumeration scheme as in + // #FiniteElement::constraints()# + for (unsigned int vertex=0; vertex<4; ++vertex) + for (unsigned int dof=0; dof!=selected_fe->dofs_per_vertex; ++dof) + dofs_on_mother.push_back (face->vertex_dof_index(vertex,dof)); + for (unsigned int line=0; line<4; ++line) + for (unsigned int dof=0; dof!=selected_fe->dofs_per_line; ++dof) + dofs_on_mother.push_back (face->line(line)->dof_index(dof)); + for (unsigned int dof=0; dof!=selected_fe->dofs_per_quad; ++dof) + dofs_on_mother.push_back (face->dof_index(dof)); + + // dof numbers on vertex at the center + // of the face, which is vertex 2 of + // child zero, or vertex 3 of child 1 + // or vertex 0 of child 2 or vertex 1 + // of child 3. We're a bit cautious and + // check this (also an additional safety + // check for the internal states of the + // library) + Assert ((face->child(0)->vertex_dof_index(2,0) == + face->child(1)->vertex_dof_index(3,0)) && + (face->child(0)->vertex_dof_index(2,0) == + face->child(2)->vertex_dof_index(0,0)) && + (face->child(0)->vertex_dof_index(2,0) == + face->child(3)->vertex_dof_index(1,0)), + ExcInternalError()); + for (unsigned int dof=0; dof!=selected_fe->dofs_per_vertex; ++dof) + dofs_on_children.push_back (face->child(0)->vertex_dof_index(2,dof)); + + // dof numbers on the centers of + // the lines bounding this face + for (unsigned int line=0; line<4; ++line) + for (unsigned int dof=0; dof!=selected_fe->dofs_per_vertex; ++dof) + dofs_on_children.push_back (face->line(line)->child(0)->vertex_dof_index(1,dof)); + + // next the dofs on the lines interior + // to the face; the order of these + // lines is laid down in the + // FiniteElement class documentation + for (unsigned int dof=0; dofdofs_per_line; ++dof) + dofs_on_children.push_back (face->child(0)->line(1)->dof_index(dof)); + for (unsigned int dof=0; dofdofs_per_line; ++dof) + dofs_on_children.push_back (face->child(1)->line(2)->dof_index(dof)); + for (unsigned int dof=0; dofdofs_per_line; ++dof) + dofs_on_children.push_back (face->child(2)->line(3)->dof_index(dof)); + for (unsigned int dof=0; dofdofs_per_line; ++dof) + dofs_on_children.push_back (face->child(3)->line(0)->dof_index(dof)); + + // dofs on the bordering lines + for (unsigned int line=0; line<4; ++line) + for (unsigned int child=0; child<2; ++child) + for (unsigned int dof=0; dof!=selected_fe->dofs_per_line; ++dof) + dofs_on_children.push_back (face->line(line)->child(child)->dof_index(dof)); + + // finally, for the dofs interior + // to the four child faces + for (unsigned int child=0; child<4; ++child) + for (unsigned int dof=0; dof!=selected_fe->dofs_per_quad; ++dof) + dofs_on_children.push_back (face->child(child)->dof_index(dof)); + + Assert (dofs_on_children.size() == + selected_fe->constraints().m(), + ExcDifferentDimensions(dofs_on_children.size(), + selected_fe->constraints().m())); + Assert (dofs_on_mother.size() == + selected_fe->constraints().n(), + ExcDifferentDimensions(dofs_on_mother.size(), + selected_fe->constraints().n())); + + // for each row in the constraint + // matrix for this line: + for (unsigned int row=0; row!=dofs_on_children.size(); ++row) + { + constraints.add_line (dofs_on_children[row]); + for (unsigned int i=0; i!=dofs_on_mother.size(); ++i) + constraints.add_entry (dofs_on_children[row], + dofs_on_mother[i], + selected_fe->constraints()(row,i)); + }; + }; + + constraints.close (); +}; + +#endif + + + template void DoFHandler::make_sparsity_pattern (dSMatrixStruct &sparsity) const { Assert (selected_fe != 0, ExcNoFESelected()); @@ -1880,6 +2630,60 @@ unsigned int DoFHandler<2>::max_transfer_entries (const unsigned int max_level_d #endif +#if deal_II_dimension == 3 + +template <> +unsigned int DoFHandler<3>::max_couplings_between_dofs () const { + Assert (selected_fe != 0, ExcNoFESelected()); + + // doing the same thing here is a rather + // complicated thing, compared to the 2d + // case, since it is hard to draw pictures + // with several refined hexahedra :-) so I + // presently only give a coarse estimate + // for the case that at most 8 hexes meet + // at each vertex + // + // can anyone give better estimate here? + const unsigned int max_adjacent_cells = tria->max_adjacent_cells(); + + if (max_adjacent_cells <= 8) + return (7*7*7*selected_fe->dofs_per_vertex + + 7*6*7*3*selected_fe->dofs_per_line + + 9*4*7*3*selected_fe->dofs_per_quad + + 27*selected_fe->dofs_per_hex); + + + Assert (false, ExcNotImplemented()); + return 0; +}; + + + +template <> +unsigned int DoFHandler<3>::max_couplings_between_boundary_dofs () const { + Assert (selected_fe != 0, ExcNoFESelected()); + // we need to take refinement of + // one boundary face into consideration + // here; in fact, this function returns + // what #max_coupling_between_dofs<2> + // returns + // + // we assume here, that only four faces + // meet at the boundary; this assumption + // is not justified and needs to be + // fixed some time. fortunately, ommitting + // it for now does no harm since the + // matrix will cry foul if its requirements + // are not satisfied + return (19*selected_fe->dofs_per_vertex + + 28*selected_fe->dofs_per_line + + 8*selected_fe->dofs_per_quad); +}; + + + +#endif @@ -2075,6 +2879,41 @@ void DoFHandler<2>::reserve_space () { #endif +#if deal_II_dimension == 3 + +template <> +void DoFHandler<3>::reserve_space () { + Assert (selected_fe != 0, ExcNoFESelected()); + Assert (tria->n_levels() > 0, ExcInvalidTriangulation()); + + // delete all levels and set them up + // newly, since vectors are + // troublesome if you want to change + // their size + clear_space (); + + vertex_dofs = vector(tria->vertices.size()* + selected_fe->dofs_per_vertex, + -1); + for (unsigned int i=0; in_levels(); ++i) + { + levels.push_back (new DoFLevel<3>); + + levels.back()->line_dofs = vector (tria->levels[i]->lines.lines.size() * + selected_fe->dofs_per_line, + -1); + levels.back()->quad_dofs = vector (tria->levels[i]->quads.quads.size() * + selected_fe->dofs_per_quad, + -1); + levels.back()->hex_dofs = vector (tria->levels[i]->hexes.hexes.size() * + selected_fe->dofs_per_hex, + -1); + }; +}; + +#endif + + template void DoFHandler::clear_space () { for (unsigned int i=0; i::FiniteElementData (const unsigned int dofs_per_vertex, Assert(dim==3, ExcDimensionMismatch(3,dim)); }; + + template FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, @@ -70,6 +72,8 @@ FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, Assert(dim==2, ExcDimensionMismatch(2,dim)); }; + + template FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, @@ -106,7 +110,7 @@ FiniteElementData::FiniteElementData (const unsigned int dofs_per_vertex, template -bool FiniteElementData::operator== (const FiniteElementData<2> &f) const +bool FiniteElementData::operator== (const FiniteElementData &f) const { return ((dofs_per_vertex == f.dofs_per_vertex) && (dofs_per_line == f.dofs_per_line) && @@ -137,6 +141,10 @@ FiniteElementBase<1>::FiniteElementBase (const FiniteElementData<1> &fe_data) : interface_constraints.reinit (1,1); interface_constraints(0,0)=1.; + // this is the default way, if there is only + // one component; if there are several, then + // the constructor of the derived class needs + // to fill these arrays for (unsigned int j=0 ; j(0,j); @@ -162,7 +170,44 @@ FiniteElementBase<2>::FiniteElementBase (const FiniteElementData<2> &fe_data) : prolongation[i].reinit (total_dofs, total_dofs); }; interface_constraints.reinit (dofs_per_vertex+2*dofs_per_line, - 2*dofs_per_vertex+dofs_per_line); + dofs_per_face); + + // this is the default way, if there is only + // one component; if there are several, then + // the constructor of the derived class needs + // to fill these arrays + for (unsigned int j=0 ; j(0,j); + component_to_system_table[0][j] = j; + } +}; + +#endif + + + +#if deal_II_dimension == 3 + +template <> +FiniteElementBase<3>::FiniteElementBase (const FiniteElementData<3> &fe_data) : + FiniteElementData<3> (fe_data), + system_to_component_table(total_dofs), + component_to_system_table(n_components, vector(total_dofs)) +{ + const unsigned int dim=3; + for (unsigned int i=0; i::children_per_cell; ++i) + { + restriction[i].reinit (total_dofs, total_dofs); + prolongation[i].reinit (total_dofs, total_dofs); + }; + interface_constraints.reinit (5*dofs_per_vertex+12*dofs_per_line+4*dofs_per_quad, + dofs_per_face); + + // this is the default way, if there is only + // one component; if there are several, then + // the constructor of the derived class needs + // to fill these arrays for (unsigned int j=0 ; j(0,j); diff --git a/deal.II/deal.II/source/fe/fe_lib.cubic.cc b/deal.II/deal.II/source/fe/fe_lib.cubic.cc index 5b1fef0987..ca55db78f4 100644 --- a/deal.II/deal.II/source/fe/fe_lib.cubic.cc +++ b/deal.II/deal.II/source/fe/fe_lib.cubic.cc @@ -1602,7 +1602,10304 @@ void FECubicSub<2>::get_face_support_points (const typename DoFHandler<2>::face_ +#if 0 // ignore the following, since it doesn't compile properly. it simply + // is too large +#if deal_II_dimension == 3 + +template <> +FECubicSub<3>::FECubicSub () : + FELinearMapping<3> (1, 2, 4, 8) +{ + 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 <> +FECubicSub<3>::FECubicSub (const int) : + FELinearMapping<3> (0, 0, 0, 64) +{ + initialize_matrices (); +}; + + + +template <> +void FECubicSub<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 +FECubicSub<3>::shape_value (const unsigned int i, + const Point<3> &p) const +{ + Assert (i +Tensor<1,3> +FECubicSub<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> +FECubicSub<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 FECubicSub<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, + const Boundary<3> &, + dFMatrix &local_mass_matrix) const { + Assert (local_mass_matrix.n() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.n(),total_dofs)); + Assert (local_mass_matrix.m() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.m(),total_dofs)); + + AssertThrow (false, ExcComputationNotUseful(3)); +}; + + + +template <> +void FECubicSub<3>::get_unit_support_points (vector > &unit_points) const { + Assert (unit_points.size() == total_dofs, + ExcWrongFieldDimension (unit_points.size(), total_dofs)); + 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 FECubicSub<3>::get_support_points (const typename DoFHandler<3>::cell_iterator &cell, + const Boundary<3>&, + vector > &support_points) const { + Assert (support_points.size() == total_dofs, + ExcWrongFieldDimension (support_points.size(), total_dofs)); + + 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 FECubicSub<3>::get_face_support_points (const typename DoFHandler<3>::face_iterator &face, + const Boundary<3> &, + vector > &support_points) const { + Assert (support_points.size() == dofs_per_face, + 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; +}; + + + +#endif // deal_II_dimension == 3 +#endif // 0 // explicit instantiations diff --git a/deal.II/deal.II/source/fe/fe_lib.linear.cc b/deal.II/deal.II/source/fe/fe_lib.linear.cc index 8382901fd2..5334f6f5c4 100644 --- a/deal.II/deal.II/source/fe/fe_lib.linear.cc +++ b/deal.II/deal.II/source/fe/fe_lib.linear.cc @@ -433,6 +433,453 @@ void FELinear<2>::get_unit_support_points (vector > &unit_points) const #endif +#if deal_II_dimension == 3 + +template <> +FELinear<3>::FELinear () : + FELinearMapping<3> (1, 0, 0, 0) +{ + 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 <> +FELinear<3>::FELinear (const int) : + FELinearMapping<3> (0, 0, 0, 8) +{ + initialize_matrices (); +}; + + + +template <> +void FELinear<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 +FELinear<3>::shape_value (const unsigned int i, + const Point<3>& p) const +{ + Assert((i +inline +Tensor<1,3> +FELinear<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> +FELinear<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 FELinear<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, + const Boundary<3> &, + dFMatrix &local_mass_matrix) const { + Assert (local_mass_matrix.n() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.n(),total_dofs)); + Assert (local_mass_matrix.m() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.m(),total_dofs)); + + AssertThrow (false, ExcComputationNotUseful(3)); +}; + + + +template <> +void FELinear<3>::get_unit_support_points (vector > &unit_points) const { + Assert (unit_points.size() == total_dofs, + ExcWrongFieldDimension (unit_points.size(), total_dofs)); + + 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 diff --git a/deal.II/deal.II/source/fe/fe_lib.quadratic.cc b/deal.II/deal.II/source/fe/fe_lib.quadratic.cc index 89a40fc343..7f60977ba7 100644 --- a/deal.II/deal.II/source/fe/fe_lib.quadratic.cc +++ b/deal.II/deal.II/source/fe/fe_lib.quadratic.cc @@ -1119,8 +1119,1829 @@ void FEQuadraticSub<2>::get_face_support_points (const typename DoFHandler<2>::f support_points[2] = (support_points[0] + support_points[1]) / 2; }; +#endif + + + +#if deal_II_dimension == 3 + +template <> +FEQuadraticSub<3>::FEQuadraticSub () : + FELinearMapping<3> (1, 1, 1, 1) +{ + 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 <> +FEQuadraticSub<3>::FEQuadraticSub (const int) : + FELinearMapping<3> (0, 0, 0, 27) +{ + initialize_matrices (); +}; + + + +template <> +void FEQuadraticSub<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 +FEQuadraticSub<3>::shape_value (const unsigned int i, + const Point<3> &p) const +{ + Assert (i +Tensor<1,3> +FEQuadraticSub<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> +FEQuadraticSub<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 FEQuadraticSub<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &, + const Boundary<3> &, + dFMatrix &local_mass_matrix) const { + Assert (local_mass_matrix.n() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.n(),total_dofs)); + Assert (local_mass_matrix.m() == total_dofs, + ExcWrongFieldDimension(local_mass_matrix.m(),total_dofs)); + + AssertThrow (false, ExcComputationNotUseful(3)); +}; + + + +template <> +void FEQuadraticSub<3>::get_unit_support_points (vector > &unit_points) const { + Assert (unit_points.size() == total_dofs, + ExcWrongFieldDimension (unit_points.size(), total_dofs)); + + 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 FEQuadraticSub<3>::get_support_points (const typename DoFHandler<3>::cell_iterator &cell, + const Boundary<3>&, + vector > &support_points) const { + Assert (support_points.size() == total_dofs, + ExcWrongFieldDimension (support_points.size(), total_dofs)); + + 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 FEQuadraticSub<3>::get_face_support_points (const typename DoFHandler<3>::face_iterator &face, + const Boundary<3> &, + vector > &support_points) const { + Assert (support_points.size() == dofs_per_face, + 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 diff --git a/deal.II/deal.II/source/fe/fe_linear_mapping.cc b/deal.II/deal.II/source/fe/fe_linear_mapping.cc index a5b47dbce5..0d0acd4397 100644 --- a/deal.II/deal.II/source/fe/fe_linear_mapping.cc +++ b/deal.II/deal.II/source/fe/fe_linear_mapping.cc @@ -8,7 +8,7 @@ #include #include - +#include @@ -21,13 +21,16 @@ template <> FELinearMapping<1>::FELinearMapping (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, - const unsigned int dofs_per_quad) : + const unsigned int dofs_per_quad, + const unsigned int dofs_per_hex, + const unsigned int n_components) : FiniteElement<1> (FiniteElementData<1> (dofs_per_vertex, dofs_per_line, GeometryInfo<1>::vertices_per_cell, - 1)) + n_components)) { Assert (dofs_per_quad==0, ExcInvalidData()); + Assert (dofs_per_hex==0, ExcInvalidData()); }; @@ -143,13 +146,17 @@ void FELinearMapping<1>::fill_fe_values (const DoFHandler<1>::cell_iterator &cel template <> FELinearMapping<2>::FELinearMapping (const unsigned int dofs_per_vertex, const unsigned int dofs_per_line, - const unsigned int dofs_per_quad) : + const unsigned int dofs_per_quad, + const unsigned int dofs_per_hex, + const unsigned int n_components) : FiniteElement<2> (FiniteElementData<2> (dofs_per_vertex, dofs_per_line, dofs_per_quad, GeometryInfo<2>::vertices_per_cell, - 1)) -{}; + n_components)) +{ + Assert (dofs_per_hex == 0, ExcInvalidData()); +}; @@ -308,6 +315,245 @@ void FELinearMapping<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator +#if deal_II_dimension == 3 + +template <> +FELinearMapping<3>::FELinearMapping (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) : + FiniteElement<3> (FiniteElementData<3> (dofs_per_vertex, + dofs_per_line, + dofs_per_quad, + dofs_per_hex, + GeometryInfo<3>::vertices_per_cell, + n_components)) +{}; + + + +template <> +inline +double +FELinearMapping<3>::shape_value_transform (const unsigned int i, + const Point<3>& p) const +{ + Assert((i<8), ExcInvalidIndex(i)); + 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 <> +inline +Tensor<1,3> +FELinearMapping<3>::shape_grad_transform (const unsigned int i, + const Point<3>& p) const +{ + Assert((i<8), ExcInvalidIndex(i)); + 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 FELinearMapping<3>::get_face_jacobians (const DoFHandler<3>::face_iterator &face, + const Boundary<3> &, + const vector > &unit_points, + vector &face_jacobians) const { + Assert (unit_points.size() == face_jacobians.size(), + 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 FELinearMapping<3>::get_subface_jacobians (const DoFHandler<3>::face_iterator &/*face*/, + const unsigned int , + const vector > &unit_points, + vector &face_jacobians) const { + Assert (false, + ExcWrongFieldDimension (unit_points.size(), face_jacobians.size())); +}; + + + +template <> +void FELinearMapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &cell, + const unsigned int face_no, + const Boundary<3> &, + const vector > &unit_points, + vector > &normal_vectors) const { + Assert (unit_points.size() == normal_vectors.size(), + 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 FELinearMapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &/*cell*/, + const unsigned int /*face_no*/, + const unsigned int, + const vector > &unit_points, + 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, + ExcWrongFieldDimension (unit_points.size(), normal_vectors.size())); +}; + +#endif + + + template void FELinearMapping::fill_fe_values (const DoFHandler::cell_iterator &cell, const vector > &unit_points, @@ -471,147 +717,10 @@ void FELinearMapping::fill_fe_values (const DoFHandler::cell_iterator */ if (compute_jacobians) - switch (dim) - { - case 1: - for (unsigned int point=0; point +#include +#include + +#include + + + +/** + * This file has been singled out from fe_linear_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 FELinearMapping<1>::compute_jacobian_matrices (const DoFHandler<1>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians) +{ + Assert (unit_points.size() == jacobians.size(), + ExcWrongFieldDimension(jacobians.size(), unit_points.size())); + + const double h = (cell->vertex(1)(0)-cell->vertex(0)(0)); + + for (unsigned int point=0; point +void FELinearMapping<1>::compute_jacobian_gradients (const DoFHandler<1>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians_grad) +{ + Assert (unit_points.size() == jacobians_grad.size(), + 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 FELinearMapping<2>::compute_jacobian_matrices (const DoFHandler<2>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians) +{ + const unsigned int dim = 2; + + Assert (unit_points.size() == jacobians.size(), + ExcWrongFieldDimension(jacobians.size(), unit_points.size())); + + 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 FELinearMapping<2>::compute_jacobian_gradients (const DoFHandler<2>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians_grad) +{ + Assert (unit_points.size() == jacobians_grad.size(), + 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 FELinearMapping<3>::compute_jacobian_matrices (const DoFHandler<3>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians) +{ + const unsigned int dim = 3; + + Assert (unit_points.size() == jacobians.size(), + ExcWrongFieldDimension(jacobians.size(), unit_points.size())); + + 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 FELinearMapping<3>::compute_jacobian_gradients (const DoFHandler<3>::cell_iterator &cell, + const vector > &unit_points, + vector > &jacobians_grad) +{ + Assert (unit_points.size() == jacobians_grad.size(), + 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($2,/g;' *2d_shape_grad -perl -pi -e 's/grad_phi_polynom\[(\d+)\]\[1\] = (.*);/$2);/g;' *2d_shape_grad +perl -pi -e 's/grad_phi_polynom\[(\d+)\]\[[12]\] = (.*);/$2);/g;' *2d_shape_grad +perl -pi -e 's/xi/p(0)/g; s/zeta/p(2)/g; s/eta/p(1)/g;' *2d_shape_grad # concatenate all lines for each entry diff --git a/deal.II/deal.II/source/fe/scripts/3d/lagrange-linear b/deal.II/deal.II/source/fe/scripts/3d/lagrange-linear index f33f0257aa..afcc425b59 100644 --- a/deal.II/deal.II/source/fe/scripts/3d/lagrange-linear +++ b/deal.II/deal.II/source/fe/scripts/3d/lagrange-linear @@ -121,5 +121,8 @@ C(local_mass_matrix, filename=linear3d_massmatrix): C(interface_constraints, filename=linear3d_constraints): C(real_points, optimized, filename=linear3d_real_points): - C(inverseJacobian, filename=linear3d_inverse_jacobian): - C(grad_inverseJacobian, filename=linear3d_inverse_jacobian_grad): + # the following two files get much smaller and faster when processed using 'optimized' + C(inverseJacobian, optimized, filename=linear3d_inverse_jacobian): + C(grad_inverseJacobian, optimized, filename=linear3d_inverse_jacobian_grad): + + diff --git a/deal.II/deal.II/source/fe/scripts/3d/lagrange-tools b/deal.II/deal.II/source/fe/scripts/3d/lagrange-tools index 219b068245..9a27c773b2 100644 --- a/deal.II/deal.II/source/fe/scripts/3d/lagrange-tools +++ b/deal.II/deal.II/source/fe/scripts/3d/lagrange-tools @@ -20,57 +20,56 @@ support_points_fill_lines := proc (starting_index, dofs_per_line, support_points # line 0 for i from 1 to dofs_per_line do - print (next_index+i-1): - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [i*increment, 0, 0]): next_index := next_index+1 od: # line 1 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [1, 0, i*increment]): next_index := next_index+1 od: # line 2 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [i*increment, 0, 1]): next_index := next_index+1 od: # line 3 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [0, 0, i*increment]): next_index := next_index+1 od: # line 4 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [i*increment, 1, 0]): next_index := next_index+1 od: # line 5 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [1, 1, i*increment]): next_index := next_index+1 od: # line 6 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [i*increment, 1, 1]): next_index := next_index+1 od: # line 7 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [0, 1, i*increment]): next_index := next_index+1 od: @@ -78,29 +77,120 @@ support_points_fill_lines := proc (starting_index, dofs_per_line, support_points # line 8 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [0, i*increment,0]): next_index := next_index+1 od: # line 9 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [1, i*increment, 0]): next_index := next_index+1 od: # line 10 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [1, i*increment, 1]): next_index := next_index+1 od: # line 11 for i from 1 to dofs_per_line do - support_points[next_index+i-1] + support_points[next_index] := array (1..3, [0, i*increment, 1]): next_index := next_index+1 od: -end: \ No newline at end of file +end: + + + + +support_points_fill_quads := + proc (starting_index, dofs_per_direction, support_points) + + local next_index, increment, i,j: + + next_index := starting_index: + increment := 1/(dofs_per_direction+1): + + # face 0 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [j*increment, 0, i*increment]): + next_index := next_index+1: + od: + od: + + # face 1 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [j*increment, 1, i*increment]): + next_index := next_index+1: + od: + od: + + # face 2 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [j*increment, i*increment, 0]): + next_index := next_index+1: + od: + od: + + # face 3 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [1, j*increment, i*increment]): + next_index := next_index+1: + od: + od: + + + + # face 4 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [j*increment, i*increment, 1]): + next_index := next_index+1: + od: + od: + + # face 5 + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [0, j*increment, i*increment]): + next_index := next_index+1: + od: + od: +end: + + + + +support_points_fill_hex := proc (starting_index, dofs_per_direction, support_points) + + local next_index, increment, i, j, k: + + next_index := starting_index: + increment := 1/(dofs_per_direction+1): + + for i from 1 to dofs_per_direction do + for j from 1 to dofs_per_direction do + for k from 1 to dofs_per_direction do + support_points[next_index] + := array (1..3, [k*increment, + j*increment, + i*increment]): + next_index := next_index + 1: + od: + od: + od: +end: diff --git a/deal.II/deal.II/source/fe/scripts/3d/postprocess b/deal.II/deal.II/source/fe/scripts/3d/postprocess index d783b63f0e..1f26bb73e1 100644 --- a/deal.II/deal.II/source/fe/scripts/3d/postprocess +++ b/deal.II/deal.II/source/fe/scripts/3d/postprocess @@ -35,16 +35,20 @@ perl -pi -e 's/.*= 0.0;\n//g;' *3d_restriction perl -pi -e 's/\[(\d+)\]\[(\d+)\]/($1,$2)/g;' *3d_constraints perl -pi -e 's/.*= 0.0;\n//g;' *3d_constraints -perl -pi -e 's/^\s*t/const double t/g;' *3d_inverse_jacobian +perl -pi -e 's/([^;])\n/$1/g;' *3d_inverse_jacobian +perl -pi -e 's/^\s*t/ const double t/g;' *3d_inverse_jacobian perl -pi -e 's/x\[(\d)\]/vertices[$1](0)/g;' *3d_inverse_jacobian perl -pi -e 's/y\[(\d)\]/vertices[$1](1)/g;' *3d_inverse_jacobian -perl -pi -e 's/inverseJacobian/jacobians[point]/g;' *3d_inverse_jacobian +perl -pi -e 's/z\[(\d)\]/vertices[$1](2)/g;' *3d_inverse_jacobian +perl -pi -e 's/^s*inverseJacobian/ jacobians[point]/g;' *3d_inverse_jacobian perl -pi -e 's/\[(\d)\]\[(\d)\] =/($1,$2) =/g;' *3d_inverse_jacobian -perl -pi -e 's/^\s*t/const double t/g;' *3d_inverse_jacobian_grad +perl -pi -e 's/([^;])\n/$1/g;' *3d_inverse_jacobian_grad +perl -pi -e 's/^\s*t/ const double t/g;' *3d_inverse_jacobian_grad perl -pi -e 's/x\[(\d)\]/vertices[$1](0)/g;' *3d_inverse_jacobian_grad perl -pi -e 's/y\[(\d)\]/vertices[$1](1)/g;' *3d_inverse_jacobian_grad -perl -pi -e 's/inverseJacobian/jacobians_grad[point]/g;' *3d_inverse_jacobian_grad +perl -pi -e 's/z\[(\d)\]/vertices[$1](2)/g;' *3d_inverse_jacobian_grad +perl -pi -e 's/^\s*grad_inverseJacobian/ jacobians_grad[point]/g;' *3d_inverse_jacobian_grad perl -pi -e 's/^array.*\n//g; s/^\s*\]\)//g; s/^\n//g;' *3d_unit_support_points diff --git a/deal.II/deal.II/source/grid/tria.cc b/deal.II/deal.II/source/grid/tria.cc index ce65300c09..7415b83f27 100644 --- a/deal.II/deal.II/source/grid/tria.cc +++ b/deal.II/deal.II/source/grid/tria.cc @@ -38,10 +38,11 @@ bool SubCellData::check_consistency (const unsigned int dim) const { template Triangulation::Triangulation (const MeshSmoothing smooth_grid) : Subscriptor (), + boundary (0), smooth_grid(smooth_grid) { - static StraightBoundary default_boundary; - boundary = &default_boundary; + // set default boundary + set_boundary (0); levels.push_back (new TriangulationLevel); }; @@ -63,6 +64,7 @@ Triangulation::~Triangulation () { for (unsigned int i=0; iunsubscribe (); levels.clear (); }; @@ -70,7 +72,17 @@ Triangulation::~Triangulation () { template void Triangulation::set_boundary (const Boundary *boundary_object) { - boundary = boundary_object; + static StraightBoundary default_boundary; + + if (boundary != 0) + boundary->unsubscribe (); + + if (boundary_object != 0) + boundary = boundary_object; + else + boundary = &default_boundary; + + boundary->subscribe (); }; @@ -114,6 +126,29 @@ Triangulation<2>::end () const { #endif + + +#if deal_II_dimension == 3 + +template <> +TriaDimensionInfo<3>::cell_iterator +Triangulation<3>::begin (const unsigned int level) const { + return begin_hex (level); +}; + + + +template <> +TriaDimensionInfo<3>::raw_cell_iterator +Triangulation<3>::end () const { + return end_hex (); +}; + +#endif + + + + /*-----------------------------------------------------------------*/ @@ -127,9 +162,13 @@ void Triangulation::copy_triangulation (const Triangulation &old_tria) // copy normal elements vertices = old_tria.vertices; vertices_used = old_tria.vertices_used; - boundary = old_tria.boundary; smooth_grid = old_tria.smooth_grid; + if (boundary) + boundary->unsubscribe (); + boundary = old_tria.boundary; + boundary->subscribe (); + // delete only level previously existing, // reserve space for new and copy delete levels[0]; @@ -191,7 +230,6 @@ void Triangulation<1>::create_triangulation (const vector > &v, }; -#ifdef DEBUG // some security tests unsigned int boundary_nodes = 0; for (unsigned int i=0; i::create_triangulation (const vector > &v, case 2: break; default: // a node must have one or two adjacent lines - Assert (false, ExcInternalError()); + AssertThrow (false, ExcInternalError()); }; // assert there are no more than two boundary // nodes - Assert (boundary_nodes == 2, ExcInternalError()); -#endif + AssertThrow (boundary_nodes == 2, ExcInternalError()); // update neighborship info @@ -319,14 +356,10 @@ void Triangulation<2>::create_triangulation (const vector > &v, map,line_iterator> needed_lines; for (unsigned int cell=0; cell(vertices.size())), + ExcInvalidVertexIndex (cell, cells[cell].vertices[vertex], vertices.size())); pair line_vertices[4] = { // note the order of the vertices make_pair (cells[cell].vertices[0], cells[cell].vertices[1]), @@ -396,11 +429,11 @@ void Triangulation<2>::create_triangulation (const vector > &v, // direction 1->4, while in // the second it would be 4->1. // This will cause the exception. - Assert (needed_lines.find(make_pair(line_vertices[line].second, - line_vertices[line].first)) - == - needed_lines.end(), - ExcGridHasInvalidCell(cell)); + AssertThrow (needed_lines.find(make_pair(line_vertices[line].second, + line_vertices[line].first)) + == + needed_lines.end(), + ExcGridHasInvalidCell(cell)); // insert line, with invalid iterator // if line already exists, then @@ -410,8 +443,7 @@ void Triangulation<2>::create_triangulation (const vector > &v, }; -#ifdef DEBUG - // in debug mode: check the every vertex has + // check the every vertex has // at least two adjacent lines if (true) { @@ -426,11 +458,10 @@ void Triangulation<2>::create_triangulation (const vector > &v, // assert minimum touch count is at // least two - Assert (* (min_element(vertex_touch_count.begin(), - vertex_touch_count.end())) >= 2, - ExcGridHasInvalidVertices()); + AssertThrow (* (min_element(vertex_touch_count.begin(), + vertex_touch_count.end())) >= 2, + ExcGridHasInvalidVertices()); }; -#endif // reserve enough space levels[0]->TriangulationLevel<0>::reserve_space (cells.size(), dim); @@ -446,6 +477,7 @@ void Triangulation<2>::create_triangulation (const vector > &v, { line->set (Line(i->first.first, i->first.second)); line->set_used_flag (); + line->clear_user_flag (); line->clear_user_pointer (); i->second = line; }; @@ -501,9 +533,9 @@ void Triangulation<2>::create_triangulation (const vector > &v, const unsigned int n_adj_cells = adjacent_cells[line->index()].size(); // assert that every line has one or // two adjacent cells - Assert ((n_adj_cells >= 1) && - (n_adj_cells <= 2), - ExcInternalError()); + AssertThrow ((n_adj_cells >= 1) && + (n_adj_cells <= 2), + ExcInternalError()); // if only one cell: line is at // boundary -> give it the boundary @@ -538,16 +570,16 @@ void Triangulation<2>::create_triangulation (const vector > &v, else { // line does not exist - Assert (false, ExcLineInexistant(line_vertices.first, - line_vertices.second)); + AssertThrow (false, ExcLineInexistant(line_vertices.first, + line_vertices.second)); line = end_line(); }; }; // Assert that only exterior lines - // are sgiven a boundary indicator - Assert (line->boundary_indicator() == 0, - ExcInteriorLineCantBeBoundary()); + // are given a boundary indicator + AssertThrow (line->boundary_indicator() == 0, + ExcInteriorLineCantBeBoundary()); line->set_boundary_indicator (boundary_line->material_id); }; @@ -669,137 +701,791 @@ void Triangulation<2>::create_hyper_ball (const Point<2> &p, const double radius #endif +#if deal_II_dimension == 3 + +/** + * Invent an object which compares two Quads against each other. This + * comparison is needed in order to establish a map of Quads to iterators + * in the Triangulation<3>::create_triangulation function. + * + * Since this comparison is not canonical, we do not include it into the + * general Quad class. + */ +struct QuadComparator { + bool operator () (const Quad &q1, const Quad &q2) { + // here is room to optimize the + // repeated equality test of + // the previous lines, but I don't + // care at present + if ((q1.line(0) < q2.line(0)) || + ((q1.line(0) == q2.line(0)) && + (q1.line(1) < q2.line(1))) || + ((q1.line(0) == q2.line(0)) && + (q1.line(1) == q2.line(1)) && + (q1.line(2) < q2.line(2))) || + ((q1.line(0) == q2.line(0)) && + (q1.line(1) == q2.line(1)) && + (q1.line(2) == q2.line(2)) && + (q1.line(3) < q2.line(3)))) + return true; + else + return false; + }; +}; + -#if deal_II_dimension == 1 template <> -void Triangulation<1>::distort_random (const double factor, - const bool keep_boundary) { - // this function is mostly equivalent to - // that for the general dimensional case - // the only difference being the correction - // for split faces which is not necessary - // in 1D +void Triangulation<3>::create_triangulation (const vector > &v, + const vector > &c, + const SubCellData &subcelldata) { + const unsigned int dim=3; + + Assert (vertices.size() == 0, ExcTriangulationNotEmpty()); + Assert (n_lines() == 0, ExcTriangulationNotEmpty()); + Assert (n_quads() == 0, ExcTriangulationNotEmpty()); + Assert (n_hexs() == 0, ExcTriangulationNotEmpty()); + // check that no forbidden arrays are used + Assert (subcelldata.check_consistency(dim), ExcInternalError()); + + // copy vertices + vertices = v; + vertices_used = vector (v.size(), true); + + // copy cells. This is needed since we + // may need to change entries + vector > cells(c); + + /////////////////////////////////////// + // first set up some collections of data // - // if you change something here, don't - // forget to do so there as well + // make up a list of the needed lines + // + // each line is a pair of vertices. The list + // is kept sorted and it is guaranteed + // that each line is inserted only once. + // While the key of such an entry is the + // pair of vertices, the thing it points + // to is an iterator pointing to the line + // object itself. In the first run, these + // iterators are all invalid ones, but they + // are filled afterwards + // same applies for the quads + map,line_iterator> needed_lines; + for (unsigned int cell=0; cell minimal_length (vertices.size(), 1e308); - // also note if a vertex is at - // the boundary - vector at_boundary (vertices.size(), false); + // check whether vertex + // indices are valid ones + for (unsigned int vertex=0; vertex::vertices_per_cell; ++vertex) + AssertThrow ((0<=cells[cell].vertices[vertex]) && + (cells[cell].vertices[vertex](vertices.size())), + ExcInvalidVertexIndex (cell, cells[cell].vertices[vertex], vertices.size())); + + pair line_vertices[12] = { // note the order of the vertices + // front face + make_pair (cells[cell].vertices[0], cells[cell].vertices[1]), + make_pair (cells[cell].vertices[1], cells[cell].vertices[2]), + make_pair (cells[cell].vertices[3], cells[cell].vertices[2]), + make_pair (cells[cell].vertices[0], cells[cell].vertices[3]), + // back face + make_pair (cells[cell].vertices[4], cells[cell].vertices[5]), + make_pair (cells[cell].vertices[5], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[7], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[4], cells[cell].vertices[7]), + // connects of front and back face + make_pair (cells[cell].vertices[0], cells[cell].vertices[4]), + make_pair (cells[cell].vertices[1], cells[cell].vertices[5]), + make_pair (cells[cell].vertices[2], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[3], cells[cell].vertices[7]) + }; + + // in the 2d code, some tests were performed + // which may heal a problem with quads that + // are rotated such that the lines don't + // fit snuggly any more. I don't know how + // to do this in 3d also, so I leve it for + // future student generations. + // + // however, check that the line does not + // exist in the other direction + for (unsigned int line=0; line<12; ++line) + { + // assert that the line was not + // already inserted in reverse + // order. + AssertThrow (needed_lines.find(make_pair(line_vertices[line].second, + line_vertices[line].first)) + == + needed_lines.end(), + ExcGridHasInvalidCell(cell)); + + // insert line, with invalid iterator + // if line already exists, then + // nothing bad happens here + needed_lines[line_vertices[line]] = end_line(); + }; + }; - for (active_line_iterator line=begin_active_line(); - line != end_line(); ++line) + + ///////////////////////////////// + // now for some sanity-checks: + // + // check the every vertex has + // at least two adjacent lines + if (true) { - if (keep_boundary && line->at_boundary()) + vector vertex_touch_count (v.size(), 0); + map,line_iterator>::iterator i; + for (i=needed_lines.begin(); i!=needed_lines.end(); i++) { - at_boundary[line->vertex_index(0)] = true; - at_boundary[line->vertex_index(1)] = true; + // touch the vertices of this line + ++vertex_touch_count[i->first.first]; + ++vertex_touch_count[i->first.second]; }; - - minimal_length[line->vertex_index(0)] - = min(line->diameter(), minimal_length[line->vertex_index(0)]); - minimal_length[line->vertex_index(1)] - = min(line->diameter(), minimal_length[line->vertex_index(1)]); + + // assert minimum touch count is at + // least two + AssertThrow (* (min_element(vertex_touch_count.begin(), + vertex_touch_count.end())) >= 2, + ExcGridHasInvalidVertices()); }; - const unsigned int n_vertices = vertices.size(); - Point shift_vector; - - for (unsigned int vertex=0; vertexTriangulationLevel<0>::reserve_space (cells.size(), dim); + levels[0]->TriangulationLevel<1>::reserve_space (needed_lines.size()); - shift_vector *= factor * minimal_length[vertex] / - sqrt(shift_vector.square()); + // make up lines + if (true) + { + raw_line_iterator line = begin_raw_line(); + map,line_iterator>::iterator i; + for (i = needed_lines.begin(); line!=end_line(); ++line, ++i) + { + line->set (Line(i->first.first, i->first.second)); + line->set_used_flag (); + line->clear_user_flag (); + line->clear_user_pointer (); - // finally move the vertex - vertices[vertex] += shift_vector; + // now set the iterator for this + // line + i->second = line; + }; }; -}; -#endif + /////////////////////////////////////////// + // make up the quads of this triangulation + // + // same thing: the iterators are set + // to the invalid value at first, we only + // collect the data now + // note that QuadComparator is a class + // declared and defined in this file + map needed_quads; + for (unsigned int cell=0; cell line_list[12] = { // note the order of the vertices + // front face + make_pair (cells[cell].vertices[0], cells[cell].vertices[1]), + make_pair (cells[cell].vertices[1], cells[cell].vertices[2]), + make_pair (cells[cell].vertices[3], cells[cell].vertices[2]), + make_pair (cells[cell].vertices[0], cells[cell].vertices[3]), + // back face + make_pair (cells[cell].vertices[4], cells[cell].vertices[5]), + make_pair (cells[cell].vertices[5], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[7], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[4], cells[cell].vertices[7]), + // connects of front and back face + make_pair (cells[cell].vertices[0], cells[cell].vertices[4]), + make_pair (cells[cell].vertices[1], cells[cell].vertices[5]), + make_pair (cells[cell].vertices[2], cells[cell].vertices[6]), + make_pair (cells[cell].vertices[3], cells[cell].vertices[7]) + }; -template -void Triangulation::distort_random (const double factor, - const bool keep_boundary) { - // this function is mostly equivalent to - // that for the general dimensional case - // the only difference being the correction - // for split faces which is not necessary - // in 1D - // - // if you change something here, don't - // forget to do so there as well - - // find the smallest length of the lines - // adjecent to the vertex - vector minimal_length (vertices.size(), 1e308); - // also note if a vertex is at - // the boundary - vector at_boundary (vertices.size(), false); + Quad faces[6] + = { + // front face + Quad (needed_lines[line_list[0]]->index(), + needed_lines[line_list[1]]->index(), + needed_lines[line_list[2]]->index(), + needed_lines[line_list[3]]->index()), + // back face + Quad (needed_lines[line_list[4]]->index(), + needed_lines[line_list[5]]->index(), + needed_lines[line_list[6]]->index(), + needed_lines[line_list[7]]->index()), + // bottom face + Quad (needed_lines[line_list[0]]->index(), + needed_lines[line_list[9]]->index(), + needed_lines[line_list[4]]->index(), + needed_lines[line_list[8]]->index()), + // right face + Quad (needed_lines[line_list[9]]->index(), + needed_lines[line_list[5]]->index(), + needed_lines[line_list[10]]->index(), + needed_lines[line_list[1]]->index()), + // top face + Quad (needed_lines[line_list[2]]->index(), + needed_lines[line_list[10]]->index(), + needed_lines[line_list[6]]->index(), + needed_lines[line_list[11]]->index()), + // left face + Quad (needed_lines[line_list[8]]->index(), + needed_lines[line_list[7]]->index(), + needed_lines[line_list[11]]->index(), + needed_lines[line_list[3]]->index()) }; + + // in the 2d code, some tests were performed + // which may heal a problem with hexes that + // are rotated such that the quads don't + // fit snuggly any more. I don't know how + // to do this in here, so I leve it for + // future student generations. + for (unsigned int quad=0; quad<6; ++quad) + // insert quad, with invalid iterator + // if quad already exists, then + // nothing bad happens here + needed_quads[faces[quad]] = end_quad(); + }; - for (active_line_iterator line=begin_active_line(); - line != end_line(); ++line) + + ///////////////////////////////// + // enter the resulting quads into + // the arrays of the Triangulation + // + // first reserve enough space + levels[0]->TriangulationLevel<2>::reserve_space (needed_quads.size()); + if (true) { - if (keep_boundary && line->at_boundary()) + raw_quad_iterator quad = begin_raw_quad(); + map::iterator q; + for (q = needed_quads.begin(); quad!=end_quad(); ++quad, ++q) { - at_boundary[line->vertex_index(0)] = true; - at_boundary[line->vertex_index(1)] = true; + quad->set (q->first); + quad->set_used_flag (); + quad->clear_user_flag (); + quad->clear_user_pointer (); + + // now set the iterator for this + // quad + q->second = quad; }; - - minimal_length[line->vertex_index(0)] - = min(line->diameter(), minimal_length[line->vertex_index(0)]); - minimal_length[line->vertex_index(1)] - = min(line->diameter(), minimal_length[line->vertex_index(1)]); }; + ///////////////////////////////// + // finally create the cells + levels[0]->TriangulationLevel<3>::reserve_space (cells.size()); - const unsigned int n_vertices = vertices.size(); - Point shift_vector; - - for (unsigned int vertex=0; vertex > adjacent_cells; + + // finally make up cells + if (true) { - // ignore this vertex if we whall keep - // the boundary and this vertex *is* at - // the boundary - if (keep_boundary && at_boundary[vertex]) - continue; - - // first compute a random shift vector - for (unsigned int d=0; d line_list[12] = { // note the order of the vertices + // front face + make_pair (cells[c].vertices[0], cells[c].vertices[1]), + make_pair (cells[c].vertices[1], cells[c].vertices[2]), + make_pair (cells[c].vertices[3], cells[c].vertices[2]), + make_pair (cells[c].vertices[0], cells[c].vertices[3]), + // back face + make_pair (cells[c].vertices[4], cells[c].vertices[5]), + make_pair (cells[c].vertices[5], cells[c].vertices[6]), + make_pair (cells[c].vertices[7], cells[c].vertices[6]), + make_pair (cells[c].vertices[4], cells[c].vertices[7]), + // connects of front and back face + make_pair (cells[c].vertices[0], cells[c].vertices[4]), + make_pair (cells[c].vertices[1], cells[c].vertices[5]), + make_pair (cells[c].vertices[2], cells[c].vertices[6]), + make_pair (cells[c].vertices[3], cells[c].vertices[7]) + }; - shift_vector *= factor * minimal_length[vertex] / - sqrt(shift_vector.square()); + Quad faces[6] + = { + // front face + Quad (needed_lines[line_list[0]]->index(), + needed_lines[line_list[1]]->index(), + needed_lines[line_list[2]]->index(), + needed_lines[line_list[3]]->index()), + // back face + Quad (needed_lines[line_list[4]]->index(), + needed_lines[line_list[5]]->index(), + needed_lines[line_list[6]]->index(), + needed_lines[line_list[7]]->index()), + // bottom face + Quad (needed_lines[line_list[0]]->index(), + needed_lines[line_list[9]]->index(), + needed_lines[line_list[4]]->index(), + needed_lines[line_list[8]]->index()), + // right face + Quad (needed_lines[line_list[9]]->index(), + needed_lines[line_list[5]]->index(), + needed_lines[line_list[10]]->index(), + needed_lines[line_list[1]]->index()), + // top face + Quad (needed_lines[line_list[2]]->index(), + needed_lines[line_list[10]]->index(), + needed_lines[line_list[6]]->index(), + needed_lines[line_list[11]]->index()), + // left face + Quad (needed_lines[line_list[8]]->index(), + needed_lines[line_list[7]]->index(), + needed_lines[line_list[11]]->index(), + needed_lines[line_list[3]]->index()) }; + + // get the iterators corresponding + // to the faces + const quad_iterator face_iterator[6] = { + needed_quads[faces[0]], + needed_quads[faces[1]], + needed_quads[faces[2]], + needed_quads[faces[3]], + needed_quads[faces[4]], + needed_quads[faces[5]]}; + + // make the cell out of these + // iterators + cell->set (Hexahedron(face_iterator[0]->index(), + face_iterator[1]->index(), + face_iterator[2]->index(), + face_iterator[3]->index(), + face_iterator[4]->index(), + face_iterator[5]->index())); + + cell->set_used_flag (); + cell->set_material_id (cells[c].material_id); + cell->clear_user_flag (); + cell->clear_user_pointer (); + // note that this cell is adjacent + // to the four lines + for (unsigned int quad=0; quad<6; ++quad) + adjacent_cells[face_iterator[quad]->index()].push_back (cell); + + // make some checks on the lines + // and their ordering; if the + // lines are right, so are the + // vertices + Assert (face_iterator[0]->line(0) == face_iterator[2]->line(0), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[0]->line(1) == face_iterator[3]->line(3), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[0]->line(2) == face_iterator[4]->line(0), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[0]->line(3) == face_iterator[5]->line(3), + ExcInternalErrorOnCell(c)); - // finally move the vertex - vertices[vertex] += shift_vector; - }; + Assert (face_iterator[1]->line(0) == face_iterator[2]->line(2), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[1]->line(1) == face_iterator[3]->line(1), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[1]->line(2) == face_iterator[4]->line(2), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[1]->line(3) == face_iterator[5]->line(1), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[2]->line(1) == face_iterator[3]->line(0), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[3]->line(2) == face_iterator[4]->line(1), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[4]->line(3) == face_iterator[5]->line(2), + ExcInternalErrorOnCell(c)); + Assert (face_iterator[5]->line(0) == face_iterator[2]->line(3), + ExcInternalErrorOnCell(c)); + }; + }; - // finally correct hanging nodes - // again. The following is not - // necessary for 1D - active_cell_iterator cell = begin_active(), - endc = end(); - for (; cell!=endc; ++cell) + + ///////////////////////////////////////// + // find those quads which are at the + // boundary and mark them appropriately + for (quad_iterator quad=begin_quad(); quad!=end_quad(); ++quad) + { + const unsigned int n_adj_cells = adjacent_cells[quad->index()].size(); + // assert that every quad has one or + // two adjacent cells + AssertThrow ((n_adj_cells >= 1) && + (n_adj_cells <= 2), + ExcInternalError()); + + // if only one cell: quad is at + // boundary -> give it the boundary + // indicator zero by default + if (n_adj_cells == 1) + quad->set_boundary_indicator (0); + else + // interior quad -> 255 + quad->set_boundary_indicator (255); + }; + + ///////////////////////////////////////// + // next find those lines which are at + // the boundary and mark all others as + // interior ones + // + // for this: first mark all lines as + // interior + for (line_iterator line=begin_line(); line!=end_line(); ++line) + line->set_boundary_indicator (255); + // next reset all lines bounding boundary + // quads as on the boundary also + for (quad_iterator quad=begin_quad(); quad!=end_quad(); ++quad) + if (quad->at_boundary()) + for (unsigned int l=0; l<4; ++l) + quad->line(l)->set_boundary_indicator (0); + + + /////////////////////////////////////// + // now set boundary indicators + // where given + // + // not yet implemented + AssertThrow ((subcelldata.boundary_lines.size() == 0) && + (subcelldata.boundary_quads.size() == 0), + ExcInternalError()); + + + ///////////////////////////////////////// + // finally update neighborship info + for (cell_iterator cell=begin(); cell!=end(); ++cell) + for (unsigned int face=0; face<6; ++face) + if (adjacent_cells[cell->quad(face)->index()][0] == cell) + // first adjacent cell is this one + { + if (adjacent_cells[cell->quad(face)->index()].size() == 2) + // there is another adjacent cell + cell->set_neighbor (face, + adjacent_cells[cell->quad(face)->index()][1]); + } + // first adjacent cell is not this one, + // -> it must be the neighbor we are + // looking for + else + cell->set_neighbor (face, + adjacent_cells[cell->quad(face)->index()][0]); +}; + + + +template <> +void Triangulation<3>::create_hypercube (const double left, + const double right) { + Assert (vertices.size() == 0, ExcTriangulationNotEmpty()); + Assert (n_lines() == 0, ExcTriangulationNotEmpty()); + Assert (n_quads() == 0, ExcTriangulationNotEmpty()); + Assert (n_hexs() == 0, ExcTriangulationNotEmpty()); + + const Point<3> vertices[8] = { Point<3>(left,left,left), + Point<3>(right,left,left), + Point<3>(right,right,left), + Point<3>(left,right,left), + Point<3>(left,left,right), + Point<3>(right,left,right), + Point<3>(right,right,right), + Point<3>(left,right,right)}; + const int cell_vertices[1][8] = { { 0,1,2,3,4,5,6,7 } }; + vector > cells (1, CellData<3>()); + for (unsigned int j=0; j<8; ++j) + cells[0].vertices[j] = cell_vertices[0][j]; + cells[0].material_id = 0; + + create_triangulation (vector >(&vertices[0], &vertices[8]), + cells, + SubCellData()); // no boundary information +}; + + + +template <> +void Triangulation<3>::create_hyper_L (const double a, const double b) { + const unsigned int dim=3; + // we slice out the top back right + // part of the cube + const Point vertices[26] + = { + // front face of the big cube + Point (a, a,a), + Point ((a+b)/2,a,a), + Point (b, a,a), + Point (a, a,(a+b)/2), + Point ((a+b)/2,a,(a+b)/2), + Point (b, a,(a+b)/2), + Point (a, a,b), + Point ((a+b)/2,a,b), + Point (b, a,b), + // middle face of the big cube + Point (a, (a+b)/2,a), + Point ((a+b)/2,(a+b)/2,a), + Point (b, (a+b)/2,a), + Point (a, (a+b)/2,(a+b)/2), + Point ((a+b)/2,(a+b)/2,(a+b)/2), + Point (b, (a+b)/2,(a+b)/2), + Point (a, (a+b)/2,b), + Point ((a+b)/2,(a+b)/2,b), + Point (b, (a+b)/2,b), + // back face of the big cube + // last (top right) point is missing + Point (a, b,a), + Point ((a+b)/2,b,a), + Point (b, b,a), + Point (a, b,(a+b)/2), + Point ((a+b)/2,b,(a+b)/2), + Point (b, b,(a+b)/2), + Point (a, b,b), + Point ((a+b)/2,b,b) + }; + const int cell_vertices[7][8] = {{0, 1, 4, 3, 9, 10, 13, 12}, + {1, 2, 5, 4, 10, 11, 14, 13}, + {3, 4, 7, 6, 12, 13, 16, 15}, + {4, 5, 8, 7, 13, 14, 17, 16}, + {9, 10, 13, 12, 18, 19, 22, 21}, + {10, 11, 14, 13, 19, 20, 23, 22}, + {12, 13, 16, 15, 21, 22, 25, 24}}; + + vector > cells (7, CellData<3>()); + + for (unsigned int i=0; i<7; ++i) + { + for (unsigned int j=0; j<8; ++j) + cells[i].vertices[j] = cell_vertices[i][j]; + cells[i].material_id = 0; + }; + + create_triangulation (vector >(&vertices[0], &vertices[26]), + cells, + SubCellData()); // no boundary information +}; + + + +template <> +void Triangulation<3>::create_hyper_ball (const Point<3> &p, const double radius) { + const double a = 1./(1+sqrt(3)); // equilibrate cell sizes at transition + // from the inner part to the radial + // cells + const unsigned int n_vertices = 16; + const Point<3> vertices[n_vertices] + = { + // first the vertices of the inner + // cell + p+Point<3>(-1,-1,-1)*(radius/sqrt(3)*a), + p+Point<3>(+1,-1,-1)*(radius/sqrt(3)*a), + p+Point<3>(+1,+1,-1)*(radius/sqrt(3)*a), + p+Point<3>(-1,+1,-1)*(radius/sqrt(3)*a), + p+Point<3>(-1,-1,+1)*(radius/sqrt(3)*a), + p+Point<3>(+1,-1,+1)*(radius/sqrt(3)*a), + p+Point<3>(+1,+1,+1)*(radius/sqrt(3)*a), + p+Point<3>(-1,+1,+1)*(radius/sqrt(3)*a), + // now the eight vertices at + // the outer sphere + p+Point<3>(-1,-1,-1)*(radius/sqrt(3)), + p+Point<3>(+1,-1,-1)*(radius/sqrt(3)), + p+Point<3>(+1,+1,-1)*(radius/sqrt(3)), + p+Point<3>(-1,+1,-1)*(radius/sqrt(3)), + p+Point<3>(-1,-1,+1)*(radius/sqrt(3)), + p+Point<3>(+1,-1,+1)*(radius/sqrt(3)), + p+Point<3>(+1,+1,+1)*(radius/sqrt(3)), + p+Point<3>(-1,+1,+1)*(radius/sqrt(3)) + }; + + // one needs to draw the seven cubes to + // understand what's going on here + const unsigned int n_cells = 7; + const int cell_vertices[n_cells][8] = {{0, 1, 2, 3, 4, 5, 6, 7}, + {8, 9, 10, 11, 0, 1, 2, 3}, + {9, 13, 14, 10, 1, 5, 6, 2}, + {12, 4, 7, 15, 13, 5, 6, 14}, + {8, 0, 3, 11, 12, 4, 7, 15}, + {11, 10,14, 15, 3, 2, 6, 7}, + {8, 9, 13, 12, 0, 1, 5, 4}}; + + vector > cells (n_cells, CellData<3>()); + + for (unsigned int i=0; i::vertices_per_cell; ++j) + cells[i].vertices[j] = cell_vertices[i][j]; + cells[i].material_id = 0; + }; + + create_triangulation (vector >(&vertices[0], &vertices[n_vertices]), + cells, + SubCellData()); // no boundary information +}; + + + +#endif + + + + +#if deal_II_dimension == 1 + +template <> +void Triangulation<1>::distort_random (const double factor, + const bool keep_boundary) { + // this function is mostly equivalent to + // that for the general dimensional case + // the only difference being the correction + // for split faces which is not necessary + // in 1D + // + // if you change something here, don't + // forget to do so there as well + + const unsigned int dim = 1; + + // find the smallest length of the lines + // adjacent to the vertex + vector minimal_length (vertices.size(), 1e308); + // also note if a vertex is at + // the boundary + vector at_boundary (vertices.size(), false); + + for (active_line_iterator line=begin_active_line(); + line != end_line(); ++line) + { + if (keep_boundary && line->at_boundary()) + { + at_boundary[line->vertex_index(0)] = true; + at_boundary[line->vertex_index(1)] = true; + }; + + minimal_length[line->vertex_index(0)] + = min(line->diameter(), minimal_length[line->vertex_index(0)]); + minimal_length[line->vertex_index(1)] + = min(line->diameter(), minimal_length[line->vertex_index(1)]); + }; + + + const unsigned int n_vertices = vertices.size(); + Point shift_vector; + + for (unsigned int vertex=0; vertex +void Triangulation::distort_random (const double factor, + const bool keep_boundary) { + // this function is mostly equivalent to + // that for the general dimensional case + // the only difference being the correction + // for split faces which is not necessary + // in 1D + // + // if you change something here, don't + // forget to do so there as well + + // find the smallest length of the lines + // adjecent to the vertex + vector minimal_length (vertices.size(), 1e308); + // also note if a vertex is at + // the boundary + vector at_boundary (vertices.size(), false); + + for (active_line_iterator line=begin_active_line(); + line != end_line(); ++line) + { + if (keep_boundary && line->at_boundary()) + { + at_boundary[line->vertex_index(0)] = true; + at_boundary[line->vertex_index(1)] = true; + }; + + minimal_length[line->vertex_index(0)] + = min(line->diameter(), minimal_length[line->vertex_index(0)]); + minimal_length[line->vertex_index(1)] + = min(line->diameter(), minimal_length[line->vertex_index(1)]); + }; + + + const unsigned int n_vertices = vertices.size(); + Point shift_vector; + + for (unsigned int vertex=0; vertex::faces_per_cell; ++face) if (cell->face(face)->has_children() && !cell->face(face)->at_boundary()) @@ -1033,41 +1719,105 @@ void Triangulation<2>::save_user_flags (vector &v) const { -template -void Triangulation::save_user_flags_line (vector &v) const { - v.resize (n_lines(), false); - vector::iterator i = v.begin(); + +#if deal_II_dimension == 3 + +template <> +void Triangulation<3>::clear_user_pointers () { line_iterator line = begin_line(), endl = end_line(); - for (; line!=endl; ++line, ++i) - *i = line->user_flag_set(); -}; - + for (; line!=endl; ++line) + line->clear_user_pointer (); + quad_iterator quad = begin_quad(), + endq = end_quad(); + for (; quad!=endq; ++quad) + quad->clear_user_pointer (); -template -void Triangulation::save_user_flags_line (ostream &out) const { - vector v; - save_user_flags_line (v); - write_bool_vector (mn_tria_line_user_flags_begin, v, mn_tria_line_user_flags_end, - out); + cell_iterator cell = begin(), + endc = end(); + for (; cell!=endc; ++cell) + cell->clear_user_pointer (); }; -template -void Triangulation::load_user_flags_line (istream &in) { - vector v; - read_bool_vector (mn_tria_line_user_flags_begin, v, mn_tria_line_user_flags_end, - in); - load_user_flags_line (v); +template <> +void Triangulation<3>::clear_user_flags () { + line_iterator line = begin_line(), + endl = end_line(); + for (; line!=endl; ++line) + line->clear_user_flag (); + + quad_iterator quad = begin_quad(), + endq = end_quad(); + for (; quad!=endq; ++quad) + quad->clear_user_flag (); + + cell_iterator cell = begin(), + endc = end(); + for (; cell!=endc; ++cell) + cell->clear_user_flag (); }; -template -void Triangulation::load_user_flags_line (const vector &v) { - Assert (v.size() == n_active_cells(), ExcGridReadError()); +template <> +void Triangulation<3>::save_user_flags (ostream &out) const { + save_user_flags_line (out); + save_user_flags_quad (out); + save_user_flags_hex (out); +}; + + + +template <> +void Triangulation<3>::save_user_flags (vector &v) const { + save_user_flags_line (v); + save_user_flags_quad (v); + save_user_flags_hex (v); +}; + + +#endif + + + +template +void Triangulation::save_user_flags_line (vector &v) const { + v.resize (n_lines(), false); + vector::iterator i = v.begin(); + line_iterator line = begin_line(), + endl = end_line(); + for (; line!=endl; ++line, ++i) + *i = line->user_flag_set(); +}; + + + +template +void Triangulation::save_user_flags_line (ostream &out) const { + vector v; + save_user_flags_line (v); + write_bool_vector (mn_tria_line_user_flags_begin, v, mn_tria_line_user_flags_end, + out); +}; + + + +template +void Triangulation::load_user_flags_line (istream &in) { + vector v; + read_bool_vector (mn_tria_line_user_flags_begin, v, mn_tria_line_user_flags_end, + in); + load_user_flags_line (v); +}; + + + +template +void Triangulation::load_user_flags_line (const vector &v) { + Assert (v.size() == n_lines(), ExcGridReadError()); line_iterator line = begin_line(), endl = end_line(); @@ -1107,6 +1857,31 @@ void Triangulation<1>::load_user_flags_quad (const vector &) { Assert (false, ExcFunctionNotUseful()); }; + +template <> +void Triangulation<1>::save_user_flags_hex (ostream &) const { + Assert (false, ExcFunctionNotUseful()); +}; + + + +template <> +void Triangulation<1>::save_user_flags_hex (vector &) const { + Assert (false, ExcFunctionNotUseful()); +}; + + +template <> +void Triangulation<1>::load_user_flags_hex (istream &) { + Assert (false, ExcFunctionNotUseful()); +}; + + +template <> +void Triangulation<1>::load_user_flags_hex (const vector &) { + Assert (false, ExcFunctionNotUseful()); +}; + #endif @@ -1146,7 +1921,7 @@ void Triangulation::load_user_flags_quad (istream &in) { template void Triangulation::load_user_flags_quad (const vector &v) { - Assert (v.size() == n_active_cells(), ExcGridReadError()); + Assert (v.size() == n_quads(), ExcGridReadError()); quad_iterator quad = begin_quad(), endq = end_quad(); @@ -1160,6 +1935,85 @@ void Triangulation::load_user_flags_quad (const vector &v) { +#if deal_II_dimension == 2 + +template <> +void Triangulation<2>::save_user_flags_hex (ostream &) const { + Assert (false, ExcFunctionNotUseful()); +}; + + + +template <> +void Triangulation<2>::save_user_flags_hex (vector &) const { + Assert (false, ExcFunctionNotUseful()); +}; + + +template <> +void Triangulation<2>::load_user_flags_hex (istream &) { + Assert (false, ExcFunctionNotUseful()); +}; + + +template <> +void Triangulation<2>::load_user_flags_hex (const vector &) { + Assert (false, ExcFunctionNotUseful()); +}; + + +#endif + + + + +template +void Triangulation::save_user_flags_hex (vector &v) const { + v.resize (n_hexs(), false); + vector::iterator i = v.begin(); + hex_iterator hex = begin_hex(), + endh = end_hex(); + for (; hex!=endh; ++hex, ++i) + *i = hex->user_flag_set(); +}; + + + +template +void Triangulation::save_user_flags_hex (ostream &out) const { + vector v; + save_user_flags_hex (v); + write_bool_vector (mn_tria_hex_user_flags_begin, v, mn_tria_hex_user_flags_end, + out); +}; + + + +template +void Triangulation::load_user_flags_hex (istream &in) { + vector v; + read_bool_vector (mn_tria_hex_user_flags_begin, v, mn_tria_hex_user_flags_end, + in); + load_user_flags_hex (v); +}; + + + +template +void Triangulation::load_user_flags_hex (const vector &v) { + Assert (v.size() == n_hexs(), ExcGridReadError()); + + hex_iterator hex = begin_hex(), + endh = end_hex(); + vector::const_iterator i = v.begin(); + for (; hex!=endh; ++hex, ++i) + if (*i == true) + hex->set_user_flag(); + else + hex->clear_user_flag(); +}; + + /*------------------------ Iterator functions ------------------------*/ @@ -1407,6 +2261,96 @@ Triangulation<1>::last_active_quad () const { return 0; }; + + +template <> +TriaDimensionInfo<1>::raw_hex_iterator +Triangulation<1>::begin_raw_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::hex_iterator +Triangulation<1>::begin_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::active_hex_iterator +Triangulation<1>::begin_active_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::raw_hex_iterator +Triangulation<1>::end_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::raw_hex_iterator +Triangulation<1>::last_raw_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::raw_hex_iterator +Triangulation<1>::last_raw_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::hex_iterator +Triangulation<1>::last_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::hex_iterator +Triangulation<1>::last_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::active_hex_iterator +Triangulation<1>::last_active_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<1>::active_hex_iterator +Triangulation<1>::last_active_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + #endif @@ -1560,54 +2504,313 @@ Triangulation<2>::last_active_face (const unsigned int level) const { return last_active_line (level); }; -#endif +template <> +TriaDimensionInfo<2>::raw_hex_iterator +Triangulation<2>::begin_raw_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; -template -typename TriaDimensionInfo::raw_line_iterator -Triangulation::begin_raw_line (unsigned int level) const { - Assert (levellines.lines.size() == 0) - return end_line (); - - return raw_line_iterator (const_cast*>(this), - level, - 0); +template <> +TriaDimensionInfo<2>::hex_iterator +Triangulation<2>::begin_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; }; +template <> +TriaDimensionInfo<2>::active_hex_iterator +Triangulation<2>::begin_active_hex (unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; -template -typename TriaDimensionInfo::raw_quad_iterator -Triangulation::begin_raw_quad (unsigned int level) const { - Assert (levelquads.quads.size() == 0) - return end_quad(); - - return raw_quad_iterator (const_cast*>(this), - level, - 0); -}; +template <> +TriaDimensionInfo<2>::raw_hex_iterator +Triangulation<2>::end_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; -template -typename TriaDimensionInfo::line_iterator -Triangulation::begin_line (unsigned int level) const { - // level is checked in begin_raw - raw_line_iterator ri = begin_raw_line (level); - if (ri.state() != valid) - return ri; - while (ri->used() == false) - if ((++ri).state() != valid) - return ri; - return ri; +template <> +TriaDimensionInfo<2>::raw_hex_iterator +Triangulation<2>::last_raw_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<2>::raw_hex_iterator +Triangulation<2>::last_raw_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<2>::hex_iterator +Triangulation<2>::last_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<2>::hex_iterator +Triangulation<2>::last_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<2>::active_hex_iterator +Triangulation<2>::last_active_hex (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +TriaDimensionInfo<2>::active_hex_iterator +Triangulation<2>::last_active_hex () const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + +#endif + + + +#if deal_II_dimension == 3 + +template <> +TriaDimensionInfo<3>::raw_cell_iterator +Triangulation<3>::begin_raw (const unsigned int level) const { + return begin_raw_hex (level); +}; + + + +template <> +TriaDimensionInfo<3>::active_cell_iterator +Triangulation<3>::begin_active (const unsigned int level) const { + return begin_active_hex (level); +}; + + + +template <> +TriaDimensionInfo<3>::raw_cell_iterator +Triangulation<3>::last_raw () const { + return last_raw_hex (); +}; + + + +template <> +TriaDimensionInfo<3>::raw_cell_iterator +Triangulation<3>::last_raw (const unsigned int level) const { + return last_raw_hex (level); +}; + + + +template <> +TriaDimensionInfo<3>::cell_iterator +Triangulation<3>::last () const { + return last_hex (); +}; + + + +template <> +TriaDimensionInfo<3>::cell_iterator +Triangulation<3>::last (const unsigned int level) const { + return last_hex (level); +}; + + + +template <> +TriaDimensionInfo<3>::active_cell_iterator +Triangulation<3>::last_active () const { + return last_active_hex (); +}; + + + +template <> +TriaDimensionInfo<3>::active_cell_iterator +Triangulation<3>::last_active (const unsigned int level) const { + return last_active_hex (level); +}; + + + + + + + +template <> +TriaDimensionInfo<3>::raw_face_iterator +Triangulation<3>::begin_raw_face (const unsigned int level) const { + return begin_raw_quad (level); +}; + + + +template <> +TriaDimensionInfo<3>::face_iterator +Triangulation<3>::begin_face (const unsigned int level) const { + return begin_quad (level); +}; + + + +template <> +TriaDimensionInfo<3>::active_face_iterator +Triangulation<3>::begin_active_face (const unsigned int level) const { + return begin_active_quad (level); +}; + + + +template <> +TriaDimensionInfo<3>::raw_face_iterator +Triangulation<3>::end_face () const { + return end_quad (); +}; + + + +template <> +TriaDimensionInfo<3>::raw_face_iterator +Triangulation<3>::last_raw_face () const { + return last_raw_quad (); +}; + + + +template <> +TriaDimensionInfo<3>::raw_face_iterator +Triangulation<3>::last_raw_face (const unsigned int level) const { + return last_raw_quad (level); +}; + + + +template <> +TriaDimensionInfo<3>::face_iterator +Triangulation<3>::last_face () const { + return last_quad (); +}; + + + +template <> +TriaDimensionInfo<3>::face_iterator +Triangulation<3>::last_face (const unsigned int level) const { + return last_quad (level); +}; + + + +template <> +TriaDimensionInfo<3>::active_face_iterator +Triangulation<3>::last_active_face () const { + return last_active_quad (); +}; + + + +template <> +TriaDimensionInfo<3>::active_face_iterator +Triangulation<3>::last_active_face (const unsigned int level) const { + return last_active_quad (level); +}; + + + +#endif + + + + +template +typename TriaDimensionInfo::raw_line_iterator +Triangulation::begin_raw_line (unsigned int level) const { + Assert (levellines.lines.size() == 0) + return end_line (); + + return raw_line_iterator (const_cast*>(this), + level, + 0); +}; + + + + +template +typename TriaDimensionInfo::raw_quad_iterator +Triangulation::begin_raw_quad (unsigned int level) const { + Assert (levelquads.quads.size() == 0) + return end_quad(); + + return raw_quad_iterator (const_cast*>(this), + level, + 0); +}; + + + +template +typename TriaDimensionInfo::raw_hex_iterator +Triangulation::begin_raw_hex (unsigned int level) const { + Assert (levelhexes.hexes.size() == 0) + return end_hex(); + + return raw_hex_iterator (const_cast*>(this), + level, + 0); +}; + + + + +template +typename TriaDimensionInfo::line_iterator +Triangulation::begin_line (unsigned int level) const { + // level is checked in begin_raw + raw_line_iterator ri = begin_raw_line (level); + if (ri.state() != valid) + return ri; + while (ri->used() == false) + if ((++ri).state() != valid) + return ri; + return ri; }; @@ -1628,6 +2831,21 @@ Triangulation::begin_quad (unsigned int level) const { +template +typename TriaDimensionInfo::hex_iterator +Triangulation::begin_hex (unsigned int level) const { + // level is checked in begin_raw + raw_hex_iterator ri = begin_raw_hex (level); + if (ri.state() != valid) + return ri; + while (ri->used() == false) + if ((++ri).state() != valid) + return ri; + return ri; +}; + + + template typename TriaDimensionInfo::active_line_iterator @@ -1658,6 +2876,22 @@ Triangulation::begin_active_quad (unsigned int level) const { }; + +template +typename TriaDimensionInfo::active_hex_iterator +Triangulation::begin_active_hex (unsigned int level) const { + // level is checked in begin_raw + hex_iterator i = begin_hex (level); + if (i.state() != valid) + return i; + while (i->has_children()) + if ((++i).state() != valid) + return i; + return i; +}; + + + template typename TriaDimensionInfo::raw_line_iterator Triangulation::end_line () const { @@ -1679,6 +2913,16 @@ Triangulation::end_quad () const { +template +typename TriaDimensionInfo::raw_hex_iterator +Triangulation::end_hex () const { + return raw_hex_iterator (const_cast*>(this), + -1, + -1); +}; + + + template typename TriaDimensionInfo::raw_line_iterator Triangulation::last_raw_line (const unsigned int level) const { @@ -1693,8 +2937,6 @@ Triangulation::last_raw_line (const unsigned int level) const { - - template typename TriaDimensionInfo::raw_quad_iterator Triangulation::last_raw_quad (const unsigned int level) const { @@ -1710,6 +2952,21 @@ Triangulation::last_raw_quad (const unsigned int level) const { +template +typename TriaDimensionInfo::raw_hex_iterator +Triangulation::last_raw_hex (const unsigned int level) const { + Assert (levelhexes.hexes.size() != 0, + ExcEmptyLevel (level)); + + return raw_hex_iterator (const_cast*>(this), + level, + levels[level]->hexes.hexes.size()-1); +}; + + + template typename TriaDimensionInfo::raw_line_iterator Triangulation::last_raw_line () const { @@ -1727,6 +2984,14 @@ Triangulation::last_raw_quad () const { +template +typename TriaDimensionInfo::raw_hex_iterator +Triangulation::last_raw_hex () const { + return last_raw_hex (levels.size()-1); +}; + + + template typename TriaDimensionInfo::line_iterator Triangulation::last_line (const unsigned int level) const { @@ -1742,7 +3007,6 @@ Triangulation::last_line (const unsigned int level) const { - template typename TriaDimensionInfo::quad_iterator Triangulation::last_quad (const unsigned int level) const { @@ -1759,9 +3023,24 @@ Triangulation::last_quad (const unsigned int level) const { template -typename TriaDimensionInfo::line_iterator -Triangulation::last_line () const { - return last_line (levels.size()-1); +typename TriaDimensionInfo::hex_iterator +Triangulation::last_hex (const unsigned int level) const { + // level is checked in begin_raw + raw_hex_iterator ri = last_raw_hex(level); + if (ri->used()==true) + return ri; + while ((--ri).state() == valid) + if (ri->used()==true) + return ri; + return ri; +}; + + + +template +typename TriaDimensionInfo::line_iterator +Triangulation::last_line () const { + return last_line (levels.size()-1); }; @@ -1774,6 +3053,14 @@ Triangulation::last_quad () const { +template +typename TriaDimensionInfo::hex_iterator +Triangulation::last_hex () const { + return last_hex (levels.size()-1); +}; + + + template typename TriaDimensionInfo::active_line_iterator @@ -1805,6 +3092,21 @@ Triangulation::last_active_quad (const unsigned int level) const { +template +typename TriaDimensionInfo::active_hex_iterator +Triangulation::last_active_hex (const unsigned int level) const { + // level is checked in begin_raw + hex_iterator i = last_hex(level); + if (i->has_children()==false) + return i; + while ((--i).state() == valid) + if (i->has_children()==false) + return i; + return i; +}; + + + template typename TriaDimensionInfo::active_line_iterator @@ -1823,6 +3125,14 @@ Triangulation::last_active_quad () const { +template +typename TriaDimensionInfo::active_hex_iterator +Triangulation::last_active_hex () const { + return last_active_hex (levels.size()-1); +}; + + + template typename TriaDimensionInfo::raw_cell_iterator @@ -1947,6 +3257,36 @@ Triangulation::end_active_quad (const unsigned int level) const { +template +typename TriaDimensionInfo::raw_hex_iterator +Triangulation::end_raw_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + end_hex() : + begin_raw_hex (level+1)); +}; + + + +template +typename TriaDimensionInfo::hex_iterator +Triangulation::end_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + hex_iterator(end_hex()) : + begin_hex (level+1)); +}; + + + +template +typename TriaDimensionInfo::active_hex_iterator +Triangulation::end_active_hex (const unsigned int level) const { + return (level == levels.size()-1 ? + active_hex_iterator(end_hex()) : + begin_active_hex (level+1)); +}; + + + template @@ -2004,6 +3344,24 @@ unsigned int Triangulation<2>::n_active_cells (const unsigned int level) const { +#if deal_II_dimension == 3 + +template <> +unsigned int Triangulation<3>::n_cells (const unsigned int level) const { + return n_hexs (level); +}; + + + +template <> +unsigned int Triangulation<3>::n_active_cells (const unsigned int level) const { + return n_active_hexs (level); +}; + +#endif + + + template unsigned int Triangulation::n_lines () const { @@ -2063,16 +3421,6 @@ unsigned int Triangulation::n_active_lines (const unsigned int level) const -template -unsigned int Triangulation::n_quads () const { - unsigned int n=0; - for (unsigned int l=0; l @@ -2093,6 +3441,16 @@ unsigned int Triangulation<1>::n_active_quads (const unsigned int) const { #endif +template +unsigned int Triangulation::n_quads () const { + unsigned int n=0; + for (unsigned int l=0; l unsigned int Triangulation::n_quads (const unsigned int level) const { if (levels[level]->quads.quads.size() == 0) @@ -2103,7 +3461,7 @@ unsigned int Triangulation::n_quads (const unsigned int level) const { quad_iterator quad = begin_quad (level), endc = (level == levels.size()-1 ? quad_iterator(end_quad()) : - begin (level+1)); + begin_quad (level+1)); unsigned int n=0; for (; quad!=endc; ++quad) ++n; @@ -2141,6 +3499,101 @@ unsigned int Triangulation::n_active_quads (const unsigned int level) const +#if deal_II_dimension < 3 + +template <> +unsigned int Triangulation<1>::n_hexs (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +unsigned int Triangulation<1>::n_active_hexs (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +unsigned int Triangulation<2>::n_hexs (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + + + +template <> +unsigned int Triangulation<2>::n_active_hexs (const unsigned int) const { + Assert (false, ExcFunctionNotUseful()); + return 0; +}; + +#endif + + + + +template +unsigned int Triangulation::n_hexs () const { + unsigned int n=0; + for (unsigned int l=0; l +unsigned int Triangulation::n_hexs (const unsigned int level) const { + if (levels[level]->hexes.hexes.size() == 0) + return 0; + + // only evaluate begin_/end_hex if there + // are hexs. + hex_iterator hex = begin_hex (level), + endc = (level == levels.size()-1 ? + hex_iterator(end_hex()) : + begin_hex (level+1)); + unsigned int n=0; + for (; hex!=endc; ++hex) + ++n; + return n; +}; + + + +template +unsigned int Triangulation::n_active_hexs () const { + unsigned int n=0; + for (unsigned int l=0; l +unsigned int Triangulation::n_active_hexs (const unsigned int level) const { + if (levels[level]->hexes.hexes.size() == 0) + return 0; + + // only evaluate begin_/end_hex if there + // are hexs. + active_hex_iterator hex = begin_active_hex (level), + endc = (level == levels.size()-1 ? + active_hex_iterator(end_hex()) : + begin_active_hex (level+1)); + unsigned int n=0; + for (; hex!=endc; ++hex) + ++n; + return n; +}; + + + template unsigned int Triangulation::n_levels () const { @@ -2275,6 +3728,49 @@ void Triangulation<2>::print_gnuplot (ostream &out, #endif +#if deal_II_dimension == 3 + +template <> +void Triangulation<3>::print_gnuplot (ostream &out, + const active_cell_iterator & cell) const { + AssertThrow (out, ExcIO()); + + // front face + out << cell->vertex(0) << " " << cell->level() << endl + << cell->vertex(1) << " " << cell->level() << endl + << cell->vertex(2) << " " << cell->level() << endl + << cell->vertex(3) << " " << cell->level() << endl + << cell->vertex(0) << " " << cell->level() << endl + << endl; + // back face + out << cell->vertex(4) << " " << cell->level() << endl + << cell->vertex(5) << " " << cell->level() << endl + << cell->vertex(6) << " " << cell->level() << endl + << cell->vertex(7) << " " << cell->level() << endl + << cell->vertex(4) << " " << cell->level() << endl + << endl; + + // now for the four connecting lines + out << cell->vertex(0) << " " << cell->level() << endl + << cell->vertex(4) << " " << cell->level() << endl + << endl; + out << cell->vertex(1) << " " << cell->level() << endl + << cell->vertex(5) << " " << cell->level() << endl + << endl; + out << cell->vertex(2) << " " << cell->level() << endl + << cell->vertex(6) << " " << cell->level() << endl + << endl; + out << cell->vertex(3) << " " << cell->level() << endl + << cell->vertex(7) << " " << cell->level() << endl + << endl; + + AssertThrow (out, ExcIO()); +}; + +#endif + + + template void Triangulation::refine (const dVector &criteria, @@ -2712,9 +4208,9 @@ void Triangulation<2>::execute_refinement () { // for all neighbors of // this cell - for (unsigned int nb=0; nb<4; ++nb) + for (unsigned int nb=0; nb::faces_per_cell; ++nb) { - cell_iterator neighbor = acell->neighbor(nb); + const cell_iterator neighbor = acell->neighbor(nb); // if cell is at boundary if (neighbor.state() != valid) { @@ -2799,7 +4295,7 @@ void Triangulation<2>::execute_refinement () { levels[level+1]-> TriangulationLevel<1>::reserve_space (needed_lines); // reserve space for 4*flagged_cells - // new lines on the next higher + // new quads on the next higher // level levels[level+1]-> TriangulationLevel<2>::reserve_space (4*flagged_cells); @@ -3222,30 +4718,1235 @@ void Triangulation<2>::execute_refinement () { subcells[0]->set_neighbor (2, subcells[3]); subcells[0]->set_neighbor (3, neighbors[7]); - subcells[1]->set_neighbor (0, neighbors[1]); - subcells[1]->set_neighbor (1, neighbors[2]); - subcells[1]->set_neighbor (2, subcells[2]); - subcells[1]->set_neighbor (3, subcells[0]); + subcells[1]->set_neighbor (0, neighbors[1]); + subcells[1]->set_neighbor (1, neighbors[2]); + subcells[1]->set_neighbor (2, subcells[2]); + subcells[1]->set_neighbor (3, subcells[0]); + + subcells[2]->set_neighbor (0, subcells[1]); + subcells[2]->set_neighbor (1, neighbors[3]); + subcells[2]->set_neighbor (2, neighbors[4]); + subcells[2]->set_neighbor (3, subcells[3]); + + subcells[3]->set_neighbor (0, subcells[0]); + subcells[3]->set_neighbor (1, subcells[2]); + subcells[3]->set_neighbor (2, neighbors[5]); + subcells[3]->set_neighbor (3, neighbors[6]); + + subcells[0]->set_material_id (cell->material_id()); + subcells[1]->set_material_id (cell->material_id()); + subcells[2]->set_material_id (cell->material_id()); + subcells[3]->set_material_id (cell->material_id()); + }; + }; +#ifdef DEBUG + for (unsigned int level=0; levelmonitor_memory (2); + + // check whether really all refinement flags + // are reset (also of previously non-active + // cells which we may not have touched. If + // the refinement flag of a non-active cell + // is set, something went wrong since the + // cell-accessors should have caught this) + cell_iterator cell = begin(), + endc = end(); + while (cell != endc) + Assert (!(cell++)->refine_flag_set(), ExcInternalError ()); +#endif +}; + +#endif + + + +#if deal_II_dimension == 3 + +template <> +void Triangulation<3>::execute_refinement () { + const unsigned int dim = 3; + + // do some grid smoothing + prepare_refinement (); + + // check whether a new level is needed + // we have to check for this on the + // highest level only (on this, all + // used cells are also active, so we + // only have to check for this) + if (true) + { + raw_cell_iterator cell = begin_active (levels.size()-1), + endc = end(); + for (; cell != endc; ++cell) + if (cell->used()) + if (cell->refine_flag_set()) + { + levels.push_back (new TriangulationLevel); + break; + }; + }; + + + // first clear user flags for + // quads and lines; we're gonna + // use them to flag which lines + // and quads need refinement + for (line_iterator line=begin_line(); line!=end_line(); ++line) + line->clear_user_flag(); + for (quad_iterator quad=begin_quad(); quad!=end_quad(); ++quad) + quad->clear_user_flag(); + + + + // check how much space is needed + // on every level + // we need not check the highest + // level since either + // - on the highest level no cells + // are flagged for refinement + // - there are, but prepare_refinement + // added another empty level which + // then is the highest level + unsigned int needed_vertices = 0; + for (int level=levels.size()-2; level>=0; --level) + { + // count number of flagged cells on + // this level and compute how many + // new vertices and new lines will + // be needed + unsigned int flagged_cells = 0; + unsigned int needed_lines = 0; + unsigned int needed_quads = 0; + + active_cell_iterator acell = begin_active(level), + aendc = begin_active(level+1); + for (; acell!=aendc; ++acell) + if (acell->refine_flag_set()) + { + ++flagged_cells; + + // new vertex at center of cell + // is needed in any case + ++needed_vertices; + // also the six inner lines + needed_lines += 6; + // and the 12 inner quads + needed_quads += 12; + + // mark all faces and lines for + // refinement; checking locally + // whether the neighbor would + // also like to refine them is + // rather difficult for lines + // so we only flag them and after + // visiting all cells, we decide + // which lines need refinement; + // same for the quads + for (unsigned int face=0; face::faces_per_cell; + ++face) + { + face_iterator aface = acell->face(face); + + if (aface->has_children() == false) + { + aface->set_user_flag (); + for (unsigned int line=0; line<4; ++line) + if (aface->line(line)->has_children() == false) + aface->line(line)->set_user_flag (); + }; + }; + }; + + // now count the quads and lines which + // were flagged for refinement + for (quad_iterator quad=begin_quad(); quad!=end_quad(); ++quad) + if (quad->user_flag_set()) + { + Assert (quad->has_children() == false, ExcInternalError()); + needed_quads += 4; + needed_lines += 4; + needed_vertices += 1; + }; + + for (line_iterator line=begin_line(); line!=end_line(); ++line) + if (line->user_flag_set()) + { + Assert (line->has_children() == false, ExcInternalError()); + needed_lines += 2; + needed_vertices += 1; + }; + + + // count number of used cells on + // the next higher level + const unsigned int used_cells + = count_if (levels[level+1]->quads.used.begin(), + levels[level+1]->quads.used.end(), + bind2nd (equal_to(), true)); + + + // reserve space for the used_cells + // cells already existing on the next + // higher level as well as for the + // 8*flagged_cells that will be created + // on that level + levels[level+1]-> + TriangulationLevel<0>::reserve_space (used_cells+8*flagged_cells, 3); + // reserve space for needed_lines + // new lines + levels[level+1]-> + TriangulationLevel<1>::reserve_space (needed_lines); + // reserve space for needed_quads + // new quads + levels[level+1]-> + TriangulationLevel<2>::reserve_space (needed_quads); + // reserve space for 8*flagged_cells + // new hexes on the next higher + // level + levels[level+1]-> + TriangulationLevel<3>::reserve_space (8*flagged_cells); + }; + + // add to needed vertices how + // many vertices are already in use + needed_vertices += count_if (vertices_used.begin(), vertices_used.end(), + bind2nd (equal_to(), true)); + // if we need more vertices: create them, + // if not: leave the array as is, since + // shrinking is not really possible because + // some of the vertices at the end may be + // in use + if (needed_vertices > vertices.size()) + { + vertices.resize (needed_vertices, Point()); + vertices_used.resize (needed_vertices, false); + }; + + + /////////////////////////////////////////// + // Do refinement on every level + // + // To make life a bit easier, we first + // refine those lines and quads that were + // flagged for refinement and then compose + // the newly to be created cells. + // + // index of next unused vertex + unsigned int next_unused_vertex = 0; + + // first for lines + for (unsigned int level=0; level!=levels.size()-1; ++level) + { + // only active objects can be refined + // further; remember that we won't + // operate on the finest level, so + // begin_*(level+1) is allowed + active_line_iterator line = begin_active_line(level), + endl = begin_active_line(level+1); + raw_line_iterator next_unused_line = begin_raw_line (level+1); + + for (; line!=endl; ++line) + if (line->user_flag_set()) + { + // this line needs to be refined + + // find the next unused vertex + // and set it appropriately + while (vertices_used[next_unused_vertex] == true) + ++next_unused_vertex; + Assert (next_unused_vertex < vertices.size(), + ExcTooFewVerticesAllocated()); + vertices_used[next_unused_vertex] = true; + + if (line->at_boundary()) + { + const Boundary::PointArray surrounding_points + = { &line->vertex(0), + &line->vertex(0), + &line->vertex(1), + &line->vertex(1) + }; + vertices[next_unused_vertex] + = boundary->in_between (surrounding_points); + } + else + vertices[next_unused_vertex] + = (line->vertex(0) + line->vertex(1)) / 2; + + // now that we created the right + // point, make up the two child + // lines + // (++ takes care of the end of + // the vector) + while (next_unused_line->used() == true) + ++next_unused_line; + // there should always be two + // consecutive unused lines, such + // that the children of a line + // will be consecutive. + // then set the child pointer of + // the present line + line->set_children (next_unused_line->index()); + + // set the two new lines + raw_line_iterator children[2] = { next_unused_line, + ++next_unused_line }; + // some tests; if any of the + // iterators should be invalid, + // then already dereferencing + // will fail + Assert (children[0]->used() == false, ExcCellShouldBeUnused()); + Assert (children[1]->used() == false, ExcCellShouldBeUnused()); + + children[0]->set (Line(line->vertex_index(0), + next_unused_vertex)); + children[1]->set (Line(next_unused_vertex, + line->vertex_index(1))); + + children[0]->set_used_flag(); + children[1]->set_used_flag(); + children[0]->clear_children(); + children[1]->clear_children(); + children[0]->clear_user_pointer(); + children[1]->clear_user_pointer(); + children[0]->clear_user_flag(); + children[1]->clear_user_flag(); + + children[0]->set_boundary_indicator (line->boundary_indicator()); + children[1]->set_boundary_indicator (line->boundary_indicator()); + + // finally clear flag indicating + // the need for refinement + line->clear_user_flag (); + }; + }; + + + /////////////////////////////////////// + // now refine marked quads + for (unsigned int level=0; level!=levels.size()-1; ++level) + { + // only active objects can be refined + // further; remember that we won't + // operate on the finest level, so + // begin_*(level+1) is allowed + active_quad_iterator quad = begin_active_quad(level), + endq = begin_active_quad(level+1); + raw_line_iterator next_unused_line = begin_raw_line (level+1); + raw_quad_iterator next_unused_quad = begin_raw_quad (level+1); + + for (; quad!=endq; ++quad) + if (quad->user_flag_set()) + { + // this quad needs to be refined + + // find the next unused vertex + // and set it appropriately + while (vertices_used[next_unused_vertex] == true) + ++next_unused_vertex; + Assert (next_unused_vertex < vertices.size(), + ExcTooFewVerticesAllocated()); + vertices_used[next_unused_vertex] = true; + + if (quad->at_boundary()) + { + const Boundary::PointArray surrounding_points + = { &quad->vertex(0), + &quad->vertex(1), + &quad->vertex(2), + &quad->vertex(3) + }; + vertices[next_unused_vertex] + = boundary->in_between (surrounding_points); + } + else + vertices[next_unused_vertex] + = (quad->vertex(0) + quad->vertex(1) + + quad->vertex(2) + quad->vertex(3)) / 4; + + // now that we created the right + // point, make up the four + // lines interior to the quad + // (++ takes care of the end of + // the vector) + raw_line_iterator new_lines[4]; + + for (unsigned int i=0; i<4; ++i) + { + while (next_unused_line->used() == true) + ++next_unused_line; + new_lines[i] = next_unused_line; + ++next_unused_line; + + Assert (new_lines[i]->used() == false, ExcCellShouldBeUnused()); + }; + + // set the data of the four lines. + // first collect the indices of + // the five vertices: + // *--2--* + // | | | + // 3--4--1 + // | | | + // *--0--* + // the lines are numbered as follows: + // *--*--* + // | 2 | + // *3-*-1* + // | 0 | + // *--*--* + const unsigned int vertex_indices[5] + = { quad->line(0)->child(0)->vertex_index(1), + quad->line(1)->child(0)->vertex_index(1), + quad->line(2)->child(0)->vertex_index(1), + quad->line(3)->child(0)->vertex_index(1), + next_unused_vertex + }; + + new_lines[0]->set (Line(vertex_indices[0], vertex_indices[4])); + new_lines[1]->set (Line(vertex_indices[4], vertex_indices[1])); + new_lines[2]->set (Line(vertex_indices[4], vertex_indices[2])); + new_lines[3]->set (Line(vertex_indices[3], vertex_indices[4])); + + for (unsigned int i=0; i<4; ++i) + { + new_lines[i]->set_used_flag(); + new_lines[i]->clear_user_flag(); + new_lines[i]->clear_user_pointer(); + new_lines[i]->clear_children(); + new_lines[i]->set_boundary_indicator(quad->boundary_indicator()); + }; + + + + // now for the quads. again, first + // collect some data about the + // indices of the lines, with + // the following numbering: + // *5-*-4* + // 6 10 3 + // *11*-9* + // 7 8 2 + // *0-*-1* + const unsigned int line_indices[12] + = { quad->line(0)->child(0)->index(), + quad->line(0)->child(1)->index(), + quad->line(1)->child(0)->index(), + quad->line(1)->child(1)->index(), + quad->line(2)->child(1)->index(), + quad->line(2)->child(0)->index(), + quad->line(3)->child(1)->index(), + quad->line(3)->child(0)->index(), + new_lines[0]->index(), + new_lines[1]->index(), + new_lines[2]->index(), + new_lines[3]->index() + }; + + // find some space for the four + // newly to be created quads. + // note that there should + // always be four consecutive + // free slots for them + raw_quad_iterator new_quads[4]; + + while (next_unused_quad->used() == true) + ++next_unused_quad; + + new_quads[0] = next_unused_quad; + Assert (new_quads[0]->used() == false, ExcCellShouldBeUnused()); + + ++next_unused_quad; + new_quads[1] = next_unused_quad; + Assert (new_quads[1]->used() == false, ExcCellShouldBeUnused()); + + ++next_unused_quad; + new_quads[2] = next_unused_quad; + Assert (new_quads[2]->used() == false, ExcCellShouldBeUnused()); + + ++next_unused_quad; + new_quads[3] = next_unused_quad; + Assert (new_quads[3]->used() == false, ExcCellShouldBeUnused()); + + // note these quads as children + // to the present one + quad->set_children (new_quads[0]->index()); + + new_quads[0]->set (Quad(line_indices[0], + line_indices[8], + line_indices[11], + line_indices[7])); + new_quads[1]->set (Quad(line_indices[1], + line_indices[2], + line_indices[9], + line_indices[8])); + new_quads[2]->set (Quad(line_indices[9], + line_indices[3], + line_indices[4], + line_indices[10])); + new_quads[3]->set (Quad(line_indices[11], + line_indices[10], + line_indices[5], + line_indices[6])); + for (unsigned int i=0; i<4; ++i) + { + new_quads[i]->set_used_flag(); + new_quads[i]->clear_user_flag(); + new_quads[i]->clear_user_pointer(); + new_quads[i]->clear_children(); + new_quads[i]->set_boundary_indicator (quad->boundary_indicator()); + }; + + // finally clear flag indicating + // the need for refinement + quad->clear_user_flag (); + }; + }; + + + /////////////////////////////////// + // Now, finally, set up the new + // cells + for (unsigned int level=0; level!=levels.size()-1; ++level) + { + // only active objects can be refined + // further; remember that we won't + // operate on the finest level, so + // begin_*(level+1) is allowed + active_hex_iterator hex = begin_active_hex(level), + endh = begin_active_hex(level+1); + raw_line_iterator next_unused_line = begin_raw_line (level+1); + raw_quad_iterator next_unused_quad = begin_raw_quad (level+1); + raw_hex_iterator next_unused_hex = begin_raw_hex (level+1); + + for (; hex!=endh; ++hex) + if (hex->refine_flag_set()) + { + // this hex needs to be refined + + // clear flag indicating + // the need for refinement. do it + // here already, since we can't + // do it anymore once the cell + // has children + hex->clear_refine_flag (); + + // find the next unused vertex + // and set it appropriately + while (vertices_used[next_unused_vertex] == true) + ++next_unused_vertex; + Assert (next_unused_vertex < vertices.size(), + ExcTooFewVerticesAllocated()); + vertices_used[next_unused_vertex] = true; + + // the new vertex is definitely in + // the interior, so we need not + // worry about the boundary. + // let it be the average of + // the 26 vertices surrounding + // it + vertices[next_unused_vertex] = Point(); + // first add corners of hex + for (unsigned int vertex=0; + vertex::vertices_per_cell; ++vertex) + vertices[next_unused_vertex] += hex->vertex(vertex); + // now add center of lines + for (unsigned int line=0; line<12; ++line) + vertices[next_unused_vertex] += hex->line(line)->child(0)->vertex(1); + // finally add centers of faces + for (unsigned int face=0; + face::faces_per_cell; ++face) + vertices[next_unused_vertex] += hex->face(face)->child(0)->vertex(2); + + // compute average + vertices[next_unused_vertex] /= 26; + + + // now that we created the right + // point, make up the six + // lines interior to the quad + // (++ takes care of the end of + // the vector) + raw_line_iterator new_lines[6]; + + for (unsigned int i=0; i<6; ++i) + { + while (next_unused_line->used() == true) + ++next_unused_line; + new_lines[i] = next_unused_line; + ++next_unused_line; + + Assert (new_lines[i]->used() == false, ExcCellShouldBeUnused()); + }; + + // set the data of the six lines. + // first collect the indices of + // the seven vertices (consider + // the two planes to be crossed + // to form the planes cutting + // the hex in two vertically + // and horizontally) + // *--2--* *--5--* + // / / / | | | + // 3--6--1 3--6--1 + // / / / | | | + // *--0--* *--4--* + // the lines are numbered as follows: + // *--*--* *--*--* + // / 2 / | 5 | + // *3-*-1* *3-*-1* + // / 0 / | 4 | + // *--*--* *--*--* + const unsigned int vertex_indices[7] + = { hex->face(0)->child(0)->vertex_index(2), + hex->face(3)->child(0)->vertex_index(2), + hex->face(1)->child(0)->vertex_index(2), + hex->face(5)->child(0)->vertex_index(2), + hex->face(2)->child(0)->vertex_index(2), + hex->face(4)->child(0)->vertex_index(2), + next_unused_vertex + }; + + new_lines[0]->set (Line(vertex_indices[0], vertex_indices[6])); + new_lines[1]->set (Line(vertex_indices[6], vertex_indices[1])); + new_lines[2]->set (Line(vertex_indices[6], vertex_indices[2])); + new_lines[3]->set (Line(vertex_indices[3], vertex_indices[6])); + new_lines[4]->set (Line(vertex_indices[4], vertex_indices[6])); + new_lines[5]->set (Line(vertex_indices[6], vertex_indices[5])); + + for (unsigned int i=0; i<6; ++i) + { + new_lines[i]->set_used_flag(); + new_lines[i]->clear_user_flag(); + new_lines[i]->clear_user_pointer(); + new_lines[i]->clear_children(); + // interior line + new_lines[i]->set_boundary_indicator(255); + }; + + + + // now for the quads. again, first + // collect some data about the + // indices of the lines, with + // the following numbering: + // front plane *---*---* + // | 2 | + // *3--*--1* + // | 0 | + // *---*---* + // + // middle plane *9--*--8* + // 10 14 7 + // *15-*-13* + // 11 12 6 + // *4--*--5* + // + // back plane *---*---* + // | 18 | + // *19-*-17* + // | 16 | + // *---*---* + // + // left plane (the left-to-right + // planes are displayed twice each, + // for better readability of the + // indices; the left part is + // already determined by the + // pictures above) + // * * + // /| /| + // * | * | + // /| * /| * + // *10/| * |21 + // | * | | * | + // |/| * |20 * + // *11/ * |/ + // | * | * + // |/ |/ + // * * + // + // middle plane + // * * + // /| 23| + // * 18 * | + // /| * 22| * + // *14/16 * |25 + // | * | | * | + // 2/| * |24 * + // *12/ * |27 + // | * | * + // 0/ |26 + // * * + // + // + // right plane + // * * + // /| /| + // * | * | + // /| * /| * + // * 6/| * |29 + // | * | | * | + // |/| * |28 * + // * 7/ * |/ + // | * | * + // |/ |/ + // * * + + const unsigned int line_indices[30] + = { + hex->face(0)->child(0)->line_index(1), //0 + hex->face(0)->child(1)->line_index(2), //1 + hex->face(0)->child(2)->line_index(3), //2 + hex->face(0)->child(3)->line_index(0), //3 + + hex->face(2)->child(0)->line_index(2), //4 + hex->face(2)->child(1)->line_index(2), //5 + hex->face(3)->child(0)->line_index(1), //6 + hex->face(3)->child(3)->line_index(1), //7 + + hex->face(4)->child(1)->line_index(2), //8 + hex->face(4)->child(0)->line_index(2), //9 + hex->face(5)->child(3)->line_index(1), //10 + hex->face(5)->child(0)->line_index(1), //11 + + new_lines[4]->index(), //12 + new_lines[1]->index(), //13 + new_lines[5]->index(), //14 + new_lines[3]->index(), //15 + + hex->face(1)->child(0)->line_index(1), //16 + hex->face(1)->child(1)->line_index(2), //17 + hex->face(1)->child(2)->line_index(3), //18 + hex->face(1)->child(3)->line_index(0), //19 + + hex->face(5)->child(0)->line_index(2), //20 + hex->face(5)->child(1)->line_index(2), //21 + hex->face(4)->child(0)->line_index(1), //22 + hex->face(4)->child(3)->line_index(1), //23 + + new_lines[0]->index(), //24 + new_lines[2]->index(), //25 + hex->face(2)->child(0)->line_index(1), //26 + hex->face(2)->child(3)->line_index(1), //27 + + hex->face(3)->child(0)->line_index(2), //28 + hex->face(3)->child(1)->line_index(2) //29 + }; + + // find some space for the 12 + // newly to be created quads. + raw_quad_iterator new_quads[12]; + + for (unsigned int i=0; i<12; ++i) + { + while (next_unused_quad->used() == true) + ++next_unused_quad; + new_quads[i] = next_unused_quad; + ++next_unused_quad; + + Assert (new_quads[i]->used() == false, ExcCellShouldBeUnused()); + }; + + // set up the 12 quads, numbered + // as follows (shown are the three + // planes cutting the hex in two): + // + // *-----*-----* + // | 3 | 2 | + // | | | + // *-----*-----* + // | | | + // | 0 | 1 | + // *-----*-----* + // + // *----*----* + // / 7 / 6 / + // *----*----* + // / 4 / 5 / + // *----*----* + // + // + // * + // /| + // / | + // *10| + // /| * + // / | /| + // * |/ | + // |11* | + // | /| 9* + // |/ | / + // * |/ + // |8 * + // | / + // |/ + // * + new_quads[0]->set (Quad(line_indices[4], + line_indices[12], + line_indices[15], + line_indices[11])); + new_quads[1]->set (Quad(line_indices[5], + line_indices[6], + line_indices[13], + line_indices[12])); + new_quads[2]->set (Quad(line_indices[13], + line_indices[7], + line_indices[8], + line_indices[14])); + new_quads[3]->set (Quad(line_indices[15], + line_indices[14], + line_indices[9], + line_indices[10])); + new_quads[4]->set (Quad(line_indices[3], + line_indices[24], + line_indices[15], + line_indices[20])); + new_quads[5]->set (Quad(line_indices[1], + line_indices[28], + line_indices[13], + line_indices[24])); + new_quads[6]->set (Quad(line_indices[13], + line_indices[29], + line_indices[17], + line_indices[25])); + new_quads[7]->set (Quad(line_indices[15], + line_indices[25], + line_indices[19], + line_indices[21])); + new_quads[8]->set (Quad(line_indices[26], + line_indices[12], + line_indices[24], + line_indices[0])); + new_quads[9]->set (Quad(line_indices[27], + line_indices[16], + line_indices[25], + line_indices[12])); + new_quads[10]->set (Quad(line_indices[25], + line_indices[18], + line_indices[23], + line_indices[14])); + new_quads[11]->set (Quad(line_indices[24], + line_indices[14], + line_indices[22], + line_indices[2])); + for (unsigned int i=0; i<12; ++i) + { + new_quads[i]->set_used_flag(); + new_quads[i]->clear_user_flag(); + new_quads[i]->clear_user_pointer(); + new_quads[i]->clear_children(); + // interior quad + new_quads[i]->set_boundary_indicator (255); + }; + + + ///////////////////////////////// + // create the eight new hexes + // + // again first collect some data. + // here, we need the indices of a + // whole lotta quads. they are + // numbered as follows: + // + // planes in the interior of + // the old hex: + // *-----*-----* + // | 3 | 2 | + // | | | + // *-----*-----* + // | | | + // | 0 | 1 | + // *-----*-----* + // + // *----*----* + // / 7 / 6 / + // *----*----* + // / 4 / 5 / + // *----*----* + // + // + // * + // /| + // / | + // *10| + // /| * + // / | /| + // * |/ | + // |11* | + // | /| 9* + // |/ | / + // * |/ + // |8 * + // | / + // |/ + // * + // + // children of the faces of the + // old hex + // *-------* *-------* + // /|19 18| /31 30/| + // 34| | / /26 + // / | | /28 29/ | + // * |16 17| *-------*27 | + // 3533*-------* |15 14| 25* + // | /23 22/ | | / + // 32/ / | |24 + // |/20 21/ |12 13|/ + // *-------* *-------* + const unsigned int quad_indices[36] + = { + new_quads[0]->index(), //0 + new_quads[1]->index(), + new_quads[2]->index(), + new_quads[3]->index(), + new_quads[4]->index(), + new_quads[5]->index(), + new_quads[6]->index(), + new_quads[7]->index(), + new_quads[8]->index(), + new_quads[9]->index(), + new_quads[10]->index(), + new_quads[11]->index(), //11 + + hex->face(0)->child_index(0), //12 + hex->face(0)->child_index(1), + hex->face(0)->child_index(2), + hex->face(0)->child_index(3), + + hex->face(1)->child_index(0), //16 + hex->face(1)->child_index(1), + hex->face(1)->child_index(2), + hex->face(1)->child_index(3), + + hex->face(2)->child_index(0), //20 + hex->face(2)->child_index(1), + hex->face(2)->child_index(2), + hex->face(2)->child_index(3), + + hex->face(3)->child_index(0), //24 + hex->face(3)->child_index(1), + hex->face(3)->child_index(2), + hex->face(3)->child_index(3), + + hex->face(4)->child_index(0), //28 + hex->face(4)->child_index(1), + hex->face(4)->child_index(2), + hex->face(4)->child_index(3), + + hex->face(5)->child_index(0), //32 + hex->face(5)->child_index(1), + hex->face(5)->child_index(2), + hex->face(5)->child_index(3) + }; + + + // find some space for the eight + // newly to be created hexes. + // note that there should + // always be eight consecutive + // free slots for them + raw_hex_iterator new_hexes[8]; + + while (next_unused_hex->used() == true) + ++next_unused_hex; + + for (unsigned int i=0; i<8; ++i) + { + new_hexes[i] = next_unused_hex; + Assert (new_hexes[i]->used() == false, ExcCellShouldBeUnused()); + ++next_unused_hex; + }; + + // note these hexes as children + // to the present cell + hex->set_children (new_hexes[0]->index()); + + // front children + new_hexes[0]->set (Hexahedron(quad_indices[12], + quad_indices[0], + quad_indices[20], + quad_indices[8], + quad_indices[4], + quad_indices[32])); + new_hexes[1]->set (Hexahedron(quad_indices[13], + quad_indices[1], + quad_indices[21], + quad_indices[24], + quad_indices[5], + quad_indices[8])); + new_hexes[2]->set (Hexahedron(quad_indices[14], + quad_indices[2], + quad_indices[5], + quad_indices[27], + quad_indices[29], + quad_indices[11])); + new_hexes[3]->set (Hexahedron(quad_indices[15], + quad_indices[3], + quad_indices[4], + quad_indices[11], + quad_indices[28], + quad_indices[35])); + + // back children + new_hexes[4]->set (Hexahedron(quad_indices[0], + quad_indices[16], + quad_indices[23], + quad_indices[9], + quad_indices[7], + quad_indices[33])); + new_hexes[5]->set (Hexahedron(quad_indices[1], + quad_indices[17], + quad_indices[22], + quad_indices[25], + quad_indices[6], + quad_indices[9])); + new_hexes[6]->set (Hexahedron(quad_indices[2], + quad_indices[18], + quad_indices[6], + quad_indices[26], + quad_indices[30], + quad_indices[10])); + new_hexes[7]->set (Hexahedron(quad_indices[3], + quad_indices[19], + quad_indices[7], + quad_indices[10], + quad_indices[31], + quad_indices[34])); + + + for (unsigned int i=0; i<8; ++i) + { + new_hexes[i]->set_used_flag(); + new_hexes[i]->clear_user_flag(); + new_hexes[i]->clear_user_pointer(); + new_hexes[i]->clear_children(); + // inherit material properties + new_hexes[i]->set_material_id (hex->material_id()); + }; + - subcells[2]->set_neighbor (0, subcells[1]); - subcells[2]->set_neighbor (1, neighbors[3]); - subcells[2]->set_neighbor (2, neighbors[4]); - subcells[2]->set_neighbor (3, subcells[3]); + ///////////////////////////////// + // now the only thing still to be + // done is setting neighborship + // information. + // + // to do so, first collect the + // iterators pointing to + // the 6x4 neighbors of this + // cell. + // + // note that in case the + // neighboring cell is not refined, + // the neighbor iterators point + // to the common moter cell. the + // same applies if there is no + // neighbor: the iterators are + // past the end + cell_iterator neighbor_cells[6][4]; + for (unsigned int face=0; face::faces_per_cell; + ++face) + { + cell_iterator neighbor = hex->neighbor(face); + + // if no neighbor + if (neighbor.state() != valid) + for (unsigned int child_face=0; + child_face::subfaces_per_face; + ++child_face) + neighbor_cells[face][child_face] = neighbor; + + else + // neighbor exists + { + // neighbor's level must + // not be higher (else + // something went wrong + // when constructing + // either of the two + // cells) and not + // lower since then + // this cell should not + // have been refined. + Assert (neighbor->level() == hex->level(), + ExcInternalError()); + + // now there are two + // possibilities: either + // the nieghbor has no + // children or it has + // children. these + // must be terminal then. + if (!neighbor->has_children()) + for (unsigned int child_face=0; + child_face::subfaces_per_face; + ++child_face) + neighbor_cells[face][child_face] = neighbor; + else + // neighbor has + // children; now it's + // getting complicated + { + // first find the face + // of the neighbor + // adjacent to which + // the present cell is + unsigned int nb_nb; + for (nb_nb=0; nb_nb::faces_per_cell; + ++nb_nb) + if (neighbor->neighbor(nb_nb) == hex) + break; + Assert (nb_nb::faces_per_cell, + ExcInternalError()); + + // now the four child + // cells of neighbor + // adjacent to the + // present cell can + // be obtained by a + // function of + // GeometryInfo + for (unsigned int c=0; + c::subfaces_per_face; ++c) + { + neighbor_cells[face][c] + = neighbor->child(GeometryInfo::child_cell_on_face(nb_nb, c)); + + Assert (neighbor_cells[face][c].state() == valid, + ExcInternalError()); + Assert (!neighbor_cells[face][c]->has_children(), + ExcInternalError()); + }; + }; + }; + }; - subcells[3]->set_neighbor (0, subcells[0]); - subcells[3]->set_neighbor (1, subcells[2]); - subcells[3]->set_neighbor (2, neighbors[5]); - subcells[3]->set_neighbor (3, neighbors[6]); + // now we've got all neighbors, so set + // them in the new cells + new_hexes[0]->set_neighbor (0, neighbor_cells[0][0]); + new_hexes[0]->set_neighbor (1, new_hexes[4]); + new_hexes[0]->set_neighbor (2, neighbor_cells[2][0]); + new_hexes[0]->set_neighbor (3, new_hexes[1]); + new_hexes[0]->set_neighbor (4, new_hexes[3]); + new_hexes[0]->set_neighbor (5, neighbor_cells[5][0]); + + new_hexes[1]->set_neighbor (0, neighbor_cells[0][1]); + new_hexes[1]->set_neighbor (1, new_hexes[5]); + new_hexes[1]->set_neighbor (2, neighbor_cells[2][1]); + new_hexes[1]->set_neighbor (3, neighbor_cells[3][0]); + new_hexes[1]->set_neighbor (4, new_hexes[2]); + new_hexes[1]->set_neighbor (5, new_hexes[0]); + + new_hexes[2]->set_neighbor (0, neighbor_cells[0][2]); + new_hexes[2]->set_neighbor (1, new_hexes[6]); + new_hexes[2]->set_neighbor (2, new_hexes[1]); + new_hexes[2]->set_neighbor (3, neighbor_cells[3][3]); + new_hexes[2]->set_neighbor (4, neighbor_cells[4][1]); + new_hexes[2]->set_neighbor (5, new_hexes[3]); + + new_hexes[3]->set_neighbor (0, neighbor_cells[0][3]); + new_hexes[3]->set_neighbor (1, new_hexes[7]); + new_hexes[3]->set_neighbor (2, new_hexes[0]); + new_hexes[3]->set_neighbor (3, new_hexes[2]); + new_hexes[3]->set_neighbor (4, neighbor_cells[4][0]); + new_hexes[3]->set_neighbor (5, neighbor_cells[5][3]); + + new_hexes[4]->set_neighbor (0, new_hexes[0]); + new_hexes[4]->set_neighbor (1, neighbor_cells[1][0]); + new_hexes[4]->set_neighbor (2, neighbor_cells[2][3]); + new_hexes[4]->set_neighbor (3, new_hexes[5]); + new_hexes[4]->set_neighbor (4, new_hexes[7]); + new_hexes[4]->set_neighbor (5, neighbor_cells[5][1]); + + new_hexes[5]->set_neighbor (0, new_hexes[1]); + new_hexes[5]->set_neighbor (1, neighbor_cells[1][1]); + new_hexes[5]->set_neighbor (2, neighbor_cells[2][2]); + new_hexes[5]->set_neighbor (3, neighbor_cells[3][1]); + new_hexes[5]->set_neighbor (4, new_hexes[6]); + new_hexes[5]->set_neighbor (5, new_hexes[4]); + + new_hexes[6]->set_neighbor (0, new_hexes[2]); + new_hexes[6]->set_neighbor (1, neighbor_cells[1][2]); + new_hexes[6]->set_neighbor (2, new_hexes[5]); + new_hexes[6]->set_neighbor (3, neighbor_cells[3][2]); + new_hexes[6]->set_neighbor (4, neighbor_cells[4][2]); + new_hexes[6]->set_neighbor (5, new_hexes[7]); + + new_hexes[7]->set_neighbor (0, new_hexes[3]); + new_hexes[7]->set_neighbor (1, neighbor_cells[1][3]); + new_hexes[7]->set_neighbor (2, new_hexes[4]); + new_hexes[7]->set_neighbor (3, new_hexes[6]); + new_hexes[7]->set_neighbor (4, neighbor_cells[4][3]); + new_hexes[7]->set_neighbor (5, neighbor_cells[5][2]); + + + // now we need to set the neighbors + // neighborship information; this + // is only necessary if the + // neighboring cell is refined, + // i.e. is on the same level as + // the new children of the + // present cell + for (unsigned int nb=0; nb::faces_per_cell; ++nb) + for (unsigned int subface=0; + subface::subfaces_per_face; ++subface) + if ((neighbor_cells[nb][subface].state() == valid) && + (neighbor_cells[nb][subface]->level() == + hex->level()+1)) + { + // ok, the neighbor is + // a refined one and we + // need to set one of + // the new children as + // its neighbor + cell_iterator neighbor = neighbor_cells[nb][subface]; + + // find which neighbor + // pointer is to be reset; + // this pointer still + // points to the present + // cell + unsigned int face; + for (face=0; face::faces_per_cell; ++face) + if (neighbor->neighbor(face) == hex) + break; + + Assert (face::faces_per_cell, + ExcInternalError()); + + // now neighbor->neighbor(face) + // needs to be reset. do a + // large switch statement to + // find out which of the + // eight children is next + // to the face/subface we + // are presently at + static const unsigned int child_on_face_and_subface[6][4] + = { + {0, 1, 2, 3}, + {4, 5, 6, 7}, + {0, 1, 5, 4}, + {1, 5, 6, 2}, + {3, 2, 6, 7}, + {0, 4, 7, 3} + }; + neighbor->set_neighbor(face, + new_hexes[child_on_face_and_subface[nb][subface]]); + }; - subcells[0]->set_material_id (cell->material_id()); - subcells[1]->set_material_id (cell->material_id()); - subcells[2]->set_material_id (cell->material_id()); - subcells[3]->set_material_id (cell->material_id()); + + + // note that the refinement + // flag was already cleared at + // the beginning of this loop }; }; + + #ifdef DEBUG for (unsigned int level=0; levelmonitor_memory (2); + levels[level]->monitor_memory (3); // check whether really all refinement flags // are reset (also of previously non-active @@ -3253,6 +5954,16 @@ void Triangulation<2>::execute_refinement () { // the refinement flag of a non-active cell // is set, something went wrong since the // cell-accessors should have caught this) + line_iterator line = begin_line(), + endl = end_line(); + while (line != endl) + Assert (!(line++)->user_flag_set(), ExcInternalError ()); + + quad_iterator quad = begin_quad(), + endq = end_quad(); + while (quad != endq) + Assert (!(quad++)->user_flag_set(), ExcInternalError ()); + cell_iterator cell = begin(), endc = end(); while (cell != endc) @@ -3260,6 +5971,8 @@ void Triangulation<2>::execute_refinement () { #endif }; + + #endif @@ -3352,7 +6065,10 @@ bool Triangulation::prepare_refinement () { do { mesh_changed_in_this_loop = false; - + + // do some dimension dependent stuff + mesh_changed_in_this_loop |= prepare_refinement_dim_dependent (); + // store highest level one of the cells // adjacent to a vertex belongs to; do // so only if mesh smoothing is @@ -3483,6 +6199,117 @@ bool Triangulation::prepare_refinement () { +template +bool Triangulation::prepare_refinement_dim_dependent () +{ + return false; +}; + + + +#if deal_II_dimension == 3 + +template <> +bool Triangulation<3>::prepare_refinement_dim_dependent () +{ + const unsigned int dim = 3; + + // first clear flags on lines, since + // we need them to determine which + // lines will be refined + for (line_iterator line=begin_line(); line!=end_line(); ++line) + line->clear_user_flag(); + + // variables to store whether the mesh was + // changed in the present loop and in the + // whole process + bool mesh_changed = false, + mesh_changed_once = false; + + do + { + mesh_changed = false; + + // flag those lines that will be refined + for (active_cell_iterator cell=begin_active(); cell!=end(); ++cell) + if (cell->refine_flag_set()) + for (unsigned int line=0; line::lines_per_cell; ++line) + // if the line is not yet refined, + // it will be in the process + if (!cell->line(line)->has_children()) + cell->line(line)->set_user_flag(); + + + // now check whether there are cell with + // lines that are more than once refined + // or that will be more than once + // refined. The first thing should never + // be the case, in the second case we + // flag the cell for refinement + for (active_cell_iterator cell=last_active(); cell!=end(); --cell) + for (unsigned int line=0; line::lines_per_cell; ++line) + if (cell->line(line)->has_children()) + { + // if this line is refined, its + // children should not have + // further children + // + // however, if any of the + // children is flagged for + // further refinement, we need + // to refine this cell also + // (at least, if the cell is + // not already flagged) + bool offending_line_found = false; + + for (unsigned int c=0; c<2; ++c) + { + Assert (cell->line(line)->child(c)->has_children() == false, + ExcInternalError()); + + if (cell->line(line)->child(c)->user_flag_set () && + !cell->refine_flag_set()) + { + cell->set_refine_flag(); + offending_line_found = true; + + // it may save us several + // loop iterations if we + // flag all lines of + // this cell now (and not + // at the outset of the + // next iteration) for + // refinement + for (unsigned int line=0; + line::lines_per_cell; ++line) + if (!cell->line(line)->has_children()) + cell->line(line)->set_user_flag(); + + break; + }; + }; + + if (offending_line_found) + { + mesh_changed = true; + break; + }; + + }; + + + + + mesh_changed_once |= mesh_changed; + } + while (mesh_changed == true); + + return mesh_changed_once; +}; + +#endif + + template bool Triangulation::prepare_coarsening () { @@ -3795,6 +6622,12 @@ void Triangulation<2>::delete_cell (cell_iterator &cell) { cell->child(2)->line(0)->clear_user_pointer(); cell->child(2)->line(3)->clear_user_pointer(); + // same for user flags + cell->child(0)->line(1)->clear_user_flag(); + cell->child(0)->line(2)->clear_user_flag(); + cell->child(2)->line(0)->clear_user_flag(); + cell->child(2)->line(3)->clear_user_flag(); + // delete the four interior lines cell->child(0)->line(1)->clear_used_flag(); cell->child(0)->line(2)->clear_used_flag(); @@ -3820,6 +6653,7 @@ void Triangulation<2>::delete_cell (cell_iterator &cell) { subface::subfaces_per_face; ++subface) { cell->face(face)->child(subface)->clear_user_pointer (); + cell->face(face)->child(subface)->clear_user_flag (); cell->face(face)->child(subface)->clear_used_flag (); }; @@ -3830,6 +6664,7 @@ void Triangulation<2>::delete_cell (cell_iterator &cell) { for (unsigned int child=0; child::children_per_cell; ++child) { cell->child(child)->clear_user_pointer(); + cell->child(child)->clear_user_flag(); cell->child(child)->clear_used_flag(); }; @@ -3843,6 +6678,330 @@ void Triangulation<2>::delete_cell (cell_iterator &cell) { +#if deal_II_dimension == 3 + + +template <> +void Triangulation<3>::delete_cell (cell_iterator &cell) { + const unsigned int dim=3; + // first we need to reset the + // neighbor pointers of the neighbors + // of this cell's children to this + // cell. This is different for one + // dimension, since there neighbors + // can have a refinement level + // differing from that of this cell's + // children by more than one level. + // For two or more dimensions, the + // neighbors of the children may only + // be on the same level or on the level + // of this cell (the case that the + // neighbors are more refined than + // the children was eliminated in + // #prepare_coarsening# + for (unsigned int child=0; child::children_per_cell; ++child) + for (unsigned int n=0; n::faces_per_cell; ++n) + { + const cell_iterator neighbor = cell->child(child)->neighbor(n); + // do nothing if at boundary + if (neighbor.state() != valid) + continue; + + Assert ((neighbor->level()==cell->level()) || + (neighbor->level()==cell->level()+1), + ExcInternalError()); + + // if the neighbor's level is the + // same as that of #cell#, then + // it's neighbor pointers points + // to this cell rather than to + // this cell's child. In that + // case we need not do anything. + // If the neighbor is refined + // as often as are the children, + // we need to reset those neigbor + // pointers that point to the + // child of this cell; when + // resetting the neighbor + // pointers of neighbors of one + // of the children, we will also + // reset the neighbor pointers + // other children to the present + // cell, but this does no harm + // since we delete the children + // afterwards anyway + if (neighbor->level() == cell->level()+1) + for (unsigned int neighbor_neighbor=0; + neighbor_neighbor::faces_per_cell; + ++neighbor_neighbor) + if (neighbor->neighbor(neighbor_neighbor) == cell->child(child)) + neighbor->set_neighbor(neighbor_neighbor, cell); + }; + + // delete the vertex which will not be + // needed anymore. This vertex is the + // vertex at the heart of this cell, + // which is the sixth of the + // first child + vertices_used[cell->child(0)->vertex_index(6)] = false; + + /////////////////////////////////////// + // delete interior quads and lines + // + // first set up a list of these + // line's and quad's indices + const quad_iterator interior_quads[12] + = { cell->child(0)->face(1), + cell->child(1)->face(1), + cell->child(2)->face(1), + cell->child(3)->face(1), + + cell->child(0)->face(3), + cell->child(3)->face(3), + cell->child(4)->face(3), + cell->child(7)->face(3), + + cell->child(0)->face(4), + cell->child(1)->face(4), + cell->child(4)->face(4), + cell->child(5)->face(4) + }; + + const line_iterator interior_lines[6] + = { cell->child(0)->line(10), + cell->child(4)->line(10), + + cell->child(0)->line(6), + cell->child(1)->line(6), + + cell->child(0)->line(5), + cell->child(3)->line(5) + }; + + // clear user pointers, to avoid that + // they may appear at unwanted places + // later on... + // same for user flags, then finally + // delete thes quads and lines + for (unsigned int q=0; q<12; ++q) + { + interior_quads[q]->clear_user_pointer(); + interior_quads[q]->clear_user_flag(); + interior_quads[q]->clear_used_flag(); + }; + + for (unsigned int l=0; l<6; ++l) + { + interior_lines[l]->clear_user_pointer(); + interior_lines[l]->clear_user_flag(); + interior_lines[l]->clear_used_flag(); + }; + + // for the six faces: if the neighbor + // does not itself need the subfaces, + // delete them. note that since dim>1 + // the level of a neighbor is either + // one less or the same as that of + // cell + for (unsigned int face=0; face::faces_per_cell; ++face) + if ((cell->neighbor(face).state() != valid) || + (cell->neighbor(face)->level() == cell->level()-1) || + ((cell->neighbor(face)->level() == cell->level()) && + !cell->neighbor(face)->has_children())) + { + quad_iterator quad = cell->face(face); + + // delete middle vertex + vertices_used[quad->child(0)->vertex_index(2)] = false; + + const line_iterator interior_lines[4] + = { quad->child(0)->line(1), + quad->child(0)->line(2), + quad->child(2)->line(0), + quad->child(2)->line(3) + }; + + // delete interior lines + for (unsigned int l=0; l<4; ++l) + { + interior_lines[l]->clear_user_pointer (); + interior_lines[l]->clear_user_flag (); + interior_lines[l]->clear_used_flag (); + }; + + // delete the four subfaces + for (unsigned int subface=0; + subface::subfaces_per_face; ++subface) + { + quad->child(subface)->clear_user_pointer (); + quad->child(subface)->clear_user_flag (); + quad->child(subface)->clear_used_flag (); + }; + + quad->clear_children(); + }; + + // invalidate children + for (unsigned int child=0; child::children_per_cell; ++child) + { + cell->child(child)->clear_user_pointer(); + cell->child(child)->clear_user_flag(); + cell->child(child)->clear_used_flag(); + }; + + + // delete pointer to children + cell->clear_children (); + cell->clear_user_flag(); + + // now there still are the 12 lines of + // this hex which are refined and which + // may need coarsening. however, it is not + // so easy to decide whether they are still + // needed, since it does not suffice to + // ask the neighbors. we also need to ask + // those cells, which are "around the + // corner". + // + // to do so: first set up a list of 12 pairs + // of line_iterators and flags which denote + // whether the line's children are still + // needed + // + // we default to: "is not needed" because in + // this case, if we make an error in the code + // below, some lines will be deleted that in + // fact are needed. this will eventually be + // caught somewhen, because there are many + // checks whether an iterator points to + // something used. the opposite case, that + // we do not delete lines that are no more + // used, is more severe and causes a memory + // leak which is probably impossible to + // find. + const pair line_is_needed_pairs[12] + = { make_pair(cell->line(0), false), + make_pair(cell->line(1), false), + make_pair(cell->line(2), false), + make_pair(cell->line(3), false), + make_pair(cell->line(4), false), + make_pair(cell->line(5), false), + make_pair(cell->line(6), false), + make_pair(cell->line(7), false), + make_pair(cell->line(8), false), + make_pair(cell->line(9), false), + make_pair(cell->line(0), false), + make_pair(cell->line(11), false) }; + // next make a map out of this for simpler + // access to the flag associated with a + // line + map line_is_needed (&line_is_needed_pairs[0], + &line_is_needed_pairs[12]); + + // then ask each neighbor and their neighbors + for (unsigned int nb=0; nb::faces_per_cell; ++nb) + { + const cell_iterator neighbor = cell->neighbor(nb); + // do nothing if at boundary + if (neighbor.state() != valid) + continue; + + Assert (neighbor->level() == cell->level(), + ExcInternalError()); + + // if the neighbor itself has + // children, then the four lines + // of the common face are definitely + // needed + if (neighbor->has_children()) + { + for (unsigned int i=0; i<4; ++i) + { + Assert (line_is_needed.find(cell->face(nb)->line(i)) + != line_is_needed.end(), + ExcInternalError()); + + line_is_needed[cell->face(nb)->line(i)] = true; + }; + // ok for this neighbor + break; + }; + + // if the neighbor is not refined, + // then it may still be that one of + // his neighbors may need one of our + // lines. the present cell is also + // one of his neighbors, but this one + // is not any more refined + for (unsigned int nb_nb=0; nb_nb::faces_per_cell; + ++nb_nb) + { + const cell_iterator neighbor_neighbor = neighbor->neighbor(nb_nb); + // do nothing if at boundary + if (neighbor_neighbor.state() != valid) + continue; + + Assert ((neighbor_neighbor->level() == cell->level()) || + (neighbor_neighbor->level() == cell->level()-1), + ExcInternalError()); + + // also do nothing if the neighbor + // is at a lower level (but then it + // should not be refined) + if (neighbor_neighbor->level() == cell->level()-1) + { + Assert (!neighbor_neighbor->has_children(), + ExcInternalError()); + continue; + }; + + // neighbor's neighbor is on + // same level. if it has children, + // then look closer + if (neighbor_neighbor->has_children()) + // if any of those cell's lines + // is one of those that we are + // interested in, then flag it + for (unsigned int l=0; l::lines_per_cell; ++l) + { + line_iterator line = neighbor_neighbor->line(l); + + if (line_is_needed.find(line) != line_is_needed.end()) + line_is_needed[line] = true; + }; + }; + }; + + Assert (line_is_needed.size()==12, ExcInternalError()); + + + // now, if the lines are not marked as + // needed, we may delete their children + // and the midpoint + map::iterator line_and_flag; + for (line_and_flag=line_is_needed.begin(); + line_and_flag!=line_is_needed.end(); ++line_and_flag) + if (line_and_flag->second == false) + { + line_iterator line = line_and_flag->first; + + vertices_used[line->child(0)->vertex_index(1)] = false; + + for (unsigned int child=0; child<2; ++child) + { + line->child(child)->clear_user_pointer(); + line->child(child)->clear_user_flag(); + line->child(child)->clear_used_flag(); + }; + + line->clear_children(); + }; +}; + +#endif + + + template void Triangulation::write_bool_vector (const unsigned int magic_number1, const vector &v, @@ -4118,6 +7277,78 @@ void TriangulationLevel<2>::monitor_memory (const unsigned int true_dimension) c #endif +#if deal_II_dimension >= 3 + +void TriangulationLevel<3>::reserve_space (const unsigned int new_hexes) { + const unsigned int new_size = new_hexes + + count_if (hexes.used.begin(), + hexes.used.end(), + bind2nd (equal_to(), true)); + + // see above... + if (new_size>hexes.hexes.size()) + { + hexes.hexes.reserve (new_size); + hexes.hexes.insert (hexes.hexes.end(), new_size-hexes.hexes.size(), Hexahedron()); + + hexes.used.reserve (new_size); + hexes.used.insert (hexes.used.end(), new_size-hexes.used.size(), false); + + hexes.user_flags.reserve (new_size); + hexes.user_flags.insert (hexes.user_flags.end(), + new_size-hexes.user_flags.size(), false); + + hexes.children.reserve (new_size); + hexes.children.insert (hexes.children.end(), new_size-hexes.children.size(), + -1); + + hexes.material_id.reserve (new_size); + hexes.material_id.insert (hexes.material_id.end(), + new_size-hexes.material_id.size(), + 255); + + hexes.user_pointers.reserve (new_size); + hexes.user_pointers.insert (hexes.user_pointers.end(), + new_size-hexes.user_pointers.size(), 0); + }; +}; + + + +void TriangulationLevel<3>::monitor_memory (const unsigned int true_dimension) const { +// Assert (hexes.hexes.size() == hexes.hexes.capacity() || +// hexes.hexes.size()<256, +// ExcMemoryWasted ("hexes", +// hexes.hexes.size(), hexes.hexes.capacity())); +// Assert (hexes.children.size() == hexes.children.capacity() || +// hexes.children.size()<256, +// ExcMemoryWasted ("children", +// hexes.children.size(), hexes.children.capacity())); +// Assert (hexes.used.size() == hexes.used.capacity() || +// hexes.used.size()<256, +// ExcMemoryWasted ("used", +// hexes.used.size(), hexes.used.capacity())); +// Assert (hexes.user_flags.size() == hexes.user_flags.capacity() || +// hexes.user_flags.size()<256, +// ExcMemoryWasted ("user_flags", +// hexes.user_flags.size(), hexes.user_flags.capacity())); + Assert (hexes.hexes.size() == hexes.used.size(), + ExcMemoryInexact (hexes.hexes.size(), hexes.used.size())); + Assert (hexes.hexes.size() == hexes.user_flags.size(), + ExcMemoryInexact (hexes.hexes.size(), hexes.user_flags.size())); + Assert (hexes.hexes.size() == hexes.children.size(), + ExcMemoryInexact (hexes.hexes.size(), hexes.children.size())); + Assert (hexes.hexes.size() == hexes.material_id.size(), + ExcMemoryInexact (hexes.hexes.size(), hexes.material_id.size())); + Assert (hexes.hexes.size() == hexes.user_pointers.size(), + ExcMemoryInexact (hexes.hexes.size(), hexes.user_pointers.size())); + + TriangulationLevel<2>::monitor_memory (true_dimension); +}; + +#endif + + // explicit instantiations diff --git a/deal.II/deal.II/source/grid/tria_accessor.cc b/deal.II/deal.II/source/grid/tria_accessor.cc index dd43ba13c3..2d46e82d28 100644 --- a/deal.II/deal.II/source/grid/tria_accessor.cc +++ b/deal.II/deal.II/source/grid/tria_accessor.cc @@ -8,9 +8,8 @@ #include #include #include -#include -/* Note: explicit instantiations at the end of the different sections! */ +#include @@ -221,6 +220,9 @@ int LineAccessor::child_index (unsigned int i) const { template void LineAccessor::set_children (const int index) const { Assert (used(), ExcCellNotUsed()); + Assert ((index==-1) || + (!has_children() && (index>=0)), ExcCantSetChildren(index)); + tria->levels[present_level]->lines.children[present_index] = index; }; @@ -513,7 +515,7 @@ TriaIterator > QuadAccessor::child (const unsigned int i) const { Assert (i<4, ExcInvalidIndex(i,0,3)); - TriaIterator<2,QuadAccessor > q (tria, present_level+1, child_index (i)); + TriaIterator > q (tria, present_level+1, child_index (i)); #ifdef DEBUG if (q.state() != past_the_end) @@ -535,6 +537,9 @@ int QuadAccessor::child_index (unsigned int i) const { template void QuadAccessor::set_children (const int index) const { Assert (used(), ExcCellNotUsed()); + Assert ((index==-1) || + (!has_children() && (index>=0)), ExcCantSetChildren(index)); + tria->levels[present_level]->quads.children[present_index] = index; }; @@ -656,7 +661,7 @@ Point<2> QuadAccessor<2>::barycenter () const { // for 2D and 3D separately /* Get the computation of the barycenter by this little Maple script. We - use the blinear mapping of the unit quad to the real quad. However, + use the bilinear mapping of the unit quad to the real quad. However, every transformation mapping the unit faces to strait lines should do. @@ -791,6 +796,1078 @@ unsigned int QuadAccessor::number_of_children () const { +/*------------------------ Functions: HexAccessor ---------------------------*/ + +template +void HexAccessor::set (const Hexahedron &hex) const { + tria->levels[present_level]->hexes.hexes[present_index] = hex; +}; + + + +template +int HexAccessor::vertex_index (const unsigned int corner) const { + Assert (corner<8, ExcInvalidIndex(corner,0,7)); + + // get the corner indices by asking + // either the front or the back face + // for its vertices. + if (corner<4) + return quad(0)->vertex_index(corner); + else + return quad(1)->vertex_index(corner-4); +}; + + + +template +Point & +HexAccessor::vertex (const unsigned int i) const { + return tria->vertices[vertex_index(i)]; +}; + + + +template +bool HexAccessor::used () const { + Assert (state() == valid, ExcDereferenceInvalidObject()); + return tria->levels[present_level]->hexes.used[present_index]; +}; + + + +template +void HexAccessor::set_used_flag () const { + Assert (state() == valid, ExcDereferenceInvalidObject()); + tria->levels[present_level]->hexes.used[present_index] = true; +}; + + + +template +void HexAccessor::clear_used_flag () const { + Assert (state() == valid, ExcDereferenceInvalidObject()); + tria->levels[present_level]->hexes.used[present_index] = false; +}; + + + + +template +bool HexAccessor::user_flag_set () const { + Assert (used(), ExcCellNotUsed()); + return tria->levels[present_level]->hexes.user_flags[present_index]; +}; + + + +template +void HexAccessor::set_user_flag () const { + Assert (used(), ExcCellNotUsed()); + tria->levels[present_level]->hexes.user_flags[present_index] = true; +}; + + + +template +void HexAccessor::clear_user_flag () const { + Assert (used(), ExcCellNotUsed()); + tria->levels[present_level]->hexes.user_flags[present_index] = false; +}; + + + +template +void HexAccessor::recursively_set_user_flag () const { + set_user_flag (); + + if (has_children()) + for (unsigned int c=0; c<8; ++c) + child(c)->recursively_set_user_flag (); +}; + + + +template +void HexAccessor::recursively_clear_user_flag () const { + clear_user_flag (); + + if (has_children()) + for (unsigned int c=0; c<8; ++c) + child(c)->recursively_clear_user_flag (); +}; + + + +template +void HexAccessor::set_user_pointer (void *p) const { + Assert (used(), ExcCellNotUsed()); + tria->levels[present_level]->hexes.user_pointers[present_index] = p; +}; + + + +template +void HexAccessor::clear_user_pointer () const { + Assert (used(), ExcCellNotUsed()); + tria->levels[present_level]->hexes.user_pointers[present_index] = 0; +}; + + + +template +void * HexAccessor::user_pointer () const { + Assert (used(), ExcCellNotUsed()); + return tria->levels[present_level]->hexes.user_pointers[present_index]; +}; + + + + +template +TriaIterator > +HexAccessor::line (const unsigned int i) const { + Assert (used(), ExcCellNotUsed()); + Assert (i<12, ExcInvalidIndex (i,0,11)); + + if (i<4) + return quad(0)->line(i); + else + if (i<8) + return quad(1)->line(i-4); + else + switch (i) + { + case 8: + return quad(2)->line(3); + case 9: + return quad(2)->line(1); + case 10: + return quad(4)->line(1); + case 11: + return quad(4)->line(3); + }; + Assert (false, ExcInvalidIndex(i,0,11)); + return TriaIterator >(tria, -1, -1, 0); +}; + + + +template +TriaIterator > +HexAccessor::quad (const unsigned int i) const { + Assert (used(), ExcCellNotUsed()); + return + TriaIterator > + ( + tria, + present_level, + quad_index (i) + ); +}; + + + +template +unsigned int HexAccessor::quad_index (unsigned int i) const { + Assert (i<6, ExcInvalidIndex(i,0,5)); + + return tria->levels[present_level]->hexes.hexes[present_index].quad(i); +}; + + + +template +TriaIterator > +HexAccessor::child (const unsigned int i) const { + Assert (i<6, ExcInvalidIndex(i,0,5)); + + TriaIterator > q (tria, present_level+1, child_index (i)); + +#ifdef DEBUG + if (q.state() != past_the_end) + Assert (q->used(), ExcUnusedCellAsChild()); +#endif + return q; +}; + + + +template +int HexAccessor::child_index (unsigned int i) const { + Assert (i<8, ExcInvalidIndex(i,0,7)); + return tria->levels[present_level]->hexes.children[present_index]+i; +}; + + + +template +void HexAccessor::set_children (const int index) const { + Assert (used(), ExcCellNotUsed()); + Assert ((index==-1) || + (!has_children() && (index>=0)), ExcCantSetChildren(index)); + + tria->levels[present_level]->hexes.children[present_index] = index; +}; + + + +template +void HexAccessor::clear_children () const { + set_children (-1); +}; + + + +template +bool HexAccessor::has_children () const { + Assert (state() == valid, ExcDereferenceInvalidObject()); + return (tria->levels[present_level]->hexes.children[present_index] != -1); +}; + + + +template +void HexAccessor::operator ++ () { + ++present_index; + // is index still in the range of + // the vector? + while (present_index + >= + (int)tria->levels[present_level]->hexes.hexes.size()) + { + // no -> go one level up + ++present_level; + present_index = 0; + // highest level reached? + if (present_level >= (int)tria->levels.size()) + { + // return with past the end pointer + present_level = present_index = -1; + return; + }; + }; +}; + + + +template +void HexAccessor::operator -- () { + --present_index; + // is index still in the range of + // the vector? + while (present_index < 0) + { + // no -> go one level down + --present_level; + // lowest level reached? + if (present_level == -1) + { + // return with past the end pointer + present_level = present_index = -1; + return; + }; + // else + present_index = tria->levels[present_level]->hexes.hexes.size()-1; + }; +}; + + + +template +unsigned char HexAccessor::boundary_indicator () const { + Assert (dim<4, ExcNotUsefulForThisDimension()); + Assert (used(), ExcCellNotUsed()); + + return tria->levels[present_level]->hexes.material_id[present_index]; +}; + + + +template +void HexAccessor::set_boundary_indicator (unsigned char boundary_ind) const { + Assert (dim<4, ExcNotUsefulForThisDimension()); + Assert (used(), ExcCellNotUsed()); + + tria->levels[present_level]->hexes.material_id[present_index] = boundary_ind; +}; + + + +template +bool HexAccessor::at_boundary () const { + // error checking is done + // in boundary_indicator() + return (boundary_indicator() != 255); +}; + + + +template +double HexAccessor::diameter () const { + return sqrt(max( max((vertex(6)-vertex(0)).square(), + (vertex(7)-vertex(1)).square()), + max((vertex(4)-vertex(2)).square(), + (vertex(5)-vertex(3)).square()) )); +}; + + + +template +Point HexAccessor::center () const { + return (vertex(0)+vertex(1)+vertex(2)+vertex(3)+ + vertex(4)+vertex(5)+vertex(6)+vertex(7))/8.; +}; + + + +#if deal_II_dimension == 3 + +template <> +Point<3> HexAccessor<3>::barycenter () const { +/* + Get the computation of the barycenter by this little Maple script. We + use the trilinear mapping of the unit hex to the real hex. + + Remember that the area of the hex is given by + |K| = \int_K 1 dx dy dz = \int_{\hat K} |det J| d(xi) d(eta) d(zeta) + and that the barycenter is given by + \vec x_s = 1/|K| \int_K \vec x dx dy dz + = 1/|K| \int_{\hat K} \vec x(xi,eta,zeta) |det J| d(xi) d(eta) d(zeta) + + # x, y and z are arrays holding the x-, y- and z-values of the four vertices + # of this cell in real space. + x := array(0..7): + y := array(0..7): + z := array(0..7): + tphi[0] := (1-xi)*(1-eta)*(1-zeta): + tphi[1] := xi*(1-eta)*(1-zeta): + tphi[2] := xi*eta*(1-zeta): + tphi[3] := (1-xi)*eta*(1-zeta): + tphi[4] := (1-xi)*(1-eta)*zeta: + tphi[5] := xi*(1-eta)*zeta: + tphi[6] := xi*eta*zeta: + tphi[7] := (1-xi)*eta*zeta: + x_real := sum(x[s]*tphi[s], s=0..7): + y_real := sum(y[s]*tphi[s], s=0..7): + z_real := sum(z[s]*tphi[s], s=0..7): + with (linalg): + J := matrix(3,3, [[diff(x_real, xi), diff(x_real, eta), diff(x_real, zeta)], + [diff(y_real, xi), diff(y_real, eta), diff(y_real, zeta)], + [diff(z_real, xi), diff(z_real, eta), diff(z_real, zeta)]]): + detJ := det (J): + + measure := simplify ( int ( int ( int (detJ, xi=0..1), eta=0..1), zeta=0..1)): + + xs := simplify (1/measure * int ( int ( int (x_real * detJ, xi=0..1), eta=0..1), zeta=0..1)): + ys := simplify (1/measure * int ( int ( int (y_real * detJ, xi=0..1), eta=0..1), zeta=0..1)): + zs := simplify (1/measure * int ( int ( int (z_real * detJ, xi=0..1), eta=0..1), zeta=0..1)): + + readlib(C): + + C(array(1..3, [xs, ys, zs])); +*/ + + const double x[8] = { vertex(0)(0), + vertex(1)(0), + vertex(2)(0), + vertex(3)(0), + vertex(4)(0), + vertex(5)(0), + vertex(6)(0), + vertex(7)(0) }; + const double y[8] = { vertex(0)(1), + vertex(1)(1), + vertex(2)(1), + vertex(3)(1), + vertex(4)(1), + vertex(5)(1), + vertex(6)(1), + vertex(7)(1) }; + const double z[8] = { vertex(0)(2), + vertex(1)(2), + vertex(2)(2), + vertex(3)(2), + vertex(4)(2), + vertex(5)(2), + vertex(6)(2), + vertex(7)(2) }; + + double s1, s2, s3, s4, s5, s6, s7, s8; + + s1 = 1.0/6.0; + s8 = -x[2]*x[2]*y[0]*z[3]-2.0*z[6]*x[7]*x[7]*y[4]-z[5]*x[7]*x[7]*y[4]-z +[6]*x[7]*x[7]*y[5]+2.0*y[6]*x[7]*x[7]*z[4]-z[5]*x[6]*x[6]*y[4]+x[6]*x[6]*y[4]*z +[7]-z[1]*x[0]*x[0]*y[2]-x[6]*x[6]*y[7]*z[4]+2.0*x[6]*x[6]*y[5]*z[7]-2.0*x[6]*x +[6]*y[7]*z[5]+y[5]*x[6]*x[6]*z[4]+2.0*x[5]*x[5]*y[4]*z[6]+x[0]*x[0]*y[7]*z[4] +-2.0*x[5]*x[5]*y[6]*z[4]; + s7 = s8-y[6]*x[5]*x[5]*z[7]+z[6]*x[5]*x[5]*y[7]-y[1]*x[0]*x[0]*z[5]+x[7]* +z[5]*x[4]*y[7]-x[7]*y[6]*x[5]*z[7]-2.0*x[7]*x[6]*y[7]*z[4]+2.0*x[7]*x[6]*y[4]*z +[7]-x[7]*x[5]*y[7]*z[4]-2.0*x[7]*y[6]*x[4]*z[7]-x[7]*y[5]*x[4]*z[7]+x[2]*x[2]*y +[3]*z[0]-x[7]*x[6]*y[7]*z[5]+x[7]*x[6]*y[5]*z[7]+2.0*x[1]*x[1]*y[0]*z[5]+x[7]*z +[6]*x[5]*y[7]; + s8 = -2.0*x[1]*x[1]*y[5]*z[0]+z[1]*x[0]*x[0]*y[5]+2.0*x[2]*x[2]*y[3]*z[1] +-z[5]*x[4]*x[4]*y[1]+y[5]*x[4]*x[4]*z[1]-2.0*x[5]*x[5]*y[4]*z[1]+2.0*x[5]*x[5]* +y[1]*z[4]-2.0*x[2]*x[2]*y[1]*z[3]-y[1]*x[2]*x[2]*z[0]+x[7]*y[2]*x[3]*z[7]+x[7]* +z[2]*x[6]*y[3]+2.0*x[7]*z[6]*x[4]*y[7]+z[5]*x[1]*x[1]*y[4]+z[1]*x[2]*x[2]*y[0] +-2.0*y[0]*x[3]*x[3]*z[7]; + s6 = s8+2.0*z[0]*x[3]*x[3]*y[7]-x[7]*x[2]*y[3]*z[7]-x[7]*z[2]*x[3]*y[7]+x +[7]*x[2]*y[7]*z[3]-x[7]*y[2]*x[6]*z[3]+x[4]*x[5]*y[1]*z[4]-x[4]*x[5]*y[4]*z[1]+ +x[4]*z[5]*x[1]*y[4]-x[4]*y[5]*x[1]*z[4]-2.0*x[5]*z[5]*x[4]*y[1]-2.0*x[5]*y[5]*x +[1]*z[4]+2.0*x[5]*z[5]*x[1]*y[4]+2.0*x[5]*y[5]*x[4]*z[1]-x[6]*z[5]*x[7]*y[4]-z +[2]*x[3]*x[3]*y[6]+s7; + s8 = -2.0*x[6]*z[6]*x[7]*y[5]-x[6]*y[6]*x[4]*z[7]+y[2]*x[3]*x[3]*z[6]+x +[6]*y[6]*x[7]*z[4]+2.0*y[2]*x[3]*x[3]*z[7]+x[0]*x[1]*y[0]*z[5]+x[0]*y[1]*x[5]*z +[0]-x[0]*z[1]*x[5]*y[0]-2.0*z[2]*x[3]*x[3]*y[7]+2.0*x[6]*z[6]*x[5]*y[7]-x[0]*x +[1]*y[5]*z[0]-x[6]*y[5]*x[4]*z[6]-2.0*x[3]*z[0]*x[7]*y[3]-x[6]*z[6]*x[7]*y[4] +-2.0*x[1]*z[1]*x[5]*y[0]; + s7 = s8+2.0*x[1]*y[1]*x[5]*z[0]+2.0*x[1]*z[1]*x[0]*y[5]+2.0*x[3]*y[0]*x +[7]*z[3]+2.0*x[3]*x[0]*y[3]*z[7]-2.0*x[3]*x[0]*y[7]*z[3]-2.0*x[1]*y[1]*x[0]*z +[5]-2.0*x[6]*y[6]*x[5]*z[7]+s6-y[5]*x[1]*x[1]*z[4]+x[6]*z[6]*x[4]*y[7]-2.0*x[2] +*y[2]*x[3]*z[1]+x[6]*z[5]*x[4]*y[6]+x[6]*x[5]*y[4]*z[6]-y[6]*x[7]*x[7]*z[2]-x +[6]*x[5]*y[6]*z[4]; + s8 = x[3]*x[3]*y[7]*z[4]-2.0*y[6]*x[7]*x[7]*z[3]+z[6]*x[7]*x[7]*y[2]+2.0* +z[6]*x[7]*x[7]*y[3]+2.0*y[1]*x[0]*x[0]*z[3]+2.0*x[0]*x[1]*y[3]*z[0]-2.0*x[0]*y +[0]*x[3]*z[4]-2.0*x[0]*z[1]*x[4]*y[0]-2.0*x[0]*y[1]*x[3]*z[0]+2.0*x[0]*y[0]*x +[4]*z[3]-2.0*x[0]*z[0]*x[4]*y[3]+2.0*x[0]*x[1]*y[0]*z[4]+2.0*x[0]*z[1]*x[3]*y +[0]-2.0*x[0]*x[1]*y[0]*z[3]-2.0*x[0]*x[1]*y[4]*z[0]+2.0*x[0]*y[1]*x[4]*z[0]; + s5 = s8+2.0*x[0]*z[0]*x[3]*y[4]+x[1]*y[1]*x[0]*z[3]-x[1]*z[1]*x[4]*y[0]-x +[1]*y[1]*x[0]*z[4]+x[1]*z[1]*x[0]*y[4]-x[1]*y[1]*x[3]*z[0]-x[1]*z[1]*x[0]*y[3]- +x[0]*z[5]*x[4]*y[1]+x[0]*y[5]*x[4]*z[1]-2.0*x[4]*x[0]*y[4]*z[7]-2.0*x[4]*y[5]*x +[0]*z[4]+2.0*x[4]*z[5]*x[0]*y[4]-2.0*x[4]*x[5]*y[4]*z[0]-2.0*x[4]*y[0]*x[7]*z +[4]-x[5]*y[5]*x[0]*z[4]+s7; + s8 = x[5]*z[5]*x[0]*y[4]-x[5]*z[5]*x[4]*y[0]+x[1]*z[5]*x[0]*y[4]+x[5]*y +[5]*x[4]*z[0]-x[0]*y[0]*x[7]*z[4]-x[0]*z[5]*x[4]*y[0]-x[1]*y[5]*x[0]*z[4]+x[0]* +z[0]*x[7]*y[4]+x[0]*y[5]*x[4]*z[0]-x[0]*z[0]*x[4]*y[7]+x[0]*x[5]*y[0]*z[4]+x[0] +*y[0]*x[4]*z[7]-x[0]*x[5]*y[4]*z[0]-x[3]*x[3]*y[4]*z[7]+2.0*x[2]*z[2]*x[3]*y[1] +; + s7 = s8-x[5]*x[5]*y[4]*z[0]+2.0*y[5]*x[4]*x[4]*z[0]-2.0*z[0]*x[4]*x[4]*y +[7]+2.0*y[0]*x[4]*x[4]*z[7]-2.0*z[5]*x[4]*x[4]*y[0]+x[5]*x[5]*y[4]*z[7]-x[5]*x +[5]*y[7]*z[4]-2.0*y[5]*x[4]*x[4]*z[7]+2.0*z[5]*x[4]*x[4]*y[7]-x[0]*x[0]*y[7]*z +[3]+y[2]*x[0]*x[0]*z[3]+x[0]*x[0]*y[3]*z[7]-x[5]*x[1]*y[4]*z[0]+x[5]*y[1]*x[4]* +z[0]-x[4]*y[0]*x[3]*z[4]; + s8 = -x[4]*y[1]*x[0]*z[4]+x[4]*z[1]*x[0]*y[4]+x[4]*x[0]*y[3]*z[4]-x[4]*x +[0]*y[4]*z[3]+x[4]*x[1]*y[0]*z[4]-x[4]*x[1]*y[4]*z[0]+x[4]*z[0]*x[3]*y[4]+x[5]* +x[1]*y[0]*z[4]+x[1]*z[1]*x[3]*y[0]+x[1]*y[1]*x[4]*z[0]-x[5]*z[1]*x[4]*y[0]-2.0* +y[1]*x[0]*x[0]*z[4]+2.0*z[1]*x[0]*x[0]*y[4]+2.0*x[0]*x[0]*y[3]*z[4]-2.0*z[1]*x +[0]*x[0]*y[3]; + s6 = s8-2.0*x[0]*x[0]*y[4]*z[3]+x[1]*x[1]*y[3]*z[0]+x[1]*x[1]*y[0]*z[4]-x +[1]*x[1]*y[0]*z[3]-x[1]*x[1]*y[4]*z[0]-z[1]*x[4]*x[4]*y[0]+y[0]*x[4]*x[4]*z[3]- +z[0]*x[4]*x[4]*y[3]+y[1]*x[4]*x[4]*z[0]-x[0]*x[0]*y[4]*z[7]-y[5]*x[0]*x[0]*z[4] ++z[5]*x[0]*x[0]*y[4]+x[5]*x[5]*y[0]*z[4]-x[0]*y[0]*x[3]*z[7]+x[0]*z[0]*x[3]*y +[7]+s7; + s8 = s6+x[0]*x[2]*y[3]*z[0]-x[0]*x[2]*y[0]*z[3]+x[0]*y[0]*x[7]*z[3]-x[0]* +y[2]*x[3]*z[0]+x[0]*z[2]*x[3]*y[0]-x[0]*z[0]*x[7]*y[3]+x[1]*x[2]*y[3]*z[0]-z[2] +*x[0]*x[0]*y[3]+x[3]*z[2]*x[6]*y[3]-x[3]*x[2]*y[3]*z[6]+x[3]*x[2]*y[6]*z[3]-x +[3]*y[2]*x[6]*z[3]-2.0*x[3]*y[2]*x[7]*z[3]+2.0*x[3]*z[2]*x[7]*y[3]; + s7 = s8+2.0*x[4]*y[5]*x[7]*z[4]+2.0*x[4]*x[5]*y[4]*z[7]-2.0*x[4]*z[5]*x +[7]*y[4]-2.0*x[4]*x[5]*y[7]*z[4]+x[5]*y[5]*x[7]*z[4]-x[5]*z[5]*x[7]*y[4]-x[5]*y +[5]*x[4]*z[7]+x[5]*z[5]*x[4]*y[7]+2.0*x[3]*x[2]*y[7]*z[3]-2.0*x[2]*z[2]*x[1]*y +[3]+2.0*x[4]*z[0]*x[7]*y[4]+2.0*x[4]*x[0]*y[7]*z[4]+2.0*x[4]*x[5]*y[0]*z[4]-x +[7]*x[6]*y[2]*z[7]-2.0*x[3]*x[2]*y[3]*z[7]-x[0]*x[4]*y[7]*z[3]; + s8 = x[0]*x[3]*y[7]*z[4]-x[0]*x[3]*y[4]*z[7]+x[0]*x[4]*y[3]*z[7]-2.0*x[7] +*z[6]*x[3]*y[7]+x[3]*x[7]*y[4]*z[3]-x[3]*x[4]*y[7]*z[3]-x[3]*x[7]*y[3]*z[4]+x +[3]*x[4]*y[3]*z[7]+2.0*x[2]*y[2]*x[1]*z[3]+y[6]*x[3]*x[3]*z[7]-z[6]*x[3]*x[3]*y +[7]-x[1]*z[5]*x[4]*y[1]-x[1]*x[5]*y[4]*z[1]-x[1]*z[2]*x[0]*y[3]-x[1]*x[2]*y[0]* +z[3]+x[1]*y[2]*x[0]*z[3]; + s4 = s8+x[1]*x[5]*y[1]*z[4]+x[1]*y[5]*x[4]*z[1]+x[4]*y[0]*x[7]*z[3]-x[4]* +z[0]*x[7]*y[3]-x[4]*x[4]*y[7]*z[3]+x[4]*x[4]*y[3]*z[7]+x[3]*z[6]*x[7]*y[3]-x[3] +*x[6]*y[3]*z[7]+x[3]*x[6]*y[7]*z[3]-x[3]*z[6]*x[2]*y[7]-x[3]*y[6]*x[7]*z[3]+x +[3]*z[6]*x[7]*y[2]+x[3]*y[6]*x[2]*z[7]+2.0*x[5]*z[5]*x[4]*y[6]+s5+s7; + s8 = s4-2.0*x[5]*z[5]*x[6]*y[4]-x[5]*z[6]*x[7]*y[5]+x[5]*x[6]*y[5]*z[7]-x +[5]*x[6]*y[7]*z[5]-2.0*x[5]*y[5]*x[4]*z[6]+2.0*x[5]*y[5]*x[6]*z[4]-x[3]*y[6]*x +[7]*z[2]+x[4]*x[7]*y[4]*z[3]+x[4]*x[3]*y[7]*z[4]-x[4]*x[7]*y[3]*z[4]-x[4]*x[3]* +y[4]*z[7]-z[1]*x[5]*x[5]*y[0]+y[1]*x[5]*x[5]*z[0]+x[4]*y[6]*x[7]*z[4]; + s7 = s8-x[4]*x[6]*y[7]*z[4]+x[4]*x[6]*y[4]*z[7]-x[4]*z[6]*x[7]*y[4]-x[5]* +y[6]*x[4]*z[7]-x[5]*x[6]*y[7]*z[4]+x[5]*x[6]*y[4]*z[7]+x[5]*z[6]*x[4]*y[7]-y[6] +*x[4]*x[4]*z[7]+z[6]*x[4]*x[4]*y[7]+x[7]*x[5]*y[4]*z[7]-y[2]*x[7]*x[7]*z[3]+z +[2]*x[7]*x[7]*y[3]-y[0]*x[3]*x[3]*z[4]-y[1]*x[3]*x[3]*z[0]+z[1]*x[3]*x[3]*y[0]; + s8 = z[0]*x[3]*x[3]*y[4]-x[2]*y[1]*x[3]*z[0]+x[2]*z[1]*x[3]*y[0]+x[3]*y +[1]*x[0]*z[3]+x[3]*x[1]*y[3]*z[0]+x[3]*x[0]*y[3]*z[4]-x[3]*z[1]*x[0]*y[3]-x[3]* +x[0]*y[4]*z[3]+x[3]*y[0]*x[4]*z[3]-x[3]*z[0]*x[4]*y[3]-x[3]*x[1]*y[0]*z[3]+x[3] +*z[0]*x[7]*y[4]-x[3]*y[0]*x[7]*z[4]+z[0]*x[7]*x[7]*y[4]-y[0]*x[7]*x[7]*z[4]; + s6 = s8+y[1]*x[0]*x[0]*z[2]-2.0*y[2]*x[3]*x[3]*z[0]+2.0*z[2]*x[3]*x[3]*y +[0]-2.0*x[1]*x[1]*y[0]*z[2]+2.0*x[1]*x[1]*y[2]*z[0]-y[2]*x[3]*x[3]*z[1]+z[2]*x +[3]*x[3]*y[1]-y[5]*x[4]*x[4]*z[6]+z[5]*x[4]*x[4]*y[6]+x[7]*x[0]*y[7]*z[4]-x[7]* +z[0]*x[4]*y[7]-x[7]*x[0]*y[4]*z[7]+x[7]*y[0]*x[4]*z[7]-x[0]*x[1]*y[0]*z[2]+x[0] +*z[1]*x[2]*y[0]+s7; + s8 = s6+x[0]*x[1]*y[2]*z[0]-x[0]*y[1]*x[2]*z[0]-x[3]*z[1]*x[0]*y[2]+2.0*x +[3]*x[2]*y[3]*z[0]+y[0]*x[7]*x[7]*z[3]-z[0]*x[7]*x[7]*y[3]-2.0*x[3]*z[2]*x[0]*y +[3]-2.0*x[3]*x[2]*y[0]*z[3]+2.0*x[3]*y[2]*x[0]*z[3]+x[3]*x[2]*y[3]*z[1]-x[3]*x +[2]*y[1]*z[3]-x[5]*y[1]*x[0]*z[5]+x[3]*y[1]*x[0]*z[2]+x[4]*y[6]*x[7]*z[5]; + s7 = s8-x[5]*x[1]*y[5]*z[0]+2.0*x[1]*z[1]*x[2]*y[0]-2.0*x[1]*z[1]*x[0]*y +[2]+x[1]*x[2]*y[3]*z[1]-x[1]*x[2]*y[1]*z[3]+2.0*x[1]*y[1]*x[0]*z[2]-2.0*x[1]*y +[1]*x[2]*z[0]-z[2]*x[1]*x[1]*y[3]+y[2]*x[1]*x[1]*z[3]+y[5]*x[7]*x[7]*z[4]+y[6]* +x[7]*x[7]*z[5]+x[7]*x[6]*y[7]*z[2]+x[7]*y[6]*x[2]*z[7]-x[7]*z[6]*x[2]*y[7]-2.0* +x[7]*x[6]*y[3]*z[7]; + s8 = s7+2.0*x[7]*x[6]*y[7]*z[3]+2.0*x[7]*y[6]*x[3]*z[7]-x[3]*z[2]*x[1]*y +[3]+x[3]*y[2]*x[1]*z[3]+x[5]*x[1]*y[0]*z[5]+x[4]*y[5]*x[6]*z[4]+x[5]*z[1]*x[0]* +y[5]-x[4]*z[6]*x[7]*y[5]-x[4]*x[5]*y[6]*z[4]+x[4]*x[5]*y[4]*z[6]-x[4]*z[5]*x[6] +*y[4]-x[1]*y[2]*x[3]*z[1]+x[1]*z[2]*x[3]*y[1]-x[2]*x[1]*y[0]*z[2]-x[2]*z[1]*x +[0]*y[2]; + s5 = s8+x[2]*x[1]*y[2]*z[0]-x[2]*z[2]*x[0]*y[3]+x[2]*y[2]*x[0]*z[3]-x[2]* +y[2]*x[3]*z[0]+x[2]*z[2]*x[3]*y[0]+x[2]*y[1]*x[0]*z[2]+x[5]*y[6]*x[7]*z[5]+x[6] +*y[5]*x[7]*z[4]+2.0*x[6]*y[6]*x[7]*z[5]-x[7]*y[0]*x[3]*z[7]+x[7]*z[0]*x[3]*y[7] +-x[7]*x[0]*y[7]*z[3]+x[7]*x[0]*y[3]*z[7]+2.0*x[7]*x[7]*y[4]*z[3]-2.0*x[7]*x[7]* +y[3]*z[4]-2.0*x[1]*x[1]*y[2]*z[5]; + s8 = s5-2.0*x[7]*x[4]*y[7]*z[3]+2.0*x[7]*x[3]*y[7]*z[4]-2.0*x[7]*x[3]*y +[4]*z[7]+2.0*x[7]*x[4]*y[3]*z[7]+2.0*x[1]*x[1]*y[5]*z[2]-x[1]*x[1]*y[2]*z[6]+x +[1]*x[1]*y[6]*z[2]+z[1]*x[5]*x[5]*y[2]-y[1]*x[5]*x[5]*z[2]-x[1]*x[1]*y[6]*z[5]+ +x[1]*x[1]*y[5]*z[6]+x[5]*x[5]*y[6]*z[2]-x[5]*x[5]*y[2]*z[6]-2.0*y[1]*x[5]*x[5]* +z[6]; + s7 = s8+2.0*z[1]*x[5]*x[5]*y[6]+2.0*x[1]*z[1]*x[5]*y[2]+2.0*x[1]*y[1]*x +[2]*z[5]-2.0*x[1]*z[1]*x[2]*y[5]-2.0*x[1]*y[1]*x[5]*z[2]-x[1]*y[1]*x[6]*z[2]-x +[1]*z[1]*x[2]*y[6]+x[1]*z[1]*x[6]*y[2]+x[1]*y[1]*x[2]*z[6]-x[5]*x[1]*y[2]*z[5]+ +x[5]*y[1]*x[2]*z[5]-x[5]*z[1]*x[2]*y[5]+x[5]*x[1]*y[5]*z[2]-x[5]*y[1]*x[6]*z[2] +-x[5]*x[1]*y[2]*z[6]; + s8 = s7+x[5]*x[1]*y[6]*z[2]+x[5]*z[1]*x[6]*y[2]+x[1]*x[2]*y[5]*z[6]-x[1]* +x[2]*y[6]*z[5]-x[1]*z[1]*x[6]*y[5]-x[1]*y[1]*x[5]*z[6]+x[1]*z[1]*x[5]*y[6]+x[1] +*y[1]*x[6]*z[5]-x[5]*x[6]*y[5]*z[2]+x[5]*x[2]*y[5]*z[6]-x[5]*x[2]*y[6]*z[5]+x +[5]*x[6]*y[2]*z[5]-2.0*x[5]*z[1]*x[6]*y[5]-2.0*x[5]*x[1]*y[6]*z[5]+2.0*x[5]*x +[1]*y[5]*z[6]; + s6 = s8+2.0*x[5]*y[1]*x[6]*z[5]+2.0*x[2]*x[1]*y[6]*z[2]+2.0*x[2]*z[1]*x +[6]*y[2]-2.0*x[2]*x[1]*y[2]*z[6]+x[2]*x[5]*y[6]*z[2]+x[2]*x[6]*y[2]*z[5]-x[2]*x +[5]*y[2]*z[6]+y[1]*x[2]*x[2]*z[5]-z[1]*x[2]*x[2]*y[5]-2.0*x[2]*y[1]*x[6]*z[2]-x +[2]*x[6]*y[5]*z[2]-2.0*z[1]*x[2]*x[2]*y[6]+x[2]*x[2]*y[5]*z[6]-x[2]*x[2]*y[6]*z +[5]+2.0*y[1]*x[2]*x[2]*z[6]+x[2]*z[1]*x[5]*y[2]; + s8 = s6-x[2]*x[1]*y[2]*z[5]+x[2]*x[1]*y[5]*z[2]-x[2]*y[1]*x[5]*z[2]+x[6]* +y[1]*x[2]*z[5]-x[6]*z[1]*x[2]*y[5]-z[1]*x[6]*x[6]*y[5]+y[1]*x[6]*x[6]*z[5]-y[1] +*x[6]*x[6]*z[2]-2.0*x[6]*x[6]*y[5]*z[2]+2.0*x[6]*x[6]*y[2]*z[5]+z[1]*x[6]*x[6]* +y[2]-x[6]*x[1]*y[6]*z[5]-x[6]*y[1]*x[5]*z[6]+x[6]*x[1]*y[5]*z[6]; + s7 = s8+x[6]*z[1]*x[5]*y[6]-x[6]*z[1]*x[2]*y[6]-x[6]*x[1]*y[2]*z[6]+2.0*x +[6]*x[5]*y[6]*z[2]+2.0*x[6]*x[2]*y[5]*z[6]-2.0*x[6]*x[2]*y[6]*z[5]-2.0*x[6]*x +[5]*y[2]*z[6]+x[6]*x[1]*y[6]*z[2]+x[6]*y[1]*x[2]*z[6]-x[2]*x[2]*y[3]*z[7]+x[2]* +x[2]*y[7]*z[3]-x[2]*z[2]*x[3]*y[7]-x[2]*y[2]*x[7]*z[3]+x[2]*z[2]*x[7]*y[3]+x[2] +*y[2]*x[3]*z[7]-x[6]*x[6]*y[3]*z[7]; + s8 = s7+x[6]*x[6]*y[7]*z[3]-x[6]*x[2]*y[3]*z[7]+x[6]*x[2]*y[7]*z[3]-x[6]* +y[6]*x[7]*z[3]+x[6]*y[6]*x[3]*z[7]-x[6]*z[6]*x[3]*y[7]+x[6]*z[6]*x[7]*y[3]+y[6] +*x[2]*x[2]*z[7]-z[6]*x[2]*x[2]*y[7]+2.0*x[2]*x[2]*y[6]*z[3]-x[2]*y[6]*x[7]*z[2] +-2.0*x[2]*y[2]*x[6]*z[3]-2.0*x[2]*x[2]*y[3]*z[6]+2.0*x[2]*y[2]*x[3]*z[6]-x[2]*x +[6]*y[2]*z[7]; + s3 = s8+x[2]*x[6]*y[7]*z[2]+x[2]*z[6]*x[7]*y[2]+2.0*x[2]*z[2]*x[6]*y[3] +-2.0*x[2]*z[2]*x[3]*y[6]-y[2]*x[6]*x[6]*z[3]-2.0*x[6]*x[6]*y[2]*z[7]+2.0*x[6]*x +[6]*y[7]*z[2]+z[2]*x[6]*x[6]*y[3]-2.0*x[6]*y[6]*x[7]*z[2]+x[6]*y[2]*x[3]*z[6]-x +[6]*x[2]*y[3]*z[6]+2.0*x[6]*z[6]*x[7]*y[2]+2.0*x[6]*y[6]*x[2]*z[7]-2.0*x[6]*z +[6]*x[2]*y[7]+x[6]*x[2]*y[6]*z[3]-x[6]*z[2]*x[3]*y[6]; + s8 = y[1]*x[0]*z[3]+x[1]*y[3]*z[0]-y[0]*x[3]*z[7]-x[1]*y[5]*z[0]-y[0]*x +[3]*z[4]-x[1]*y[0]*z[2]+z[1]*x[2]*y[0]-y[1]*x[0]*z[5]-z[1]*x[0]*y[2]-y[1]*x[0]* +z[4]+z[1]*x[5]*y[2]+z[0]*x[7]*y[4]+z[0]*x[3]*y[7]+z[1]*x[0]*y[4]-x[1]*y[2]*z[5] ++x[2]*y[3]*z[0]+y[1]*x[2]*z[5]-x[2]*y[3]*z[7]; + s7 = s8-z[1]*x[2]*y[5]-y[1]*x[3]*z[0]-x[0]*y[7]*z[3]-z[1]*x[0]*y[3]+y[5]* +x[4]*z[0]-x[0]*y[4]*z[3]+y[5]*x[7]*z[4]-z[0]*x[4]*y[3]+x[1]*y[0]*z[4]-z[2]*x[3] +*y[7]-y[6]*x[7]*z[2]+x[1]*y[5]*z[2]+y[6]*x[7]*z[5]+x[0]*y[7]*z[4]+x[1]*y[2]*z +[0]-z[1]*x[4]*y[0]-z[0]*x[4]*y[7]-z[2]*x[0]*y[3]; + s8 = x[5]*y[0]*z[4]+z[1]*x[0]*y[5]-x[2]*y[0]*z[3]-z[1]*x[5]*y[0]+y[1]*x +[5]*z[0]-x[1]*y[0]*z[3]-x[1]*y[4]*z[0]-y[1]*x[5]*z[2]+x[2]*y[7]*z[3]+y[0]*x[4]* +z[3]-x[0]*y[4]*z[7]+x[1]*y[0]*z[5]-y[1]*x[6]*z[2]-y[2]*x[6]*z[3]+y[0]*x[7]*z[3] +-y[2]*x[7]*z[3]+z[2]*x[7]*y[3]+y[2]*x[0]*z[3]; + s6 = s8+y[2]*x[3]*z[7]-y[2]*x[3]*z[0]-x[6]*y[5]*z[2]-y[5]*x[0]*z[4]+z[2]* +x[3]*y[0]+x[2]*y[3]*z[1]+x[0]*y[3]*z[7]-x[2]*y[1]*z[3]+y[1]*x[4]*z[0]+y[1]*x[0] +*z[2]-z[1]*x[2]*y[6]+y[2]*x[3]*z[6]-y[1]*x[2]*z[0]+z[1]*x[3]*y[0]-x[1]*y[2]*z +[6]-x[2]*y[3]*z[6]+x[0]*y[3]*z[4]+z[0]*x[3]*y[4]+s7; + s8 = x[5]*y[4]*z[7]+s6+y[5]*x[6]*z[4]-y[5]*x[4]*z[6]+z[6]*x[5]*y[7]-x[6]* +y[2]*z[7]-x[6]*y[7]*z[5]+x[5]*y[6]*z[2]+x[6]*y[5]*z[7]+x[6]*y[7]*z[2]+y[6]*x[7] +*z[4]-y[6]*x[4]*z[7]-y[6]*x[7]*z[3]+z[6]*x[7]*y[2]+x[2]*y[5]*z[6]-x[2]*y[6]*z +[5]+y[6]*x[2]*z[7]+x[6]*y[2]*z[5]; + s7 = s8-x[5]*y[2]*z[6]-z[6]*x[7]*y[5]-z[5]*x[7]*y[4]+z[5]*x[0]*y[4]-y[5]* +x[4]*z[7]+y[0]*x[4]*z[7]-z[6]*x[2]*y[7]-x[5]*y[4]*z[0]-x[5]*y[7]*z[4]-y[0]*x[7] +*z[4]+y[5]*x[4]*z[1]-x[6]*y[7]*z[4]+x[7]*y[4]*z[3]-x[4]*y[7]*z[3]+x[3]*y[7]*z +[4]-x[7]*y[3]*z[4]-x[6]*y[3]*z[7]+x[6]*y[4]*z[7]; + s8 = -x[3]*y[4]*z[7]+x[4]*y[3]*z[7]-z[6]*x[7]*y[4]-z[1]*x[6]*y[5]+x[6]*y +[7]*z[3]-x[1]*y[6]*z[5]-y[1]*x[5]*z[6]+z[5]*x[4]*y[7]-z[5]*x[4]*y[0]+x[1]*y[5]* +z[6]-y[6]*x[5]*z[7]-y[2]*x[3]*z[1]+z[1]*x[5]*y[6]-y[5]*x[1]*z[4]+z[6]*x[4]*y[7] ++x[5]*y[1]*z[4]-x[5]*y[6]*z[4]+y[6]*x[3]*z[7]-x[5]*y[4]*z[1]; + s5 = s8+x[5]*y[4]*z[6]+z[5]*x[1]*y[4]+y[1]*x[6]*z[5]-z[6]*x[3]*y[7]+z[6]* +x[7]*y[3]-z[5]*x[6]*y[4]-z[5]*x[4]*y[1]+z[5]*x[4]*y[6]+x[1]*y[6]*z[2]+x[2]*y[6] +*z[3]+z[2]*x[6]*y[3]+z[1]*x[6]*y[2]+z[2]*x[3]*y[1]-z[2]*x[1]*y[3]-z[2]*x[3]*y +[6]+y[2]*x[1]*z[3]+y[1]*x[2]*z[6]-z[0]*x[7]*y[3]+s7; + s4 = 1/s5; + s2 = s3*s4; + const double unknown0 = s1*s2; + s1 = 1.0/6.0; + s8 = 2.0*x[1]*y[0]*y[0]*z[4]+x[5]*y[0]*y[0]*z[4]-x[1]*y[4]*y[4]*z[0]+z[1] +*x[0]*y[4]*y[4]+x[1]*y[0]*y[0]*z[5]-z[1]*x[5]*y[0]*y[0]-2.0*z[1]*x[4]*y[0]*y[0] ++2.0*z[1]*x[3]*y[0]*y[0]+z[2]*x[3]*y[0]*y[0]+y[0]*y[0]*x[7]*z[3]+2.0*y[0]*y[0]* +x[4]*z[3]-2.0*x[1]*y[0]*y[0]*z[3]-2.0*x[5]*y[4]*y[4]*z[0]+2.0*z[5]*x[0]*y[4]*y +[4]+2.0*y[4]*y[5]*x[7]*z[4]; + s7 = s8-x[3]*y[4]*y[4]*z[7]+x[7]*y[4]*y[4]*z[3]+z[0]*x[3]*y[4]*y[4]-2.0*x +[0]*y[4]*y[4]*z[7]-y[1]*x[1]*y[4]*z[0]-x[0]*y[4]*y[4]*z[3]+2.0*z[0]*x[7]*y[4]*y +[4]+y[4]*z[6]*x[4]*y[7]-y[0]*y[0]*x[7]*z[4]+y[0]*y[0]*x[4]*z[7]+2.0*y[4]*z[5]*x +[4]*y[7]-2.0*y[4]*x[5]*y[7]*z[4]-y[4]*x[6]*y[7]*z[4]-y[4]*y[6]*x[4]*z[7]-2.0*y +[4]*y[5]*x[4]*z[7]; + s8 = y[4]*y[6]*x[7]*z[4]-y[7]*y[2]*x[7]*z[3]+y[7]*z[2]*x[7]*y[3]+y[7]*y +[2]*x[3]*z[7]+2.0*x[5]*y[4]*y[4]*z[7]-y[7]*x[2]*y[3]*z[7]-y[0]*z[0]*x[4]*y[7]+z +[6]*x[7]*y[3]*y[3]-y[0]*x[0]*y[4]*z[7]+y[0]*x[0]*y[7]*z[4]-2.0*x[2]*y[3]*y[3]*z +[7]-z[5]*x[4]*y[0]*y[0]+y[0]*z[0]*x[7]*y[4]-2.0*z[6]*x[3]*y[7]*y[7]+z[1]*x[2]*y +[0]*y[0]; + s6 = s8+y[4]*y[0]*x[4]*z[3]-2.0*y[4]*z[0]*x[4]*y[7]+2.0*y[4]*x[0]*y[7]*z +[4]-y[4]*z[0]*x[4]*y[3]-y[4]*x[0]*y[7]*z[3]+y[4]*z[0]*x[3]*y[7]-y[4]*y[0]*x[3]* +z[4]+y[0]*x[4]*y[3]*z[7]-y[0]*x[7]*y[3]*z[4]-y[0]*x[3]*y[4]*z[7]+y[0]*x[7]*y[4] +*z[3]+x[2]*y[7]*y[7]*z[3]-z[2]*x[3]*y[7]*y[7]-2.0*z[2]*x[0]*y[3]*y[3]+2.0*y[0]* +z[1]*x[0]*y[4]+s7; + s8 = -2.0*y[0]*y[1]*x[0]*z[4]-y[0]*y[1]*x[0]*z[5]-y[0]*y[0]*x[3]*z[7]-z +[1]*x[0]*y[3]*y[3]-y[0]*x[1]*y[5]*z[0]-2.0*z[0]*x[7]*y[3]*y[3]+x[0]*y[3]*y[3]*z +[4]+2.0*x[0]*y[3]*y[3]*z[7]-z[0]*x[4]*y[3]*y[3]+2.0*x[2]*y[3]*y[3]*z[0]+x[1]*y +[3]*y[3]*z[0]+2.0*y[7]*z[6]*x[7]*y[3]+2.0*y[7]*y[6]*x[3]*z[7]-2.0*y[7]*y[6]*x +[7]*z[3]-2.0*y[7]*x[6]*y[3]*z[7]; + s7 = s8+y[4]*x[4]*y[3]*z[7]-y[4]*x[4]*y[7]*z[3]+y[4]*x[3]*y[7]*z[4]-y[4]* +x[7]*y[3]*z[4]+2.0*y[4]*y[0]*x[4]*z[7]-2.0*y[4]*y[0]*x[7]*z[4]+2.0*x[6]*y[7]*y +[7]*z[3]+y[4]*x[0]*y[3]*z[4]+y[0]*y[1]*x[5]*z[0]+y[0]*z[1]*x[0]*y[5]-x[2]*y[0]* +y[0]*z[3]+x[4]*y[3]*y[3]*z[7]-x[7]*y[3]*y[3]*z[4]-x[5]*y[4]*y[4]*z[1]+y[3]*z[0] +*x[3]*y[4]; + s8 = y[3]*y[0]*x[4]*z[3]+2.0*y[3]*y[0]*x[7]*z[3]+2.0*y[3]*y[2]*x[0]*z[3] +-2.0*y[3]*y[2]*x[3]*z[0]+2.0*y[3]*z[2]*x[3]*y[0]+y[3]*z[1]*x[3]*y[0]-2.0*y[3]*x +[2]*y[0]*z[3]-y[3]*x[1]*y[0]*z[3]-y[3]*y[1]*x[3]*z[0]-2.0*y[3]*x[0]*y[7]*z[3]-y +[3]*x[0]*y[4]*z[3]-2.0*y[3]*y[0]*x[3]*z[7]-y[3]*y[0]*x[3]*z[4]+2.0*y[3]*z[0]*x +[3]*y[7]+y[3]*y[1]*x[0]*z[3]+z[5]*x[1]*y[4]*y[4]; + s5 = s8-2.0*y[0]*y[0]*x[3]*z[4]-2.0*y[0]*x[1]*y[4]*z[0]+y[3]*x[7]*y[4]*z +[3]-y[3]*x[4]*y[7]*z[3]+y[3]*x[3]*y[7]*z[4]-y[3]*x[3]*y[4]*z[7]+y[3]*x[0]*y[7]* +z[4]-y[3]*z[0]*x[4]*y[7]-2.0*y[4]*y[5]*x[0]*z[4]+s6+y[7]*x[0]*y[3]*z[7]-y[7]*z +[0]*x[7]*y[3]+y[7]*y[0]*x[7]*z[3]-y[7]*y[0]*x[3]*z[7]+2.0*y[0]*y[1]*x[4]*z[0]+ +s7; + s8 = -2.0*y[7]*x[7]*y[3]*z[4]-2.0*y[7]*x[3]*y[4]*z[7]+2.0*y[7]*x[4]*y[3]* +z[7]+y[7]*y[0]*x[4]*z[7]-y[7]*y[0]*x[7]*z[4]+2.0*y[7]*x[7]*y[4]*z[3]-y[7]*x[0]* +y[4]*z[7]+y[7]*z[0]*x[7]*y[4]+z[5]*x[4]*y[7]*y[7]+2.0*z[6]*x[4]*y[7]*y[7]-x[5]* +y[7]*y[7]*z[4]-2.0*x[6]*y[7]*y[7]*z[4]+2.0*y[7]*x[6]*y[4]*z[7]-2.0*y[7]*z[6]*x +[7]*y[4]+2.0*y[7]*y[6]*x[7]*z[4]; + s7 = s8-2.0*y[7]*y[6]*x[4]*z[7]-y[7]*z[5]*x[7]*y[4]-y[7]*y[5]*x[4]*z[7]-x +[0]*y[7]*y[7]*z[3]+z[0]*x[3]*y[7]*y[7]+y[7]*x[5]*y[4]*z[7]+y[7]*y[5]*x[7]*z[4]- +y[4]*x[1]*y[5]*z[0]-x[1]*y[0]*y[0]*z[2]-y[4]*y[5]*x[1]*z[4]-2.0*y[4]*z[5]*x[4]* +y[0]-y[4]*y[1]*x[0]*z[4]+y[4]*y[5]*x[4]*z[1]+y[0]*z[0]*x[3]*y[7]-y[0]*z[1]*x[0] +*y[2]; + s8 = 2.0*y[0]*x[1]*y[3]*z[0]+y[4]*y[1]*x[4]*z[0]+2.0*y[0]*y[1]*x[0]*z[3]+ +y[4]*x[1]*y[0]*z[5]-y[4]*z[1]*x[5]*y[0]+y[4]*z[1]*x[0]*y[5]-y[4]*z[1]*x[4]*y[0] ++y[4]*x[1]*y[0]*z[4]-y[4]*z[5]*x[4]*y[1]+x[5]*y[4]*y[4]*z[6]-z[5]*x[6]*y[4]*y +[4]+y[4]*x[5]*y[1]*z[4]-y[0]*z[2]*x[0]*y[3]+y[0]*y[5]*x[4]*z[0]+y[0]*x[1]*y[2]* +z[0]; + s6 = s8-2.0*y[0]*z[0]*x[4]*y[3]-2.0*y[0]*x[0]*y[4]*z[3]-2.0*y[0]*z[1]*x +[0]*y[3]-y[0]*x[0]*y[7]*z[3]-2.0*y[0]*y[1]*x[3]*z[0]+y[0]*x[2]*y[3]*z[0]-y[0]*y +[1]*x[2]*z[0]+y[0]*y[1]*x[0]*z[2]-y[0]*x[2]*y[1]*z[3]+y[0]*x[0]*y[3]*z[7]+y[0]* +x[2]*y[3]*z[1]-y[0]*y[2]*x[3]*z[0]+y[0]*y[2]*x[0]*z[3]-y[0]*y[5]*x[0]*z[4]-y[4] +*y[5]*x[4]*z[6]+s7; + s8 = s6+y[4]*z[6]*x[5]*y[7]-y[4]*x[6]*y[7]*z[5]+y[4]*x[6]*y[5]*z[7]-y[4]* +z[6]*x[7]*y[5]-y[4]*x[5]*y[6]*z[4]+y[4]*z[5]*x[4]*y[6]+y[4]*y[5]*x[6]*z[4]-2.0* +y[1]*y[1]*x[0]*z[5]+2.0*y[1]*y[1]*x[5]*z[0]-2.0*y[2]*y[2]*x[6]*z[3]+x[5]*y[1]*y +[1]*z[4]-z[5]*x[4]*y[1]*y[1]-x[6]*y[2]*y[2]*z[7]+z[6]*x[7]*y[2]*y[2]; + s7 = s8-x[1]*y[5]*y[5]*z[0]+z[1]*x[0]*y[5]*y[5]+y[1]*y[5]*x[4]*z[1]-y[1]* +y[5]*x[1]*z[4]-2.0*y[2]*z[2]*x[3]*y[6]+2.0*y[1]*z[1]*x[0]*y[5]-2.0*y[1]*z[1]*x +[5]*y[0]+2.0*y[1]*x[1]*y[0]*z[5]-y[2]*x[2]*y[3]*z[7]-y[2]*z[2]*x[3]*y[7]+y[2]*x +[2]*y[7]*z[3]+y[2]*z[2]*x[7]*y[3]-2.0*y[2]*x[2]*y[3]*z[6]+2.0*y[2]*x[2]*y[6]*z +[3]+2.0*y[2]*z[2]*x[6]*y[3]-y[3]*y[2]*x[6]*z[3]; + s8 = y[3]*y[2]*x[3]*z[6]+y[3]*x[2]*y[6]*z[3]-y[3]*z[2]*x[3]*y[6]-y[2]*y +[2]*x[7]*z[3]+2.0*y[2]*y[2]*x[3]*z[6]+y[2]*y[2]*x[3]*z[7]-2.0*y[1]*x[1]*y[5]*z +[0]-x[2]*y[3]*y[3]*z[6]+z[2]*x[6]*y[3]*y[3]+2.0*y[6]*x[2]*y[5]*z[6]+2.0*y[6]*x +[6]*y[2]*z[5]-2.0*y[6]*x[5]*y[2]*z[6]+2.0*y[3]*x[2]*y[7]*z[3]-2.0*y[3]*z[2]*x +[3]*y[7]-y[0]*z[0]*x[7]*y[3]-y[0]*z[2]*x[1]*y[3]; + s4 = s8-y[2]*y[6]*x[7]*z[2]+y[0]*z[2]*x[3]*y[1]+y[1]*z[5]*x[1]*y[4]-y[1]* +x[5]*y[4]*z[1]+2.0*y[0]*z[0]*x[3]*y[4]+2.0*y[0]*x[0]*y[3]*z[4]+2.0*z[2]*x[7]*y +[3]*y[3]-2.0*z[5]*x[7]*y[4]*y[4]+x[6]*y[4]*y[4]*z[7]-z[6]*x[7]*y[4]*y[4]+y[1]*y +[1]*x[0]*z[3]+y[3]*x[6]*y[7]*z[2]-y[3]*z[6]*x[2]*y[7]+2.0*y[3]*y[2]*x[3]*z[7]+ +s5+s7; + s8 = s4+y[2]*x[6]*y[7]*z[2]-y[2]*y[6]*x[7]*z[3]+y[2]*y[6]*x[2]*z[7]-y[2]* +z[6]*x[2]*y[7]-y[2]*x[6]*y[3]*z[7]+y[2]*y[6]*x[3]*z[7]+y[2]*z[6]*x[7]*y[3]-2.0* +y[3]*y[2]*x[7]*z[3]-x[6]*y[3]*y[3]*z[7]+y[1]*y[1]*x[4]*z[0]-y[1]*y[1]*x[3]*z[0] ++x[2]*y[6]*y[6]*z[3]-z[2]*x[3]*y[6]*y[6]-y[1]*y[1]*x[0]*z[4]; + s7 = s8+y[5]*x[1]*y[0]*z[5]+y[6]*x[2]*y[7]*z[3]-y[6]*y[2]*x[6]*z[3]+y[6]* +y[2]*x[3]*z[6]-y[6]*x[2]*y[3]*z[6]+y[6]*z[2]*x[6]*y[3]-y[5]*y[1]*x[0]*z[5]-y[5] +*z[1]*x[5]*y[0]+y[5]*y[1]*x[5]*z[0]-y[6]*z[2]*x[3]*y[7]-y[7]*y[6]*x[7]*z[2]+2.0 +*y[6]*y[6]*x[2]*z[7]+y[6]*y[6]*x[3]*z[7]+x[6]*y[7]*y[7]*z[2]-z[6]*x[2]*y[7]*y +[7]; + s8 = -x[2]*y[1]*y[1]*z[3]+2.0*y[1]*y[1]*x[0]*z[2]-2.0*y[1]*y[1]*x[2]*z[0] ++z[2]*x[3]*y[1]*y[1]-z[1]*x[0]*y[2]*y[2]+x[1]*y[2]*y[2]*z[0]+y[2]*y[2]*x[0]*z +[3]-y[2]*y[2]*x[3]*z[0]-2.0*y[2]*y[2]*x[3]*z[1]+y[1]*x[1]*y[3]*z[0]-2.0*y[6]*y +[6]*x[7]*z[2]+2.0*y[5]*y[5]*x[4]*z[1]-2.0*y[5]*y[5]*x[1]*z[4]-y[6]*y[6]*x[7]*z +[3]-2.0*y[1]*x[1]*y[0]*z[2]; + s6 = s8+2.0*y[1]*z[1]*x[2]*y[0]-2.0*y[1]*z[1]*x[0]*y[2]+2.0*y[1]*x[1]*y +[2]*z[0]+y[1]*x[2]*y[3]*z[1]-y[1]*y[2]*x[3]*z[1]-y[1]*z[2]*x[1]*y[3]+y[1]*y[2]* +x[1]*z[3]-y[2]*x[1]*y[0]*z[2]+y[2]*z[1]*x[2]*y[0]+y[2]*x[2]*y[3]*z[0]-y[7]*x[6] +*y[2]*z[7]+y[7]*z[6]*x[7]*y[2]+y[7]*y[6]*x[2]*z[7]-y[6]*x[6]*y[3]*z[7]+y[6]*x +[6]*y[7]*z[3]+s7; + s8 = s6-y[6]*z[6]*x[3]*y[7]+y[6]*z[6]*x[7]*y[3]+2.0*y[2]*y[2]*x[1]*z[3]+x +[2]*y[3]*y[3]*z[1]-z[2]*x[1]*y[3]*y[3]+y[1]*x[1]*y[0]*z[4]+y[1]*z[1]*x[3]*y[0]- +y[1]*x[1]*y[0]*z[3]+2.0*y[5]*x[5]*y[1]*z[4]-2.0*y[5]*x[5]*y[4]*z[1]+2.0*y[5]*z +[5]*x[1]*y[4]-2.0*y[5]*z[5]*x[4]*y[1]-2.0*y[6]*x[6]*y[2]*z[7]+2.0*y[6]*x[6]*y +[7]*z[2]; + s7 = s8+2.0*y[6]*z[6]*x[7]*y[2]-2.0*y[6]*z[6]*x[2]*y[7]-y[1]*z[1]*x[4]*y +[0]+y[1]*z[1]*x[0]*y[4]-y[1]*z[1]*x[0]*y[3]+2.0*y[6]*y[6]*x[7]*z[5]+2.0*y[5]*y +[5]*x[6]*z[4]-2.0*y[5]*y[5]*x[4]*z[6]+x[6]*y[5]*y[5]*z[7]-y[3]*x[2]*y[1]*z[3]-y +[3]*y[2]*x[3]*z[1]+y[3]*z[2]*x[3]*y[1]+y[3]*y[2]*x[1]*z[3]-y[2]*x[2]*y[0]*z[3]+ +y[2]*z[2]*x[3]*y[0]; + s8 = s7+2.0*y[2]*x[2]*y[3]*z[1]-2.0*y[2]*x[2]*y[1]*z[3]+y[2]*y[1]*x[0]*z +[2]-y[2]*y[1]*x[2]*z[0]+2.0*y[2]*z[2]*x[3]*y[1]-2.0*y[2]*z[2]*x[1]*y[3]-y[2]*z +[2]*x[0]*y[3]+y[5]*z[6]*x[5]*y[7]-y[5]*x[6]*y[7]*z[5]-y[5]*y[6]*x[4]*z[7]-y[5]* +y[6]*x[5]*z[7]-2.0*y[5]*x[5]*y[6]*z[4]+2.0*y[5]*x[5]*y[4]*z[6]-2.0*y[5]*z[5]*x +[6]*y[4]+2.0*y[5]*z[5]*x[4]*y[6]; + s5 = s8-y[1]*y[5]*x[0]*z[4]-z[6]*x[7]*y[5]*y[5]+y[6]*y[6]*x[7]*z[4]-y[6]* +y[6]*x[4]*z[7]-2.0*y[6]*y[6]*x[5]*z[7]-x[5]*y[6]*y[6]*z[4]+z[5]*x[4]*y[6]*y[6]+ +z[6]*x[5]*y[7]*y[7]-x[6]*y[7]*y[7]*z[5]+y[1]*y[5]*x[4]*z[0]+y[7]*y[6]*x[7]*z[5] ++y[6]*y[5]*x[7]*z[4]+y[5]*y[6]*x[7]*z[5]+y[6]*y[5]*x[6]*z[4]-y[6]*y[5]*x[4]*z +[6]+2.0*y[6]*z[6]*x[5]*y[7]; + s8 = s5-2.0*y[6]*x[6]*y[7]*z[5]+2.0*y[6]*x[6]*y[5]*z[7]-2.0*y[6]*z[6]*x +[7]*y[5]-y[6]*x[5]*y[7]*z[4]-y[6]*x[6]*y[7]*z[4]+y[6]*x[6]*y[4]*z[7]-y[6]*z[6]* +x[7]*y[4]+y[6]*z[5]*x[4]*y[7]+y[6]*z[6]*x[4]*y[7]+y[6]*x[5]*y[4]*z[6]-y[6]*z[5] +*x[6]*y[4]+y[7]*x[6]*y[5]*z[7]-y[7]*z[6]*x[7]*y[5]-2.0*y[6]*x[6]*y[5]*z[2]; + s7 = s8-y[7]*y[6]*x[5]*z[7]+2.0*y[4]*y[5]*x[4]*z[0]+2.0*x[3]*y[7]*y[7]*z +[4]-2.0*x[4]*y[7]*y[7]*z[3]-z[0]*x[4]*y[7]*y[7]+x[0]*y[7]*y[7]*z[4]-y[0]*z[5]*x +[4]*y[1]+y[0]*x[5]*y[1]*z[4]-y[0]*x[5]*y[4]*z[0]+y[0]*z[5]*x[0]*y[4]-y[5]*y[5]* +x[0]*z[4]+y[5]*y[5]*x[4]*z[0]+2.0*y[1]*y[1]*x[2]*z[5]-2.0*y[1]*y[1]*x[5]*z[2]+z +[1]*x[5]*y[2]*y[2]; + s8 = s7-x[1]*y[2]*y[2]*z[5]-y[5]*z[5]*x[4]*y[0]+y[5]*z[5]*x[0]*y[4]-y[5]* +x[5]*y[4]*z[0]-y[2]*x[1]*y[6]*z[5]-y[2]*y[1]*x[5]*z[6]+y[2]*z[1]*x[5]*y[6]+y[2] +*y[1]*x[6]*z[5]-y[1]*z[1]*x[6]*y[5]-y[1]*x[1]*y[6]*z[5]+y[1]*x[1]*y[5]*z[6]+y +[1]*z[1]*x[5]*y[6]+y[5]*x[5]*y[0]*z[4]+y[2]*y[1]*x[2]*z[5]-y[2]*z[1]*x[2]*y[5]; + s6 = s8+y[2]*x[1]*y[5]*z[2]-y[2]*y[1]*x[5]*z[2]-y[1]*y[1]*x[5]*z[6]+y[1]* +y[1]*x[6]*z[5]-z[1]*x[2]*y[5]*y[5]+x[1]*y[5]*y[5]*z[2]+2.0*y[1]*z[1]*x[5]*y[2] +-2.0*y[1]*x[1]*y[2]*z[5]-2.0*y[1]*z[1]*x[2]*y[5]+2.0*y[1]*x[1]*y[5]*z[2]-y[1]*y +[1]*x[6]*z[2]+y[1]*y[1]*x[2]*z[6]-2.0*y[5]*x[1]*y[6]*z[5]-2.0*y[5]*y[1]*x[5]*z +[6]+2.0*y[5]*z[1]*x[5]*y[6]+2.0*y[5]*y[1]*x[6]*z[5]; + s8 = s6-y[6]*z[1]*x[6]*y[5]-y[6]*y[1]*x[5]*z[6]+y[6]*x[1]*y[5]*z[6]+y[6]* +y[1]*x[6]*z[5]-2.0*z[1]*x[6]*y[5]*y[5]+2.0*x[1]*y[5]*y[5]*z[6]-x[1]*y[6]*y[6]*z +[5]+z[1]*x[5]*y[6]*y[6]+y[5]*z[1]*x[5]*y[2]-y[5]*x[1]*y[2]*z[5]+y[5]*y[1]*x[2]* +z[5]-y[5]*y[1]*x[5]*z[2]-y[6]*z[1]*x[2]*y[5]+y[6]*x[1]*y[5]*z[2]; + s7 = s8-y[1]*z[1]*x[2]*y[6]-y[1]*x[1]*y[2]*z[6]+y[1]*x[1]*y[6]*z[2]+y[1]* +z[1]*x[6]*y[2]+y[5]*x[5]*y[6]*z[2]-y[5]*x[2]*y[6]*z[5]+y[5]*x[6]*y[2]*z[5]-y[5] +*x[5]*y[2]*z[6]-x[6]*y[5]*y[5]*z[2]+x[2]*y[5]*y[5]*z[6]-y[5]*y[5]*x[4]*z[7]+y +[5]*y[5]*x[7]*z[4]-y[1]*x[6]*y[5]*z[2]+y[1]*x[2]*y[5]*z[6]-y[2]*x[6]*y[5]*z[2] +-2.0*y[2]*y[1]*x[6]*z[2]; + s8 = s7-2.0*y[2]*z[1]*x[2]*y[6]+2.0*y[2]*x[1]*y[6]*z[2]+2.0*y[2]*y[1]*x +[2]*z[6]-2.0*x[1]*y[2]*y[2]*z[6]+2.0*z[1]*x[6]*y[2]*y[2]+x[6]*y[2]*y[2]*z[5]-x +[5]*y[2]*y[2]*z[6]+2.0*x[5]*y[6]*y[6]*z[2]-2.0*x[2]*y[6]*y[6]*z[5]-z[1]*x[2]*y +[6]*y[6]-y[6]*y[1]*x[6]*z[2]-y[6]*x[1]*y[2]*z[6]+y[6]*z[1]*x[6]*y[2]+y[6]*y[1]* +x[2]*z[6]+x[1]*y[6]*y[6]*z[2]; + s3 = s8+y[2]*x[5]*y[6]*z[2]+y[2]*x[2]*y[5]*z[6]-y[2]*x[2]*y[6]*z[5]+y[5]* +z[5]*x[4]*y[7]+y[5]*x[5]*y[4]*z[7]-y[5]*z[5]*x[7]*y[4]-y[5]*x[5]*y[7]*z[4]+2.0* +y[4]*x[5]*y[0]*z[4]-y[3]*z[6]*x[3]*y[7]+y[3]*y[6]*x[3]*z[7]+y[3]*x[6]*y[7]*z[3] +-y[3]*y[6]*x[7]*z[3]-y[2]*y[1]*x[3]*z[0]-y[2]*z[1]*x[0]*y[3]+y[2]*y[1]*x[0]*z +[3]+y[2]*x[1]*y[3]*z[0]; + s8 = y[1]*x[0]*z[3]+x[1]*y[3]*z[0]-y[0]*x[3]*z[7]-x[1]*y[5]*z[0]-y[0]*x +[3]*z[4]-x[1]*y[0]*z[2]+z[1]*x[2]*y[0]-y[1]*x[0]*z[5]-z[1]*x[0]*y[2]-y[1]*x[0]* +z[4]+z[1]*x[5]*y[2]+z[0]*x[7]*y[4]+z[0]*x[3]*y[7]+z[1]*x[0]*y[4]-x[1]*y[2]*z[5] ++x[2]*y[3]*z[0]+y[1]*x[2]*z[5]-x[2]*y[3]*z[7]; + s7 = s8-z[1]*x[2]*y[5]-y[1]*x[3]*z[0]-x[0]*y[7]*z[3]-z[1]*x[0]*y[3]+y[5]* +x[4]*z[0]-x[0]*y[4]*z[3]+y[5]*x[7]*z[4]-z[0]*x[4]*y[3]+x[1]*y[0]*z[4]-z[2]*x[3] +*y[7]-y[6]*x[7]*z[2]+x[1]*y[5]*z[2]+y[6]*x[7]*z[5]+x[0]*y[7]*z[4]+x[1]*y[2]*z +[0]-z[1]*x[4]*y[0]-z[0]*x[4]*y[7]-z[2]*x[0]*y[3]; + s8 = x[5]*y[0]*z[4]+z[1]*x[0]*y[5]-x[2]*y[0]*z[3]-z[1]*x[5]*y[0]+y[1]*x +[5]*z[0]-x[1]*y[0]*z[3]-x[1]*y[4]*z[0]-y[1]*x[5]*z[2]+x[2]*y[7]*z[3]+y[0]*x[4]* +z[3]-x[0]*y[4]*z[7]+x[1]*y[0]*z[5]-y[1]*x[6]*z[2]-y[2]*x[6]*z[3]+y[0]*x[7]*z[3] +-y[2]*x[7]*z[3]+z[2]*x[7]*y[3]+y[2]*x[0]*z[3]; + s6 = s8+y[2]*x[3]*z[7]-y[2]*x[3]*z[0]-x[6]*y[5]*z[2]-y[5]*x[0]*z[4]+z[2]* +x[3]*y[0]+x[2]*y[3]*z[1]+x[0]*y[3]*z[7]-x[2]*y[1]*z[3]+y[1]*x[4]*z[0]+y[1]*x[0] +*z[2]-z[1]*x[2]*y[6]+y[2]*x[3]*z[6]-y[1]*x[2]*z[0]+z[1]*x[3]*y[0]-x[1]*y[2]*z +[6]-x[2]*y[3]*z[6]+x[0]*y[3]*z[4]+z[0]*x[3]*y[4]+s7; + s8 = x[5]*y[4]*z[7]+s6+y[5]*x[6]*z[4]-y[5]*x[4]*z[6]+z[6]*x[5]*y[7]-x[6]* +y[2]*z[7]-x[6]*y[7]*z[5]+x[5]*y[6]*z[2]+x[6]*y[5]*z[7]+x[6]*y[7]*z[2]+y[6]*x[7] +*z[4]-y[6]*x[4]*z[7]-y[6]*x[7]*z[3]+z[6]*x[7]*y[2]+x[2]*y[5]*z[6]-x[2]*y[6]*z +[5]+y[6]*x[2]*z[7]+x[6]*y[2]*z[5]; + s7 = s8-x[5]*y[2]*z[6]-z[6]*x[7]*y[5]-z[5]*x[7]*y[4]+z[5]*x[0]*y[4]-y[5]* +x[4]*z[7]+y[0]*x[4]*z[7]-z[6]*x[2]*y[7]-x[5]*y[4]*z[0]-x[5]*y[7]*z[4]-y[0]*x[7] +*z[4]+y[5]*x[4]*z[1]-x[6]*y[7]*z[4]+x[7]*y[4]*z[3]-x[4]*y[7]*z[3]+x[3]*y[7]*z +[4]-x[7]*y[3]*z[4]-x[6]*y[3]*z[7]+x[6]*y[4]*z[7]; + s8 = -x[3]*y[4]*z[7]+x[4]*y[3]*z[7]-z[6]*x[7]*y[4]-z[1]*x[6]*y[5]+x[6]*y +[7]*z[3]-x[1]*y[6]*z[5]-y[1]*x[5]*z[6]+z[5]*x[4]*y[7]-z[5]*x[4]*y[0]+x[1]*y[5]* +z[6]-y[6]*x[5]*z[7]-y[2]*x[3]*z[1]+z[1]*x[5]*y[6]-y[5]*x[1]*z[4]+z[6]*x[4]*y[7] ++x[5]*y[1]*z[4]-x[5]*y[6]*z[4]+y[6]*x[3]*z[7]-x[5]*y[4]*z[1]; + s5 = s8+x[5]*y[4]*z[6]+z[5]*x[1]*y[4]+y[1]*x[6]*z[5]-z[6]*x[3]*y[7]+z[6]* +x[7]*y[3]-z[5]*x[6]*y[4]-z[5]*x[4]*y[1]+z[5]*x[4]*y[6]+x[1]*y[6]*z[2]+x[2]*y[6] +*z[3]+z[2]*x[6]*y[3]+z[1]*x[6]*y[2]+z[2]*x[3]*y[1]-z[2]*x[1]*y[3]-z[2]*x[3]*y +[6]+y[2]*x[1]*z[3]+y[1]*x[2]*z[6]-z[0]*x[7]*y[3]+s7; + s4 = 1/s5; + s2 = s3*s4; + const double unknown1 = s1*s2; + s1 = 1.0/6.0; + s8 = -z[2]*x[1]*y[2]*z[5]+z[2]*y[1]*x[2]*z[5]-z[2]*z[1]*x[2]*y[5]+z[2]*z +[1]*x[5]*y[2]+2.0*y[5]*x[7]*z[4]*z[4]-y[1]*x[2]*z[0]*z[0]+x[0]*y[3]*z[7]*z[7] +-2.0*z[5]*z[5]*x[4]*y[1]+2.0*z[5]*z[5]*x[1]*y[4]+z[5]*z[5]*x[0]*y[4]-2.0*z[2]*z +[2]*x[1]*y[3]+2.0*z[2]*z[2]*x[3]*y[1]-x[0]*y[4]*z[7]*z[7]-y[0]*x[3]*z[7]*z[7]+x +[1]*y[0]*z[5]*z[5]; + s7 = s8-y[1]*x[0]*z[5]*z[5]+z[1]*y[1]*x[2]*z[6]+y[1]*x[0]*z[2]*z[2]+z[2]* +z[2]*x[3]*y[0]-z[2]*z[2]*x[0]*y[3]-x[1]*y[0]*z[2]*z[2]+2.0*z[5]*z[5]*x[4]*y[6] +-2.0*z[5]*z[5]*x[6]*y[4]-z[5]*z[5]*x[7]*y[4]-x[6]*y[7]*z[5]*z[5]+2.0*z[2]*y[1]* +x[2]*z[6]-2.0*z[2]*x[1]*y[2]*z[6]+2.0*z[2]*z[1]*x[6]*y[2]-y[6]*x[5]*z[7]*z[7]+ +2.0*x[6]*y[4]*z[7]*z[7]; + s8 = -2.0*y[6]*x[4]*z[7]*z[7]+x[6]*y[5]*z[7]*z[7]-2.0*z[2]*z[1]*x[2]*y[6] ++z[4]*y[6]*x[7]*z[5]+x[5]*y[4]*z[6]*z[6]+z[6]*z[6]*x[4]*y[7]-z[6]*z[6]*x[7]*y +[4]-2.0*z[6]*z[6]*x[7]*y[5]+2.0*z[6]*z[6]*x[5]*y[7]-y[5]*x[4]*z[6]*z[6]+2.0*z +[0]*z[0]*x[3]*y[4]-x[6]*y[5]*z[2]*z[2]+z[1]*z[1]*x[5]*y[6]-z[1]*z[1]*x[6]*y[5]- +z[5]*z[5]*x[4]*y[0]; + s6 = s8+2.0*x[1]*y[3]*z[0]*z[0]+2.0*x[1]*y[6]*z[2]*z[2]-2.0*y[1]*x[6]*z +[2]*z[2]-y[1]*x[5]*z[2]*z[2]-z[1]*z[1]*x[2]*y[6]-2.0*z[1]*z[1]*x[2]*y[5]+2.0*z +[1]*z[1]*x[5]*y[2]+z[1]*y[1]*x[6]*z[5]+y[1]*x[2]*z[5]*z[5]+z[2]*z[1]*x[2]*y[0]+ +z[1]*x[1]*y[5]*z[6]-z[1]*x[1]*y[6]*z[5]-z[1]*y[1]*x[5]*z[6]-z[1]*x[2]*y[6]*z[5] ++z[1]*x[6]*y[2]*z[5]+s7; + s8 = -x[1]*y[2]*z[5]*z[5]+z[1]*x[5]*y[6]*z[2]-2.0*z[2]*z[2]*x[3]*y[6]+2.0 +*z[2]*z[2]*x[6]*y[3]+z[2]*z[2]*x[7]*y[3]-z[2]*z[2]*x[3]*y[7]-z[1]*x[6]*y[5]*z +[2]+2.0*z[1]*x[1]*y[5]*z[2]-2.0*x[3]*y[4]*z[7]*z[7]+2.0*x[4]*y[3]*z[7]*z[7]+x +[5]*y[6]*z[2]*z[2]+y[1]*x[2]*z[6]*z[6]+y[0]*x[4]*z[7]*z[7]+z[2]*x[2]*y[3]*z[0]- +x[1]*y[2]*z[6]*z[6]; + s7 = s8-z[7]*z[2]*x[3]*y[7]+x[2]*y[6]*z[3]*z[3]-y[2]*x[6]*z[3]*z[3]-z[6]* +x[2]*y[3]*z[7]-z[2]*z[1]*x[0]*y[2]+z[6]*z[2]*x[6]*y[3]-z[6]*z[2]*x[3]*y[6]+z[6] +*x[2]*y[6]*z[3]+z[2]*x[1]*y[2]*z[0]+z[6]*y[2]*x[3]*z[7]-z[4]*z[5]*x[6]*y[4]+z +[4]*z[5]*x[4]*y[6]-z[4]*y[6]*x[5]*z[7]+z[4]*z[6]*x[4]*y[7]+z[4]*x[5]*y[4]*z[6]; + s8 = -z[6]*y[2]*x[6]*z[3]-z[4]*y[5]*x[4]*z[6]-z[2]*y[1]*x[5]*z[6]+z[2]*x +[1]*y[5]*z[6]+z[4]*x[6]*y[4]*z[7]+2.0*z[4]*z[5]*x[4]*y[7]-z[4]*z[6]*x[7]*y[4]+x +[6]*y[7]*z[3]*z[3]-2.0*z[4]*z[5]*x[7]*y[4]-2.0*z[4]*y[5]*x[4]*z[7]-z[4]*y[6]*x +[4]*z[7]+z[4]*x[6]*y[5]*z[7]-z[4]*x[6]*y[7]*z[5]+2.0*z[4]*x[5]*y[4]*z[7]+z[2]*x +[2]*y[5]*z[6]-z[2]*x[2]*y[6]*z[5]; + s5 = s8+z[2]*x[6]*y[2]*z[5]-z[2]*x[5]*y[2]*z[6]-z[2]*x[2]*y[3]*z[7]-x[2]* +y[3]*z[7]*z[7]+2.0*z[2]*x[2]*y[3]*z[1]-z[2]*y[2]*x[3]*z[0]+z[2]*y[2]*x[0]*z[3]- +z[2]*x[2]*y[0]*z[3]-z[7]*y[2]*x[7]*z[3]+z[7]*z[2]*x[7]*y[3]+z[7]*x[2]*y[7]*z[3] ++z[6]*y[1]*x[2]*z[5]-z[6]*x[1]*y[2]*z[5]+z[5]*x[1]*y[5]*z[2]+s6+s7; + s8 = z[5]*z[1]*x[5]*y[2]-z[5]*z[1]*x[2]*y[5]-y[6]*x[7]*z[2]*z[2]+2.0*z[2] +*x[2]*y[6]*z[3]-2.0*z[2]*x[2]*y[3]*z[6]+2.0*z[2]*y[2]*x[3]*z[6]+y[2]*x[3]*z[6]* +z[6]+y[6]*x[7]*z[5]*z[5]+z[2]*y[2]*x[3]*z[7]-z[2]*y[2]*x[7]*z[3]-2.0*z[2]*y[2]* +x[6]*z[3]+z[2]*x[2]*y[7]*z[3]+x[6]*y[2]*z[5]*z[5]-2.0*z[2]*x[2]*y[1]*z[3]-x[2]* +y[6]*z[5]*z[5]; + s7 = s8-y[1]*x[5]*z[6]*z[6]+z[6]*x[1]*y[6]*z[2]-z[3]*z[2]*x[3]*y[6]+z[6]* +z[1]*x[6]*y[2]-z[6]*z[1]*x[2]*y[6]-z[6]*y[1]*x[6]*z[2]-2.0*x[5]*y[2]*z[6]*z[6]+ +z[4]*z[1]*x[0]*y[4]-z[3]*x[2]*y[3]*z[6]-z[5]*y[1]*x[5]*z[2]+z[3]*y[2]*x[3]*z[6] ++2.0*x[2]*y[5]*z[6]*z[6]-z[5]*x[1]*y[5]*z[0]+y[2]*x[3]*z[7]*z[7]-x[2]*y[3]*z[6] +*z[6]; + s8 = z[5]*y[5]*x[4]*z[0]+z[3]*z[2]*x[6]*y[3]+x[1]*y[5]*z[6]*z[6]+z[5]*y +[5]*x[7]*z[4]-z[1]*x[1]*y[2]*z[6]+z[1]*x[1]*y[6]*z[2]+2.0*z[6]*y[6]*x[7]*z[5]-z +[7]*y[6]*x[7]*z[2]-z[3]*y[6]*x[7]*z[2]+x[6]*y[7]*z[2]*z[2]-2.0*z[6]*y[6]*x[7]*z +[2]-2.0*x[6]*y[3]*z[7]*z[7]-x[6]*y[2]*z[7]*z[7]-z[5]*x[6]*y[5]*z[2]+y[6]*x[2]*z +[7]*z[7]; + s6 = s8+2.0*y[6]*x[3]*z[7]*z[7]+z[6]*z[6]*x[7]*y[3]-y[6]*x[7]*z[3]*z[3]+z +[5]*x[5]*y[0]*z[4]+2.0*z[6]*z[6]*x[7]*y[2]-2.0*z[6]*z[6]*x[2]*y[7]-z[6]*z[6]*x +[3]*y[7]+z[7]*y[6]*x[7]*z[5]+z[7]*y[5]*x[7]*z[4]-2.0*z[7]*x[7]*y[3]*z[4]+2.0*z +[7]*x[3]*y[7]*z[4]-2.0*z[7]*x[4]*y[7]*z[3]+2.0*z[7]*x[7]*y[4]*z[3]-z[7]*y[0]*x +[7]*z[4]-2.0*z[7]*z[6]*x[3]*y[7]+s7; + s8 = s6+2.0*z[7]*z[6]*x[7]*y[3]+2.0*z[7]*x[6]*y[7]*z[3]+z[7]*x[6]*y[7]*z +[2]-2.0*z[7]*y[6]*x[7]*z[3]+z[7]*z[6]*x[7]*y[2]-z[7]*z[6]*x[2]*y[7]+z[5]*y[1]*x +[5]*z[0]-z[5]*z[1]*x[5]*y[0]+2.0*y[1]*x[6]*z[5]*z[5]-2.0*x[1]*y[6]*z[5]*z[5]+z +[5]*z[1]*x[0]*y[5]+z[6]*y[6]*x[3]*z[7]+2.0*z[6]*x[6]*y[7]*z[2]-z[6]*y[6]*x[7]*z +[3]; + s7 = s8+2.0*z[6]*y[6]*x[2]*z[7]-z[6]*x[6]*y[3]*z[7]+z[6]*x[6]*y[7]*z[3] +-2.0*z[6]*x[6]*y[2]*z[7]-2.0*z[1]*y[1]*x[5]*z[2]-z[1]*y[1]*x[6]*z[2]-z[7]*z[0]* +x[7]*y[3]-2.0*z[6]*x[6]*y[5]*z[2]-z[2]*z[6]*x[3]*y[7]+z[2]*x[6]*y[7]*z[3]-z[2]* +z[6]*x[2]*y[7]+y[5]*x[6]*z[4]*z[4]+z[2]*y[6]*x[2]*z[7]+y[6]*x[7]*z[4]*z[4]+z[2] +*z[6]*x[7]*y[2]-2.0*x[5]*y[7]*z[4]*z[4]; + s8 = -x[6]*y[7]*z[4]*z[4]-z[5]*y[5]*x[0]*z[4]-z[2]*x[6]*y[2]*z[7]-x[5]*y +[6]*z[4]*z[4]-2.0*z[5]*y[1]*x[5]*z[6]+2.0*z[5]*z[1]*x[5]*y[6]+2.0*z[5]*x[1]*y +[5]*z[6]-2.0*z[5]*z[1]*x[6]*y[5]-z[5]*x[5]*y[2]*z[6]+z[5]*x[5]*y[6]*z[2]+z[5]*x +[2]*y[5]*z[6]+z[5]*z[5]*x[4]*y[7]-y[5]*x[4]*z[7]*z[7]+x[5]*y[4]*z[7]*z[7]+z[6]* +z[1]*x[5]*y[6]+z[6]*y[1]*x[6]*z[5]; + s4 = s8-z[6]*z[1]*x[6]*y[5]-z[6]*x[1]*y[6]*z[5]+z[2]*z[6]*x[7]*y[3]+2.0*z +[6]*x[6]*y[2]*z[5]+2.0*z[6]*x[5]*y[6]*z[2]-2.0*z[6]*x[2]*y[6]*z[5]+z[7]*z[0]*x +[3]*y[7]+z[7]*z[0]*x[7]*y[4]+z[3]*z[6]*x[7]*y[3]-z[3]*z[6]*x[3]*y[7]-z[3]*x[6]* +y[3]*z[7]+z[3]*y[6]*x[2]*z[7]-z[3]*x[6]*y[2]*z[7]+z[5]*x[5]*y[4]*z[7]+s5+s7; + s8 = s4+z[3]*y[6]*x[3]*z[7]-z[7]*x[0]*y[7]*z[3]+z[6]*x[5]*y[4]*z[7]+z[7]* +y[0]*x[7]*z[3]+z[5]*z[6]*x[4]*y[7]-2.0*z[5]*x[5]*y[6]*z[4]+2.0*z[5]*x[5]*y[4]*z +[6]-z[5]*x[5]*y[7]*z[4]-z[5]*y[6]*x[5]*z[7]-z[5]*z[6]*x[7]*y[4]-z[7]*z[0]*x[4]* +y[7]-z[5]*z[6]*x[7]*y[5]-z[5]*y[5]*x[4]*z[7]+z[7]*x[0]*y[7]*z[4]; + s7 = s8-2.0*z[5]*y[5]*x[4]*z[6]+z[5]*z[6]*x[5]*y[7]+z[5]*x[6]*y[5]*z[7]+ +2.0*z[5]*y[5]*x[6]*z[4]+z[6]*z[5]*x[4]*y[6]-z[6]*x[5]*y[6]*z[4]-z[6]*z[5]*x[6]* +y[4]-z[6]*x[6]*y[7]*z[4]-2.0*z[6]*y[6]*x[5]*z[7]+z[6]*x[6]*y[4]*z[7]-z[6]*y[5]* +x[4]*z[7]-z[6]*y[6]*x[4]*z[7]+z[6]*y[6]*x[7]*z[4]+z[6]*y[5]*x[6]*z[4]+2.0*z[6]* +x[6]*y[5]*z[7]; + s8 = -2.0*z[6]*x[6]*y[7]*z[5]-z[2]*y[1]*x[2]*z[0]+2.0*z[7]*z[6]*x[4]*y[7] +-2.0*z[7]*x[6]*y[7]*z[4]-2.0*z[7]*z[6]*x[7]*y[4]+z[7]*z[5]*x[4]*y[7]-z[7]*z[5]* +x[7]*y[4]-z[7]*x[5]*y[7]*z[4]+2.0*z[7]*y[6]*x[7]*z[4]-z[7]*z[6]*x[7]*y[5]+z[7]* +z[6]*x[5]*y[7]-z[7]*x[6]*y[7]*z[5]+z[1]*z[1]*x[6]*y[2]+s7+x[1]*y[5]*z[2]*z[2]; + s6 = s8+2.0*z[2]*y[2]*x[1]*z[3]-2.0*z[2]*y[2]*x[3]*z[1]-2.0*x[1]*y[4]*z +[0]*z[0]+2.0*y[1]*x[4]*z[0]*z[0]+2.0*x[2]*y[7]*z[3]*z[3]-2.0*y[2]*x[7]*z[3]*z +[3]-x[1]*y[5]*z[0]*z[0]+z[0]*z[0]*x[7]*y[4]+z[0]*z[0]*x[3]*y[7]+x[2]*y[3]*z[0]* +z[0]-2.0*y[1]*x[3]*z[0]*z[0]+y[5]*x[4]*z[0]*z[0]-2.0*z[0]*z[0]*x[4]*y[3]+x[1]*y +[2]*z[0]*z[0]-z[0]*z[0]*x[4]*y[7]+y[1]*x[5]*z[0]*z[0]; + s8 = s6-y[2]*x[3]*z[0]*z[0]+y[1]*x[0]*z[3]*z[3]-2.0*x[0]*y[7]*z[3]*z[3]-x +[0]*y[4]*z[3]*z[3]-2.0*x[2]*y[0]*z[3]*z[3]-x[1]*y[0]*z[3]*z[3]+y[0]*x[4]*z[3]*z +[3]-2.0*z[0]*y[1]*x[0]*z[4]+2.0*z[0]*z[1]*x[0]*y[4]+2.0*z[0]*x[1]*y[0]*z[4]-2.0 +*z[0]*z[1]*x[4]*y[0]-2.0*z[3]*x[2]*y[3]*z[7]-2.0*z[3]*z[2]*x[3]*y[7]+2.0*z[3]*z +[2]*x[7]*y[3]; + s7 = s8+2.0*z[3]*y[2]*x[3]*z[7]+2.0*z[5]*y[5]*x[4]*z[1]+2.0*z[0]*y[1]*x +[0]*z[3]-z[0]*y[0]*x[3]*z[7]-2.0*z[0]*y[0]*x[3]*z[4]-z[0]*x[1]*y[0]*z[2]+z[0]*z +[1]*x[2]*y[0]-z[0]*y[1]*x[0]*z[5]-z[0]*z[1]*x[0]*y[2]-z[0]*x[0]*y[7]*z[3]-2.0*z +[0]*z[1]*x[0]*y[3]-z[5]*x[5]*y[4]*z[0]-2.0*z[0]*x[0]*y[4]*z[3]+z[0]*x[0]*y[7]*z +[4]-z[0]*z[2]*x[0]*y[3]; + s8 = s7+z[0]*x[5]*y[0]*z[4]+z[0]*z[1]*x[0]*y[5]-z[0]*x[2]*y[0]*z[3]-z[0]* +z[1]*x[5]*y[0]-2.0*z[0]*x[1]*y[0]*z[3]+2.0*z[0]*y[0]*x[4]*z[3]-z[0]*x[0]*y[4]*z +[7]+z[0]*x[1]*y[0]*z[5]+z[0]*y[0]*x[7]*z[3]+z[0]*y[2]*x[0]*z[3]-z[0]*y[5]*x[0]* +z[4]+z[0]*z[2]*x[3]*y[0]+z[0]*x[2]*y[3]*z[1]+z[0]*x[0]*y[3]*z[7]-z[0]*x[2]*y[1] +*z[3]; + s5 = s8+z[0]*y[1]*x[0]*z[2]+z[3]*x[1]*y[3]*z[0]-2.0*z[3]*y[0]*x[3]*z[7]-z +[3]*y[0]*x[3]*z[4]-z[3]*x[1]*y[0]*z[2]+z[3]*z[0]*x[7]*y[4]+2.0*z[3]*z[0]*x[3]*y +[7]+2.0*z[3]*x[2]*y[3]*z[0]-z[3]*y[1]*x[3]*z[0]-z[3]*z[1]*x[0]*y[3]-z[3]*z[0]*x +[4]*y[3]+z[3]*x[1]*y[2]*z[0]-z[3]*z[0]*x[4]*y[7]-2.0*z[3]*z[2]*x[0]*y[3]-z[3]*x +[0]*y[4]*z[7]-2.0*z[3]*y[2]*x[3]*z[0]; + s8 = s5+2.0*z[3]*z[2]*x[3]*y[0]+z[3]*x[2]*y[3]*z[1]+2.0*z[3]*x[0]*y[3]*z +[7]+z[3]*y[1]*x[0]*z[2]-z[4]*y[0]*x[3]*z[7]-z[4]*x[1]*y[5]*z[0]-z[4]*y[1]*x[0]* +z[5]+2.0*z[4]*z[0]*x[7]*y[4]+z[4]*z[0]*x[3]*y[7]+2.0*z[4]*y[5]*x[4]*z[0]+2.0*y +[0]*x[7]*z[3]*z[3]+2.0*y[2]*x[0]*z[3]*z[3]-x[2]*y[1]*z[3]*z[3]-y[0]*x[3]*z[4]*z +[4]; + s7 = s8-y[1]*x[0]*z[4]*z[4]+x[1]*y[0]*z[4]*z[4]+2.0*x[0]*y[7]*z[4]*z[4]+ +2.0*x[5]*y[0]*z[4]*z[4]-2.0*y[5]*x[0]*z[4]*z[4]+2.0*z[1]*z[1]*x[2]*y[0]-2.0*z +[1]*z[1]*x[0]*y[2]+z[1]*z[1]*x[0]*y[4]-z[1]*z[1]*x[0]*y[3]-z[1]*z[1]*x[4]*y[0]+ +2.0*z[1]*z[1]*x[0]*y[5]-2.0*z[1]*z[1]*x[5]*y[0]+x[2]*y[3]*z[1]*z[1]-x[5]*y[4]*z +[0]*z[0]-z[0]*z[0]*x[7]*y[3]; + s8 = s7+x[7]*y[4]*z[3]*z[3]-x[4]*y[7]*z[3]*z[3]+y[2]*x[1]*z[3]*z[3]+x[0]* +y[3]*z[4]*z[4]-2.0*y[0]*x[7]*z[4]*z[4]+x[3]*y[7]*z[4]*z[4]-x[7]*y[3]*z[4]*z[4]- +y[5]*x[1]*z[4]*z[4]+x[5]*y[1]*z[4]*z[4]+z[1]*z[1]*x[3]*y[0]+y[5]*x[4]*z[1]*z[1] +-y[2]*x[3]*z[1]*z[1]-x[5]*y[4]*z[1]*z[1]-z[4]*x[0]*y[4]*z[3]-z[4]*z[0]*x[4]*y +[3]; + s6 = s8-z[4]*z[1]*x[4]*y[0]-2.0*z[4]*z[0]*x[4]*y[7]+z[4]*y[1]*x[5]*z[0] +-2.0*z[5]*x[5]*y[4]*z[1]-z[4]*x[1]*y[4]*z[0]+z[4]*y[0]*x[4]*z[3]-2.0*z[4]*x[0]* +y[4]*z[7]+z[4]*x[1]*y[0]*z[5]-2.0*z[1]*x[1]*y[2]*z[5]+z[4]*x[0]*y[3]*z[7]+2.0*z +[5]*x[5]*y[1]*z[4]+z[4]*y[1]*x[4]*z[0]+z[1]*y[1]*x[0]*z[3]+z[1]*x[1]*y[3]*z[0] +-2.0*z[1]*x[1]*y[5]*z[0]-2.0*z[1]*x[1]*y[0]*z[2]; + s8 = s6-2.0*z[1]*y[1]*x[0]*z[5]-z[1]*y[1]*x[0]*z[4]+2.0*z[1]*y[1]*x[2]*z +[5]-z[1]*y[1]*x[3]*z[0]-2.0*z[5]*y[5]*x[1]*z[4]+z[1]*y[5]*x[4]*z[0]+z[1]*x[1]*y +[0]*z[4]+2.0*z[1]*x[1]*y[2]*z[0]-z[1]*z[2]*x[0]*y[3]+2.0*z[1]*y[1]*x[5]*z[0]-z +[1]*x[1]*y[0]*z[3]-z[1]*x[1]*y[4]*z[0]+2.0*z[1]*x[1]*y[0]*z[5]-z[1]*y[2]*x[3]*z +[0]; + s7 = s8+z[1]*z[2]*x[3]*y[0]-z[1]*x[2]*y[1]*z[3]+z[1]*y[1]*x[4]*z[0]+2.0*z +[1]*y[1]*x[0]*z[2]+2.0*z[0]*z[1]*x[3]*y[0]+2.0*z[0]*x[0]*y[3]*z[4]+z[0]*z[5]*x +[0]*y[4]+z[0]*y[0]*x[4]*z[7]-z[0]*y[0]*x[7]*z[4]-z[0]*x[7]*y[3]*z[4]-z[0]*z[5]* +x[4]*y[0]-z[0]*x[5]*y[4]*z[1]+z[3]*z[1]*x[3]*y[0]+z[3]*x[0]*y[3]*z[4]+z[3]*z[0] +*x[3]*y[4]+z[3]*y[0]*x[4]*z[7]; + s8 = s7+z[3]*x[3]*y[7]*z[4]-z[3]*x[7]*y[3]*z[4]-z[3]*x[3]*y[4]*z[7]+z[3]* +x[4]*y[3]*z[7]-z[3]*y[2]*x[3]*z[1]+z[3]*z[2]*x[3]*y[1]-z[3]*z[2]*x[1]*y[3]-2.0* +z[3]*z[0]*x[7]*y[3]+z[4]*z[0]*x[3]*y[4]+2.0*z[4]*z[5]*x[0]*y[4]+2.0*z[4]*y[0]*x +[4]*z[7]-2.0*z[4]*x[5]*y[4]*z[0]+z[4]*y[5]*x[4]*z[1]+z[4]*x[7]*y[4]*z[3]-z[4]*x +[4]*y[7]*z[3]; + s3 = s8-z[4]*x[3]*y[4]*z[7]+z[4]*x[4]*y[3]*z[7]-2.0*z[4]*z[5]*x[4]*y[0]-z +[4]*x[5]*y[4]*z[1]+z[4]*z[5]*x[1]*y[4]-z[4]*z[5]*x[4]*y[1]-2.0*z[1]*y[1]*x[2]*z +[0]+z[1]*z[5]*x[0]*y[4]-z[1]*z[5]*x[4]*y[0]-z[1]*y[5]*x[1]*z[4]+z[1]*x[5]*y[1]* +z[4]+z[1]*z[5]*x[1]*y[4]-z[1]*z[5]*x[4]*y[1]+z[1]*z[2]*x[3]*y[1]-z[1]*z[2]*x[1] +*y[3]+z[1]*y[2]*x[1]*z[3]; + s8 = y[1]*x[0]*z[3]+x[1]*y[3]*z[0]-y[0]*x[3]*z[7]-x[1]*y[5]*z[0]-y[0]*x +[3]*z[4]-x[1]*y[0]*z[2]+z[1]*x[2]*y[0]-y[1]*x[0]*z[5]-z[1]*x[0]*y[2]-y[1]*x[0]* +z[4]+z[1]*x[5]*y[2]+z[0]*x[7]*y[4]+z[0]*x[3]*y[7]+z[1]*x[0]*y[4]-x[1]*y[2]*z[5] ++x[2]*y[3]*z[0]+y[1]*x[2]*z[5]-x[2]*y[3]*z[7]; + s7 = s8-z[1]*x[2]*y[5]-y[1]*x[3]*z[0]-x[0]*y[7]*z[3]-z[1]*x[0]*y[3]+y[5]* +x[4]*z[0]-x[0]*y[4]*z[3]+y[5]*x[7]*z[4]-z[0]*x[4]*y[3]+x[1]*y[0]*z[4]-z[2]*x[3] +*y[7]-y[6]*x[7]*z[2]+x[1]*y[5]*z[2]+y[6]*x[7]*z[5]+x[0]*y[7]*z[4]+x[1]*y[2]*z +[0]-z[1]*x[4]*y[0]-z[0]*x[4]*y[7]-z[2]*x[0]*y[3]; + s8 = x[5]*y[0]*z[4]+z[1]*x[0]*y[5]-x[2]*y[0]*z[3]-z[1]*x[5]*y[0]+y[1]*x +[5]*z[0]-x[1]*y[0]*z[3]-x[1]*y[4]*z[0]-y[1]*x[5]*z[2]+x[2]*y[7]*z[3]+y[0]*x[4]* +z[3]-x[0]*y[4]*z[7]+x[1]*y[0]*z[5]-y[1]*x[6]*z[2]-y[2]*x[6]*z[3]+y[0]*x[7]*z[3] +-y[2]*x[7]*z[3]+z[2]*x[7]*y[3]+y[2]*x[0]*z[3]; + s6 = s8+y[2]*x[3]*z[7]-y[2]*x[3]*z[0]-x[6]*y[5]*z[2]-y[5]*x[0]*z[4]+z[2]* +x[3]*y[0]+x[2]*y[3]*z[1]+x[0]*y[3]*z[7]-x[2]*y[1]*z[3]+y[1]*x[4]*z[0]+y[1]*x[0] +*z[2]-z[1]*x[2]*y[6]+y[2]*x[3]*z[6]-y[1]*x[2]*z[0]+z[1]*x[3]*y[0]-x[1]*y[2]*z +[6]-x[2]*y[3]*z[6]+x[0]*y[3]*z[4]+z[0]*x[3]*y[4]+s7; + s8 = x[5]*y[4]*z[7]+s6+y[5]*x[6]*z[4]-y[5]*x[4]*z[6]+z[6]*x[5]*y[7]-x[6]* +y[2]*z[7]-x[6]*y[7]*z[5]+x[5]*y[6]*z[2]+x[6]*y[5]*z[7]+x[6]*y[7]*z[2]+y[6]*x[7] +*z[4]-y[6]*x[4]*z[7]-y[6]*x[7]*z[3]+z[6]*x[7]*y[2]+x[2]*y[5]*z[6]-x[2]*y[6]*z +[5]+y[6]*x[2]*z[7]+x[6]*y[2]*z[5]; + s7 = s8-x[5]*y[2]*z[6]-z[6]*x[7]*y[5]-z[5]*x[7]*y[4]+z[5]*x[0]*y[4]-y[5]* +x[4]*z[7]+y[0]*x[4]*z[7]-z[6]*x[2]*y[7]-x[5]*y[4]*z[0]-x[5]*y[7]*z[4]-y[0]*x[7] +*z[4]+y[5]*x[4]*z[1]-x[6]*y[7]*z[4]+x[7]*y[4]*z[3]-x[4]*y[7]*z[3]+x[3]*y[7]*z +[4]-x[7]*y[3]*z[4]-x[6]*y[3]*z[7]+x[6]*y[4]*z[7]; + s8 = -x[3]*y[4]*z[7]+x[4]*y[3]*z[7]-z[6]*x[7]*y[4]-z[1]*x[6]*y[5]+x[6]*y +[7]*z[3]-x[1]*y[6]*z[5]-y[1]*x[5]*z[6]+z[5]*x[4]*y[7]-z[5]*x[4]*y[0]+x[1]*y[5]* +z[6]-y[6]*x[5]*z[7]-y[2]*x[3]*z[1]+z[1]*x[5]*y[6]-y[5]*x[1]*z[4]+z[6]*x[4]*y[7] ++x[5]*y[1]*z[4]-x[5]*y[6]*z[4]+y[6]*x[3]*z[7]-x[5]*y[4]*z[1]; + s5 = s8+x[5]*y[4]*z[6]+z[5]*x[1]*y[4]+y[1]*x[6]*z[5]-z[6]*x[3]*y[7]+z[6]* +x[7]*y[3]-z[5]*x[6]*y[4]-z[5]*x[4]*y[1]+z[5]*x[4]*y[6]+x[1]*y[6]*z[2]+x[2]*y[6] +*z[3]+z[2]*x[6]*y[3]+z[1]*x[6]*y[2]+z[2]*x[3]*y[1]-z[2]*x[1]*y[3]-z[2]*x[3]*y +[6]+y[2]*x[1]*z[3]+y[1]*x[2]*z[6]-z[0]*x[7]*y[3]+s7; + s4 = 1/s5; + s2 = s3*s4; + const double unknown2 = s1*s2; + + return Point<3> (unknown0, unknown1, unknown2); +}; + + + + +template <> +double HexAccessor<3>::measure () const { +/* + Get the computation of the measure by the same little Maple script as above. +*/ + + const double x[8] = { vertex(0)(0), + vertex(1)(0), + vertex(2)(0), + vertex(3)(0), + vertex(4)(0), + vertex(5)(0), + vertex(6)(0), + vertex(7)(0) }; + const double y[8] = { vertex(0)(1), + vertex(1)(1), + vertex(2)(1), + vertex(3)(1), + vertex(4)(1), + vertex(5)(1), + vertex(6)(1), + vertex(7)(1) }; + const double z[8] = { vertex(0)(2), + vertex(1)(2), + vertex(2)(2), + vertex(3)(2), + vertex(4)(2), + vertex(5)(2), + vertex(6)(2), + vertex(7)(2) }; + + double s1, s2, s3; + + s3 = -x[2]*y[7]*z[3]/12.0+x[1]*y[4]*z[0]/12.0-x[0]*y[3]*z[7]/12.0-z[1]*x +[2]*y[0]/12.0+x[5]*y[4]*z[0]/12.0+x[1]*y[5]*z[0]/12.0-x[1]*y[2]*z[0]/12.0-y[2]* +x[3]*z[7]/12.0-x[1]*y[0]*z[4]/12.0-y[1]*x[0]*z[2]/12.0-y[0]*x[7]*z[3]/12.0+y[5] +*x[4]*z[7]/12.0-x[0]*y[3]*z[4]/12.0-y[1]*x[0]*z[3]/12.0-z[0]*x[7]*y[4]/12.0+x +[1]*y[0]*z[3]/12.0-x[2]*y[3]*z[0]/12.0-y[1]*x[2]*z[5]/12.0; + s2 = s3+y[0]*x[3]*z[4]/12.0+y[1]*x[2]*z[0]/12.0+y[2]*x[7]*z[3]/12.0+z[1]* +x[4]*y[0]/12.0-y[5]*x[4]*z[0]/12.0-y[1]*x[5]*z[0]/12.0+x[5]*y[7]*z[4]/12.0+y[1] +*x[3]*z[0]/12.0+x[0]*y[4]*z[7]/12.0+z[0]*x[7]*y[3]/12.0-z[2]*x[3]*y[0]/12.0+y +[1]*x[0]*z[5]/12.0-x[1]*y[5]*z[2]/12.0+y[1]*x[0]*z[4]/12.0+z[1]*x[2]*y[5]/12.0- +x[5]*y[0]*z[4]/12.0+y[2]*x[3]*z[1]/12.0+x[1]*y[0]*z[2]/12.0; + s3 = -z[1]*x[0]*y[4]/12.0+z[1]*x[0]*y[2]/12.0-x[0]*y[7]*z[4]/12.0+z[0]*x +[4]*y[7]/12.0+x[2]*y[3]*z[7]/12.0+y[2]*x[6]*z[3]/12.0+y[1]*x[6]*z[2]/12.0-y[2]* +x[1]*z[3]/12.0+x[1]*y[2]*z[5]/12.0+y[0]*x[3]*z[7]/12.0+y[2]*x[3]*z[0]/12.0-y[0] +*x[4]*z[3]/12.0-y[2]*x[0]*z[3]/12.0-y[1]*x[4]*z[0]/12.0+z[1]*x[5]*y[0]/12.0+x +[1]*y[2]*z[6]/12.0-x[1]*y[0]*z[5]/12.0-x[2]*y[3]*z[1]/12.0; + s1 = s3-z[0]*x[3]*y[4]/12.0+z[1]*x[0]*y[3]/12.0-z[1]*x[5]*y[2]/12.0+z[1]* +x[2]*y[6]/12.0-z[2]*x[3]*y[1]/12.0+z[2]*x[3]*y[6]/12.0+x[2]*y[1]*z[3]/12.0-z[1] +*x[3]*y[0]/12.0+x[2]*y[3]*z[6]/12.0-z[0]*x[3]*y[7]/12.0+y[5]*x[0]*z[4]/12.0-z +[1]*x[6]*y[2]/12.0-z[2]*x[6]*y[3]/12.0+z[2]*x[0]*y[3]/12.0+z[2]*x[3]*y[7]/12.0+ +z[2]*x[1]*y[3]/12.0+y[1]*x[5]*z[2]/12.0-z[2]*x[7]*y[3]/12.0+s2; + s3 = x[0]*y[7]*z[3]/12.0-z[1]*x[0]*y[5]/12.0-x[1]*y[3]*z[0]/12.0-x[1]*y +[6]*z[2]/12.0-x[2]*y[6]*z[3]/12.0-x[5]*y[4]*z[7]/12.0+z[0]*x[4]*y[3]/12.0+x[0]* +y[4]*z[3]/12.0-x[6]*y[5]*z[7]/12.0-x[6]*y[7]*z[2]/12.0+z[1]*x[6]*y[5]/12.0+y[6] +*x[4]*z[7]/12.0+y[1]*x[5]*z[6]/12.0+x[1]*y[6]*z[5]/12.0-y[5]*x[7]*z[4]/12.0+y +[0]*x[7]*z[4]/12.0-y[0]*x[4]*z[7]/12.0-z[5]*x[0]*y[4]/12.0; + s2 = s3+z[6]*x[3]*y[7]/12.0+z[6]*x[7]*y[4]/12.0-z[6]*x[4]*y[7]/12.0-z[6]* +x[7]*y[3]/12.0+y[6]*x[5]*z[7]/12.0-y[6]*x[7]*z[5]/12.0-x[2]*y[5]*z[6]/12.0+z[6] +*x[2]*y[7]/12.0+z[6]*x[7]*y[5]/12.0-z[6]*x[5]*y[7]/12.0-z[6]*x[7]*y[2]/12.0+x +[6]*y[7]*z[5]/12.0+z[5]*x[7]*y[4]/12.0-z[5]*x[4]*y[7]/12.0+y[5]*x[1]*z[4]/12.0- +y[5]*x[6]*z[4]/12.0-y[5]*x[4]*z[1]/12.0+y[5]*x[4]*z[6]/12.0; + s3 = y[6]*x[7]*z[3]/12.0+x[6]*y[5]*z[2]/12.0-x[5]*y[6]*z[2]/12.0-x[6]*y +[2]*z[5]/12.0+x[5]*y[2]*z[6]/12.0+x[6]*y[2]*z[7]/12.0+z[5]*x[4]*y[0]/12.0-y[6]* +x[2]*z[7]/12.0+x[2]*y[6]*z[5]/12.0+y[6]*x[7]*z[2]/12.0-y[6]*x[3]*z[7]/12.0-x[7] +*y[4]*z[3]/12.0-x[6]*y[4]*z[7]/12.0-x[5]*y[1]*z[4]/12.0+x[6]*y[7]*z[4]/12.0+x +[7]*y[3]*z[4]/12.0-z[1]*x[5]*y[6]/12.0+x[3]*y[4]*z[7]/12.0+x[5]*y[6]*z[4]/12.0; + + return s3+x[5]*y[4]*z[1]/12.0-x[5]*y[4]*z[6]/12.0-x[3]*y[7]*z[4]/12.0+x[6]* +y[3]*z[7]/12.0-y[1]*x[6]*z[5]/12.0-z[5]*x[1]*y[4]/12.0+z[5]*x[6]*y[4]/12.0+z[5] +*x[4]*y[1]/12.0-z[5]*x[4]*y[6]/12.0-x[6]*y[7]*z[3]/12.0-x[4]*y[3]*z[7]/12.0+x +[4]*y[7]*z[3]/12.0-x[1]*y[5]*z[6]/12.0-y[6]*x[7]*z[4]/12.0-y[1]*x[2]*z[6]/12.0- +y[2]*x[3]*z[6]/12.0+s2+s1+x[2]*y[0]*z[3]/12.0; +}; + +#endif + + +template +unsigned int HexAccessor::number_of_children () const { + if (!has_children()) + return 1; + else + { + unsigned int sum = 0; + for (unsigned int c=0; c<8; ++c) + sum += child(c)->number_of_children(); + return sum; + }; +}; + + + + /*------------------------ Functions: CellAccessor<1> -----------------------*/ @@ -872,6 +1949,49 @@ CellAccessor<2>::face (const unsigned int i) const { #endif + +/*------------------------ Functions: CellAccessor<3> -----------------------*/ + + +#if deal_II_dimension == 3 + +template <> +bool CellAccessor<3>::at_boundary () const { + return (at_boundary(0) || at_boundary(1) || + at_boundary(2) || at_boundary(3) || + at_boundary(4) || at_boundary(5)); +}; + + + +template <> +unsigned char CellAccessor<3>::material_id () const { + Assert (used(), + typename TriaSubstructAccessor<3>::ExcCellNotUsed()); + return tria->levels[present_level]->hexes.material_id[present_index]; +}; + + + +template <> +void CellAccessor<3>::set_material_id (const unsigned char mat_id) const { + Assert (used(), + typename TriaSubstructAccessor<3>::ExcCellNotUsed()); + tria->levels[present_level]->hexes.material_id[present_index] + = mat_id; +}; + + + +template <> +Triangulation<3>::face_iterator +CellAccessor<3>::face (const unsigned int i) const { + return quad(i); +}; + +#endif + + /*------------------------ Functions: CellAccessor -----------------------*/ @@ -1050,6 +2170,13 @@ template class TriaIterator >; template class TriaActiveIterator >; #endif +#if deal_II_dimension >= 3 +template class HexAccessor; +template class TriaRawIterator >; +template class TriaIterator >; +template class TriaActiveIterator >; +#endif + diff --git a/deal.II/deal.II/source/grid/tria_boundary.cc b/deal.II/deal.II/source/grid/tria_boundary.cc index 64f0e36409..7d21d33eb5 100644 --- a/deal.II/deal.II/source/grid/tria_boundary.cc +++ b/deal.II/deal.II/source/grid/tria_boundary.cc @@ -3,6 +3,41 @@ #include +#include + + + +template +Boundary::~Boundary () +{}; + + +template +Point StraightBoundary::in_between (const PointArray &neighbors) const +{ + Point p; + for (int i=0; i<(1<<(dim-1)); ++i) + p += *neighbors[i]; + p /= (1<<(dim-1))*1.0; + return p; +}; + + + +template +Point HyperBallBoundary::in_between (const PointArray &neighbors) const +{ + Point middle = StraightBoundary::in_between(neighbors); + + middle -= center; + // project to boundary + middle *= radius / sqrt(middle.square()); + + middle += center; + return middle; +}; + + // explicit instantiations diff --git a/deal.II/deal.II/source/numerics/base.cc b/deal.II/deal.II/source/numerics/base.cc index f286ffced1..6b6adfceda 100644 --- a/deal.II/deal.II/source/numerics/base.cc +++ b/deal.II/deal.II/source/numerics/base.cc @@ -23,7 +23,6 @@ - template ProblemBase::ProblemBase () : tria(0), diff --git a/deal.II/deal.II/source/numerics/data_io.cc b/deal.II/deal.II/source/numerics/data_io.cc index 0e001ab7dc..e3670b0471 100644 --- a/deal.II/deal.II/source/numerics/data_io.cc +++ b/deal.II/deal.II/source/numerics/data_io.cc @@ -506,6 +506,10 @@ void DataOut::write_gnuplot (ostream &out, unsigned int accuracy) const case 2: out << " "; break; + case 3: + out << " "; + break; + default: Assert (false, ExcNotImplemented()); }; @@ -543,7 +547,7 @@ void DataOut::write_gnuplot (ostream &out, unsigned int accuracy) const { case 1: // one dimension: write - // left vertex, right vertex + // each vertex, right vertex // and data values for (supp_pt = 0; supp_pt::write_gnuplot (ostream &out, unsigned int accuracy) const case 2: // two dimension: output // grid and data as a sequence - // of lines in 3d - + // of points in 3d forming + // a tensor mesh on each cell for (unsigned xpt = 0, supp_pt = 0; xpt <= accuracy; ++xpt) { @@ -580,6 +584,41 @@ void DataOut::write_gnuplot (ostream &out, unsigned int accuracy) const break; + case 3: + // three dimension: output + // grid and data as a tensor + // mesh in 4d. we very + // obviously have a problem + // here since humans can watch + // 4d lines properly. but one + // can at least view cuts + // through this hypercube, + // which is possible this + // way + + for (unsigned xpt = 0, supp_pt = 0; + xpt <= accuracy; ++xpt) + { + for(unsigned ypt = 0; ypt <= accuracy; ++ypt) + { + for(unsigned zpt = 0; zpt <= accuracy; ++zpt, ++supp_pt) + { + Point pt = fe.quadrature_point(supp_pt); + out << pt << " "; + + for (unsigned int i=0; i!=data.size(); ++i) + out << values[i][supp_pt] + << ' '; + out << endl; + } + out << endl; + } + out << endl; + }; + + + break; + default: Assert (false, ExcNotImplemented()); } @@ -701,6 +740,7 @@ void DataOut::write_gnuplot_draft (ostream &out) const }; +#if deal_II_dimension == 2 template <> void DataOut<2>::write_povray_mesh (ostream &out) const { @@ -804,6 +844,24 @@ void DataOut<2>::write_povray_mesh (ostream &out) const { AssertThrow (out, ExcIO()); }; + +#endif + + + +#if deal_II_dimension == 3 + +template <> +void DataOut<3>::write_povray_mesh (ostream &out) const { + Assert (false, ExcNotImplemented()); +}; + +#endif + + + +#if deal_II_dimension == 2 + template <> void DataOut<2>::write_epsgrid (ostream &out) const { Assert (dofs != 0, ExcNoDoFHandlerSelected()); @@ -872,7 +930,9 @@ void DataOut<2>::write_epsgrid (ostream &out) const { AssertThrow (out, ExcIO()); }; - + + + template <> void DataOut<2>::write_eps (ostream &out) const { Assert (dofs != 0, ExcNoDoFHandlerSelected()); @@ -965,6 +1025,24 @@ void DataOut<2>::write_eps (ostream &out) const { AssertThrow (out, ExcIO()); }; +#endif + + +#if deal_II_dimension == 3 + +template <> +void DataOut<3>::write_epsgrid (ostream &/*out*/) const { + Assert (false, ExcNotImplemented()); +}; + + +template <> +void DataOut<3>::write_eps (ostream &/*out*/) const { + Assert (false, ExcNotImplemented()); +}; + +#endif + template void DataOut::write (ostream &out,