From: hartmann Date: Wed, 16 Dec 1998 15:15:26 +0000 (+0000) Subject: additional protected constructor used for the discontinuous elements X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9066226d189a4cbc16f106c1c559e1fd13e49397;p=dealii-svn.git additional protected constructor used for the discontinuous elements git-svn-id: https://svn.dealii.org/trunk@716 0785d39b-7218-0410-832d-ea1e28bc413d --- 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 9c62a710d8..a8d5ece5e1 100644 --- a/deal.II/deal.II/source/fe/fe_lib.cubic.cc +++ b/deal.II/deal.II/source/fe/fe_lib.cubic.cc @@ -659,6 +659,431 @@ FECubicSub<2>::FECubicSub () : }; + +template <> +FECubicSub<2>::FECubicSub (int) : + FELinearMapping<2> (0, 0, 16) +{ + prolongation[0](0,0) = 1.0; + prolongation[0](1,0) = -1.0/16.0; + prolongation[0](1,1) = -1.0/16.0; + prolongation[0](1,4) = 9.0/16.0; + prolongation[0](1,5) = 9.0/16.0; + prolongation[0](2,0) = 1.0/256.0; + prolongation[0](2,1) = 1.0/256.0; + prolongation[0](2,2) = 1.0/256.0; + prolongation[0](2,3) = 1.0/256.0; + prolongation[0](2,4) = -9.0/256.0; + prolongation[0](2,5) = -9.0/256.0; + prolongation[0](2,6) = -9.0/256.0; + prolongation[0](2,7) = -9.0/256.0; + prolongation[0](2,8) = -9.0/256.0; + prolongation[0](2,9) = -9.0/256.0; + prolongation[0](2,10) = -9.0/256.0; + prolongation[0](2,11) = -9.0/256.0; + prolongation[0](2,12) = 81.0/256.0; + prolongation[0](2,13) = 81.0/256.0; + prolongation[0](2,14) = 81.0/256.0; + prolongation[0](2,15) = 81.0/256.0; + prolongation[0](3,0) = -1.0/16.0; + prolongation[0](3,3) = -1.0/16.0; + prolongation[0](3,10) = 9.0/16.0; + prolongation[0](3,11) = 9.0/16.0; + prolongation[0](4,0) = 5.0/16.0; + prolongation[0](4,1) = 1.0/16.0; + prolongation[0](4,4) = 15.0/16.0; + prolongation[0](4,5) = -5.0/16.0; + prolongation[0](5,4) = 1.0; + prolongation[0](6,0) = -5.0/256.0; + prolongation[0](6,1) = -5.0/256.0; + prolongation[0](6,2) = -1.0/256.0; + prolongation[0](6,3) = -1.0/256.0; + prolongation[0](6,4) = 45.0/256.0; + prolongation[0](6,5) = 45.0/256.0; + prolongation[0](6,6) = -15.0/256.0; + prolongation[0](6,7) = 5.0/256.0; + prolongation[0](6,8) = 9.0/256.0; + prolongation[0](6,9) = 9.0/256.0; + prolongation[0](6,10) = -15.0/256.0; + prolongation[0](6,11) = 5.0/256.0; + prolongation[0](6,12) = 135.0/256.0; + prolongation[0](6,13) = 135.0/256.0; + prolongation[0](6,14) = -45.0/256.0; + prolongation[0](6,15) = -45.0/256.0; + prolongation[0](7,6) = -1.0/16.0; + prolongation[0](7,10) = -1.0/16.0; + prolongation[0](7,12) = 9.0/16.0; + prolongation[0](7,13) = 9.0/16.0; + prolongation[0](8,0) = -5.0/256.0; + prolongation[0](8,1) = -1.0/256.0; + prolongation[0](8,2) = -1.0/256.0; + prolongation[0](8,3) = -5.0/256.0; + prolongation[0](8,4) = -15.0/256.0; + prolongation[0](8,5) = 5.0/256.0; + prolongation[0](8,6) = 9.0/256.0; + prolongation[0](8,7) = 9.0/256.0; + prolongation[0](8,8) = -15.0/256.0; + prolongation[0](8,9) = 5.0/256.0; + prolongation[0](8,10) = 45.0/256.0; + prolongation[0](8,11) = 45.0/256.0; + prolongation[0](8,12) = 135.0/256.0; + prolongation[0](8,13) = -45.0/256.0; + prolongation[0](8,14) = -45.0/256.0; + prolongation[0](8,15) = 135.0/256.0; + prolongation[0](9,4) = -1.0/16.0; + prolongation[0](9,8) = -1.0/16.0; + prolongation[0](9,12) = 9.0/16.0; + prolongation[0](9,15) = 9.0/16.0; + prolongation[0](10,0) = 5.0/16.0; + prolongation[0](10,3) = 1.0/16.0; + prolongation[0](10,10) = 15.0/16.0; + prolongation[0](10,11) = -5.0/16.0; + prolongation[0](11,10) = 1.0; + prolongation[0](12,0) = 25.0/256.0; + prolongation[0](12,1) = 5.0/256.0; + prolongation[0](12,2) = 1.0/256.0; + prolongation[0](12,3) = 5.0/256.0; + prolongation[0](12,4) = 75.0/256.0; + prolongation[0](12,5) = -25.0/256.0; + prolongation[0](12,6) = 15.0/256.0; + prolongation[0](12,7) = -5.0/256.0; + prolongation[0](12,8) = 15.0/256.0; + prolongation[0](12,9) = -5.0/256.0; + prolongation[0](12,10) = 75.0/256.0; + prolongation[0](12,11) = -25.0/256.0; + prolongation[0](12,12) = 225.0/256.0; + prolongation[0](12,13) = -75.0/256.0; + prolongation[0](12,14) = 25.0/256.0; + prolongation[0](12,15) = -75.0/256.0; + prolongation[0](13,4) = 5.0/16.0; + prolongation[0](13,8) = 1.0/16.0; + prolongation[0](13,12) = 15.0/16.0; + prolongation[0](13,15) = -5.0/16.0; + prolongation[0](14,12) = 1.0; + prolongation[0](15,6) = 1.0/16.0; + prolongation[0](15,10) = 5.0/16.0; + prolongation[0](15,12) = 15.0/16.0; + prolongation[0](15,13) = -5.0/16.0; + prolongation[1](0,0) = -1.0/16.0; + prolongation[1](0,1) = -1.0/16.0; + prolongation[1](0,4) = 9.0/16.0; + prolongation[1](0,5) = 9.0/16.0; + prolongation[1](1,1) = 1.0; + prolongation[1](2,1) = -1.0/16.0; + prolongation[1](2,2) = -1.0/16.0; + prolongation[1](2,6) = 9.0/16.0; + prolongation[1](2,7) = 9.0/16.0; + prolongation[1](3,0) = 1.0/256.0; + prolongation[1](3,1) = 1.0/256.0; + prolongation[1](3,2) = 1.0/256.0; + prolongation[1](3,3) = 1.0/256.0; + prolongation[1](3,4) = -9.0/256.0; + prolongation[1](3,5) = -9.0/256.0; + prolongation[1](3,6) = -9.0/256.0; + prolongation[1](3,7) = -9.0/256.0; + prolongation[1](3,8) = -9.0/256.0; + prolongation[1](3,9) = -9.0/256.0; + prolongation[1](3,10) = -9.0/256.0; + prolongation[1](3,11) = -9.0/256.0; + prolongation[1](3,12) = 81.0/256.0; + prolongation[1](3,13) = 81.0/256.0; + prolongation[1](3,14) = 81.0/256.0; + prolongation[1](3,15) = 81.0/256.0; + prolongation[1](4,5) = 1.0; + prolongation[1](5,0) = 1.0/16.0; + prolongation[1](5,1) = 5.0/16.0; + prolongation[1](5,4) = -5.0/16.0; + prolongation[1](5,5) = 15.0/16.0; + prolongation[1](6,1) = 5.0/16.0; + prolongation[1](6,2) = 1.0/16.0; + prolongation[1](6,6) = 15.0/16.0; + prolongation[1](6,7) = -5.0/16.0; + prolongation[1](7,6) = 1.0; + prolongation[1](8,5) = -1.0/16.0; + prolongation[1](8,9) = -1.0/16.0; + prolongation[1](8,13) = 9.0/16.0; + prolongation[1](8,14) = 9.0/16.0; + prolongation[1](9,0) = -1.0/256.0; + prolongation[1](9,1) = -5.0/256.0; + prolongation[1](9,2) = -5.0/256.0; + prolongation[1](9,3) = -1.0/256.0; + prolongation[1](9,4) = 5.0/256.0; + prolongation[1](9,5) = -15.0/256.0; + prolongation[1](9,6) = 45.0/256.0; + prolongation[1](9,7) = 45.0/256.0; + prolongation[1](9,8) = 5.0/256.0; + prolongation[1](9,9) = -15.0/256.0; + prolongation[1](9,10) = 9.0/256.0; + prolongation[1](9,11) = 9.0/256.0; + prolongation[1](9,12) = -45.0/256.0; + prolongation[1](9,13) = 135.0/256.0; + prolongation[1](9,14) = 135.0/256.0; + prolongation[1](9,15) = -45.0/256.0; + prolongation[1](10,0) = -5.0/256.0; + prolongation[1](10,1) = -5.0/256.0; + prolongation[1](10,2) = -1.0/256.0; + prolongation[1](10,3) = -1.0/256.0; + prolongation[1](10,4) = 45.0/256.0; + prolongation[1](10,5) = 45.0/256.0; + prolongation[1](10,6) = -15.0/256.0; + prolongation[1](10,7) = 5.0/256.0; + prolongation[1](10,8) = 9.0/256.0; + prolongation[1](10,9) = 9.0/256.0; + prolongation[1](10,10) = -15.0/256.0; + prolongation[1](10,11) = 5.0/256.0; + prolongation[1](10,12) = 135.0/256.0; + prolongation[1](10,13) = 135.0/256.0; + prolongation[1](10,14) = -45.0/256.0; + prolongation[1](10,15) = -45.0/256.0; + prolongation[1](11,6) = -1.0/16.0; + prolongation[1](11,10) = -1.0/16.0; + prolongation[1](11,12) = 9.0/16.0; + prolongation[1](11,13) = 9.0/16.0; + prolongation[1](12,5) = 5.0/16.0; + prolongation[1](12,9) = 1.0/16.0; + prolongation[1](12,13) = 15.0/16.0; + prolongation[1](12,14) = -5.0/16.0; + prolongation[1](13,0) = 5.0/256.0; + prolongation[1](13,1) = 25.0/256.0; + prolongation[1](13,2) = 5.0/256.0; + prolongation[1](13,3) = 1.0/256.0; + prolongation[1](13,4) = -25.0/256.0; + prolongation[1](13,5) = 75.0/256.0; + prolongation[1](13,6) = 75.0/256.0; + prolongation[1](13,7) = -25.0/256.0; + prolongation[1](13,8) = -5.0/256.0; + prolongation[1](13,9) = 15.0/256.0; + prolongation[1](13,10) = 15.0/256.0; + prolongation[1](13,11) = -5.0/256.0; + prolongation[1](13,12) = -75.0/256.0; + prolongation[1](13,13) = 225.0/256.0; + prolongation[1](13,14) = -75.0/256.0; + prolongation[1](13,15) = 25.0/256.0; + prolongation[1](14,6) = 5.0/16.0; + prolongation[1](14,10) = 1.0/16.0; + prolongation[1](14,12) = -5.0/16.0; + prolongation[1](14,13) = 15.0/16.0; + prolongation[1](15,13) = 1.0; + prolongation[2](0,0) = 1.0/256.0; + prolongation[2](0,1) = 1.0/256.0; + prolongation[2](0,2) = 1.0/256.0; + prolongation[2](0,3) = 1.0/256.0; + prolongation[2](0,4) = -9.0/256.0; + prolongation[2](0,5) = -9.0/256.0; + prolongation[2](0,6) = -9.0/256.0; + prolongation[2](0,7) = -9.0/256.0; + prolongation[2](0,8) = -9.0/256.0; + prolongation[2](0,9) = -9.0/256.0; + prolongation[2](0,10) = -9.0/256.0; + prolongation[2](0,11) = -9.0/256.0; + prolongation[2](0,12) = 81.0/256.0; + prolongation[2](0,13) = 81.0/256.0; + prolongation[2](0,14) = 81.0/256.0; + prolongation[2](0,15) = 81.0/256.0; + prolongation[2](1,1) = -1.0/16.0; + prolongation[2](1,2) = -1.0/16.0; + prolongation[2](1,6) = 9.0/16.0; + prolongation[2](1,7) = 9.0/16.0; + prolongation[2](2,2) = 1.0; + prolongation[2](3,2) = -1.0/16.0; + prolongation[2](3,3) = -1.0/16.0; + prolongation[2](3,8) = 9.0/16.0; + prolongation[2](3,9) = 9.0/16.0; + prolongation[2](4,5) = -1.0/16.0; + prolongation[2](4,9) = -1.0/16.0; + prolongation[2](4,13) = 9.0/16.0; + prolongation[2](4,14) = 9.0/16.0; + prolongation[2](5,0) = -1.0/256.0; + prolongation[2](5,1) = -5.0/256.0; + prolongation[2](5,2) = -5.0/256.0; + prolongation[2](5,3) = -1.0/256.0; + prolongation[2](5,4) = 5.0/256.0; + prolongation[2](5,5) = -15.0/256.0; + prolongation[2](5,6) = 45.0/256.0; + prolongation[2](5,7) = 45.0/256.0; + prolongation[2](5,8) = 5.0/256.0; + prolongation[2](5,9) = -15.0/256.0; + prolongation[2](5,10) = 9.0/256.0; + prolongation[2](5,11) = 9.0/256.0; + prolongation[2](5,12) = -45.0/256.0; + prolongation[2](5,13) = 135.0/256.0; + prolongation[2](5,14) = 135.0/256.0; + prolongation[2](5,15) = -45.0/256.0; + prolongation[2](6,7) = 1.0; + prolongation[2](7,1) = 1.0/16.0; + prolongation[2](7,2) = 5.0/16.0; + prolongation[2](7,6) = -5.0/16.0; + prolongation[2](7,7) = 15.0/16.0; + prolongation[2](8,9) = 1.0; + prolongation[2](9,2) = 5.0/16.0; + prolongation[2](9,3) = 1.0/16.0; + prolongation[2](9,8) = -5.0/16.0; + prolongation[2](9,9) = 15.0/16.0; + prolongation[2](10,7) = -1.0/16.0; + prolongation[2](10,11) = -1.0/16.0; + prolongation[2](10,14) = 9.0/16.0; + prolongation[2](10,15) = 9.0/16.0; + prolongation[2](11,0) = -1.0/256.0; + prolongation[2](11,1) = -1.0/256.0; + prolongation[2](11,2) = -5.0/256.0; + prolongation[2](11,3) = -5.0/256.0; + prolongation[2](11,4) = 9.0/256.0; + prolongation[2](11,5) = 9.0/256.0; + prolongation[2](11,6) = 5.0/256.0; + prolongation[2](11,7) = -15.0/256.0; + prolongation[2](11,8) = 45.0/256.0; + prolongation[2](11,9) = 45.0/256.0; + prolongation[2](11,10) = 5.0/256.0; + prolongation[2](11,11) = -15.0/256.0; + prolongation[2](11,12) = -45.0/256.0; + prolongation[2](11,13) = -45.0/256.0; + prolongation[2](11,14) = 135.0/256.0; + prolongation[2](11,15) = 135.0/256.0; + prolongation[2](12,14) = 1.0; + prolongation[2](13,7) = 5.0/16.0; + prolongation[2](13,11) = 1.0/16.0; + prolongation[2](13,14) = 15.0/16.0; + prolongation[2](13,15) = -5.0/16.0; + prolongation[2](14,0) = 1.0/256.0; + prolongation[2](14,1) = 5.0/256.0; + prolongation[2](14,2) = 25.0/256.0; + prolongation[2](14,3) = 5.0/256.0; + prolongation[2](14,4) = -5.0/256.0; + prolongation[2](14,5) = 15.0/256.0; + prolongation[2](14,6) = -25.0/256.0; + prolongation[2](14,7) = 75.0/256.0; + prolongation[2](14,8) = -25.0/256.0; + prolongation[2](14,9) = 75.0/256.0; + prolongation[2](14,10) = -5.0/256.0; + prolongation[2](14,11) = 15.0/256.0; + prolongation[2](14,12) = 25.0/256.0; + prolongation[2](14,13) = -75.0/256.0; + prolongation[2](14,14) = 225.0/256.0; + prolongation[2](14,15) = -75.0/256.0; + prolongation[2](15,5) = 1.0/16.0; + prolongation[2](15,9) = 5.0/16.0; + prolongation[2](15,13) = -5.0/16.0; + prolongation[2](15,14) = 15.0/16.0; + prolongation[3](0,0) = -1.0/16.0; + prolongation[3](0,3) = -1.0/16.0; + prolongation[3](0,10) = 9.0/16.0; + prolongation[3](0,11) = 9.0/16.0; + prolongation[3](1,0) = 1.0/256.0; + prolongation[3](1,1) = 1.0/256.0; + prolongation[3](1,2) = 1.0/256.0; + prolongation[3](1,3) = 1.0/256.0; + prolongation[3](1,4) = -9.0/256.0; + prolongation[3](1,5) = -9.0/256.0; + prolongation[3](1,6) = -9.0/256.0; + prolongation[3](1,7) = -9.0/256.0; + prolongation[3](1,8) = -9.0/256.0; + prolongation[3](1,9) = -9.0/256.0; + prolongation[3](1,10) = -9.0/256.0; + prolongation[3](1,11) = -9.0/256.0; + prolongation[3](1,12) = 81.0/256.0; + prolongation[3](1,13) = 81.0/256.0; + prolongation[3](1,14) = 81.0/256.0; + prolongation[3](1,15) = 81.0/256.0; + prolongation[3](2,2) = -1.0/16.0; + prolongation[3](2,3) = -1.0/16.0; + prolongation[3](2,8) = 9.0/16.0; + prolongation[3](2,9) = 9.0/16.0; + prolongation[3](3,3) = 1.0; + prolongation[3](4,0) = -5.0/256.0; + prolongation[3](4,1) = -1.0/256.0; + prolongation[3](4,2) = -1.0/256.0; + prolongation[3](4,3) = -5.0/256.0; + prolongation[3](4,4) = -15.0/256.0; + prolongation[3](4,5) = 5.0/256.0; + prolongation[3](4,6) = 9.0/256.0; + prolongation[3](4,7) = 9.0/256.0; + prolongation[3](4,8) = -15.0/256.0; + prolongation[3](4,9) = 5.0/256.0; + prolongation[3](4,10) = 45.0/256.0; + prolongation[3](4,11) = 45.0/256.0; + prolongation[3](4,12) = 135.0/256.0; + prolongation[3](4,13) = -45.0/256.0; + prolongation[3](4,14) = -45.0/256.0; + prolongation[3](4,15) = 135.0/256.0; + prolongation[3](5,4) = -1.0/16.0; + prolongation[3](5,8) = -1.0/16.0; + prolongation[3](5,12) = 9.0/16.0; + prolongation[3](5,15) = 9.0/16.0; + prolongation[3](6,7) = -1.0/16.0; + prolongation[3](6,11) = -1.0/16.0; + prolongation[3](6,14) = 9.0/16.0; + prolongation[3](6,15) = 9.0/16.0; + prolongation[3](7,0) = -1.0/256.0; + prolongation[3](7,1) = -1.0/256.0; + prolongation[3](7,2) = -5.0/256.0; + prolongation[3](7,3) = -5.0/256.0; + prolongation[3](7,4) = 9.0/256.0; + prolongation[3](7,5) = 9.0/256.0; + prolongation[3](7,6) = 5.0/256.0; + prolongation[3](7,7) = -15.0/256.0; + prolongation[3](7,8) = 45.0/256.0; + prolongation[3](7,9) = 45.0/256.0; + prolongation[3](7,10) = 5.0/256.0; + prolongation[3](7,11) = -15.0/256.0; + prolongation[3](7,12) = -45.0/256.0; + prolongation[3](7,13) = -45.0/256.0; + prolongation[3](7,14) = 135.0/256.0; + prolongation[3](7,15) = 135.0/256.0; + prolongation[3](8,2) = 1.0/16.0; + prolongation[3](8,3) = 5.0/16.0; + prolongation[3](8,8) = 15.0/16.0; + prolongation[3](8,9) = -5.0/16.0; + prolongation[3](9,8) = 1.0; + prolongation[3](10,11) = 1.0; + prolongation[3](11,0) = 1.0/16.0; + prolongation[3](11,3) = 5.0/16.0; + prolongation[3](11,10) = -5.0/16.0; + prolongation[3](11,11) = 15.0/16.0; + prolongation[3](12,7) = 1.0/16.0; + prolongation[3](12,11) = 5.0/16.0; + prolongation[3](12,14) = -5.0/16.0; + prolongation[3](12,15) = 15.0/16.0; + prolongation[3](13,15) = 1.0; + prolongation[3](14,4) = 1.0/16.0; + prolongation[3](14,8) = 5.0/16.0; + prolongation[3](14,12) = -5.0/16.0; + prolongation[3](14,15) = 15.0/16.0; + prolongation[3](15,0) = 5.0/256.0; + prolongation[3](15,1) = 1.0/256.0; + prolongation[3](15,2) = 5.0/256.0; + prolongation[3](15,3) = 25.0/256.0; + prolongation[3](15,4) = 15.0/256.0; + prolongation[3](15,5) = -5.0/256.0; + prolongation[3](15,6) = -5.0/256.0; + prolongation[3](15,7) = 15.0/256.0; + prolongation[3](15,8) = 75.0/256.0; + prolongation[3](15,9) = -25.0/256.0; + prolongation[3](15,10) = -25.0/256.0; + prolongation[3](15,11) = 75.0/256.0; + prolongation[3](15,12) = -75.0/256.0; + prolongation[3](15,13) = 25.0/256.0; + prolongation[3](15,14) = -75.0/256.0; + prolongation[3](15,15) = 225.0/256.0; + + restriction[0](0,0) = 1.0; + restriction[0](4,5) = 1.0; + restriction[0](10,11) = 1.0; + restriction[0](12,14) = 1.0; + restriction[1](1,1) = 1.0; + restriction[1](5,4) = 1.0; + restriction[1](6,7) = 1.0; + restriction[1](13,15) = 1.0; + restriction[2](2,2) = 1.0; + restriction[2](7,6) = 1.0; + restriction[2](9,8) = 1.0; + restriction[2](14,12) = 1.0; + restriction[3](3,3) = 1.0; + restriction[3](8,9) = 1.0; + restriction[3](11,10) = 1.0; + restriction[3](15,13) = 1.0; +}; + + template <> double FECubicSub<2>::shape_value (const unsigned int i, 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 04ef2edfdf..ab644b14e6 100644 --- a/deal.II/deal.II/source/fe/fe_lib.linear.cc +++ b/deal.II/deal.II/source/fe/fe_lib.linear.cc @@ -198,6 +198,59 @@ FELinear<2>::FELinear () : }; +template <> +FELinear<2>::FELinear (const int) : + FELinearMapping<2> (0, 0, 4) +{ + restriction[0](0,0) = 1.0; + restriction[1](1,1) = 1.0; + restriction[2](2,2) = 1.0; + restriction[3](3,3) = 1.0; + + prolongation[0](0,0) = 1.0; + prolongation[0](1,0) = 1./2.; + prolongation[0](1,1) = 1./2.; + prolongation[0](3,0) = 1./2.; + prolongation[0](3,3) = 1./2.; + prolongation[0](2,0) = 1./4.; + prolongation[0](2,1) = 1./4.; + prolongation[0](2,2) = 1./4.; + prolongation[0](2,3) = 1./4.; + + prolongation[1](1,1) = 1.0; + prolongation[1](0,0) = 1./2.; + prolongation[1](0,1) = 1./2.; + prolongation[1](2,1) = 1./2.; + prolongation[1](2,2) = 1./2.; + prolongation[1](3,0) = 1./4.; + prolongation[1](3,1) = 1./4.; + prolongation[1](3,2) = 1./4.; + prolongation[1](3,3) = 1./4.; + + prolongation[2](2,2) = 1.0; + prolongation[2](1,2) = 1./2.; + prolongation[2](1,1) = 1./2.; + prolongation[2](3,2) = 1./2.; + prolongation[2](3,3) = 1./2.; + prolongation[2](0,0) = 1./4.; + prolongation[2](0,1) = 1./4.; + prolongation[2](0,2) = 1./4.; + prolongation[2](0,3) = 1./4.; + + prolongation[3](3,3) = 1.0; + prolongation[3](0,0) = 1./2.; + prolongation[3](0,3) = 1./2.; + prolongation[3](2,2) = 1./2.; + prolongation[3](2,3) = 1./2.; + prolongation[3](1,0) = 1./4.; + prolongation[3](1,1) = 1./4.; + prolongation[3](1,2) = 1./4.; + prolongation[3](1,3) = 1./4.; +}; + + + + template <> inline 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 33c3a4c7e3..feaff742cf 100644 --- a/deal.II/deal.II/source/fe/fe_lib.quadratic.cc +++ b/deal.II/deal.II/source/fe/fe_lib.quadratic.cc @@ -610,6 +610,394 @@ FEQuadraticSub<2>::FEQuadraticSub () : }; +template <> +FEQuadraticSub<2>::FEQuadraticSub (int) : + FELinearMapping<2> (0, 0, 9) +{ +/* + Get the prolongation and restriction matrices by the following little maple script: + + phi[0] := proc(xi,eta) (1-xi)*( 2*xi-1) * (1-eta)*( 2*eta-1); end; + phi[1] := proc(xi,eta) xi *(-2*xi+1) * (1-eta)*( 2*eta-1); end; + phi[2] := proc(xi,eta) xi *(-2*xi+1) * eta *(-2*eta+1); end; + phi[3] := proc(xi,eta) (1-xi)*( 2*xi-1) * eta *(-2*eta+1); end; + phi[4] := proc(xi,eta) 4 * (1-xi)*xi * (1-eta)*(1-2*eta); end; + phi[5] := proc(xi,eta) 4 * xi *(-1+2*xi) * (1-eta)*eta; end; + phi[6] := proc(xi,eta) 4 * (1-xi)*xi * eta *(-1+2*eta);end; + phi[7] := proc(xi,eta) 4 * (1-xi)*(1-2*xi) * (1-eta)*eta; end; + phi[8] := proc(xi,eta) 16 * xi*(1-xi) * eta*(1-eta); end; + + points_x[0] := array(0..8, [0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 0, 1/4]); + points_y[0] := array(0..8, [0, 0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 1/4]); + + points_x[1] := array(0..8, [1/2, 1, 1, 1/2, 3/4, 1, 3/4, 1/2, 3/4]); + points_y[1] := array(0..8, [0, 0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 1/4]); + + points_x[2] := array(0..8, [1/2, 1, 1, 1/2, 3/4, 1, 3/4, 1/2, 3/4]); + points_y[2] := array(0..8, [1/2, 1/2, 1, 1, 1/2, 3/4, 1, 3/4, 3/4]); + + points_x[3] := array(0..8, [0, 1/2, 1/2, 0, 1/4, 1/2, 1/4, 0, 1/4]); + points_y[3] := array(0..8, [1/2, 1/2, 1, 1, 1/2, 3/4, 1, 3/4, 3/4]); + + prolongation := array(0..3,0..8, 0..8); + + for i from 0 to 3 do + for j from 0 to 8 do + for k from 0 to 8 do + prolongation[i,j,k] := phi[k](points_x[i][j], points_y[i][j]); + od; + od; + od; + + readlib(C); + C(prolongation); +*/ + + prolongation[0](0,0) = 1.0; + prolongation[0](0,1) = 0.0; + prolongation[0](0,2) = 0.0; + prolongation[0](0,3) = 0.0; + prolongation[0](0,4) = 0.0; + prolongation[0](0,5) = 0.0; + prolongation[0](0,6) = 0.0; + prolongation[0](0,7) = 0.0; + prolongation[0](0,8) = 0.0; + prolongation[0](1,0) = 0.0; + prolongation[0](1,1) = 0.0; + prolongation[0](1,2) = 0.0; + prolongation[0](1,3) = 0.0; + prolongation[0](1,4) = 1.0; + prolongation[0](1,5) = 0.0; + prolongation[0](1,6) = 0.0; + prolongation[0](1,7) = 0.0; + prolongation[0](1,8) = 0.0; + prolongation[0](2,0) = 0.0; + prolongation[0](2,1) = 0.0; + prolongation[0](2,2) = 0.0; + prolongation[0](2,3) = 0.0; + prolongation[0](2,4) = 0.0; + prolongation[0](2,5) = 0.0; + prolongation[0](2,6) = 0.0; + prolongation[0](2,7) = 0.0; + prolongation[0](2,8) = 1.0; + prolongation[0](3,0) = 0.0; + prolongation[0](3,1) = 0.0; + prolongation[0](3,2) = 0.0; + prolongation[0](3,3) = 0.0; + prolongation[0](3,4) = 0.0; + prolongation[0](3,5) = 0.0; + prolongation[0](3,6) = 0.0; + prolongation[0](3,7) = 1.0; + prolongation[0](3,8) = 0.0; + prolongation[0](4,0) = 3.0/8.0; + prolongation[0](4,1) = -1.0/8.0; + prolongation[0](4,2) = 0.0; + prolongation[0](4,3) = 0.0; + prolongation[0](4,4) = 3.0/4.0; + prolongation[0](4,5) = 0.0; + prolongation[0](4,6) = 0.0; + prolongation[0](4,7) = 0.0; + prolongation[0](4,8) = 0.0; + prolongation[0](5,0) = 0.0; + prolongation[0](5,1) = 0.0; + prolongation[0](5,2) = 0.0; + prolongation[0](5,3) = 0.0; + prolongation[0](5,4) = 3.0/8.0; + prolongation[0](5,5) = 0.0; + prolongation[0](5,6) = -1.0/8.0; + prolongation[0](5,7) = 0.0; + prolongation[0](5,8) = 3.0/4.0; + prolongation[0](6,0) = 0.0; + prolongation[0](6,1) = 0.0; + prolongation[0](6,2) = 0.0; + prolongation[0](6,3) = 0.0; + prolongation[0](6,4) = 0.0; + prolongation[0](6,5) = -1.0/8.0; + prolongation[0](6,6) = 0.0; + prolongation[0](6,7) = 3.0/8.0; + prolongation[0](6,8) = 3.0/4.0; + prolongation[0](7,0) = 3.0/8.0; + prolongation[0](7,1) = 0.0; + prolongation[0](7,2) = 0.0; + prolongation[0](7,3) = -1.0/8.0; + prolongation[0](7,4) = 0.0; + prolongation[0](7,5) = 0.0; + prolongation[0](7,6) = 0.0; + prolongation[0](7,7) = 3.0/4.0; + prolongation[0](7,8) = 0.0; + prolongation[0](8,0) = 9.0/64.0; + prolongation[0](8,1) = -3.0/64.0; + prolongation[0](8,2) = 1.0/64.0; + prolongation[0](8,3) = -3.0/64.0; + prolongation[0](8,4) = 9.0/32.0; + prolongation[0](8,5) = -3.0/32.0; + prolongation[0](8,6) = -3.0/32.0; + prolongation[0](8,7) = 9.0/32.0; + prolongation[0](8,8) = 9.0/16.0; + prolongation[1](0,0) = 0.0; + prolongation[1](0,1) = 0.0; + prolongation[1](0,2) = 0.0; + prolongation[1](0,3) = 0.0; + prolongation[1](0,4) = 1.0; + prolongation[1](0,5) = 0.0; + prolongation[1](0,6) = 0.0; + prolongation[1](0,7) = 0.0; + prolongation[1](0,8) = 0.0; + prolongation[1](1,0) = 0.0; + prolongation[1](1,1) = 1.0; + prolongation[1](1,2) = 0.0; + prolongation[1](1,3) = 0.0; + prolongation[1](1,4) = 0.0; + prolongation[1](1,5) = 0.0; + prolongation[1](1,6) = 0.0; + prolongation[1](1,7) = 0.0; + prolongation[1](1,8) = 0.0; + prolongation[1](2,0) = 0.0; + prolongation[1](2,1) = 0.0; + prolongation[1](2,2) = 0.0; + prolongation[1](2,3) = 0.0; + prolongation[1](2,4) = 0.0; + prolongation[1](2,5) = 1.0; + prolongation[1](2,6) = 0.0; + prolongation[1](2,7) = 0.0; + prolongation[1](2,8) = 0.0; + prolongation[1](3,0) = 0.0; + prolongation[1](3,1) = 0.0; + prolongation[1](3,2) = 0.0; + prolongation[1](3,3) = 0.0; + prolongation[1](3,4) = 0.0; + prolongation[1](3,5) = 0.0; + prolongation[1](3,6) = 0.0; + prolongation[1](3,7) = 0.0; + prolongation[1](3,8) = 1.0; + prolongation[1](4,0) = -1.0/8.0; + prolongation[1](4,1) = 3.0/8.0; + prolongation[1](4,2) = 0.0; + prolongation[1](4,3) = 0.0; + prolongation[1](4,4) = 3.0/4.0; + prolongation[1](4,5) = 0.0; + prolongation[1](4,6) = 0.0; + prolongation[1](4,7) = 0.0; + prolongation[1](4,8) = 0.0; + prolongation[1](5,0) = 0.0; + prolongation[1](5,1) = 3.0/8.0; + prolongation[1](5,2) = -1.0/8.0; + prolongation[1](5,3) = 0.0; + prolongation[1](5,4) = 0.0; + prolongation[1](5,5) = 3.0/4.0; + prolongation[1](5,6) = 0.0; + prolongation[1](5,7) = 0.0; + prolongation[1](5,8) = 0.0; + prolongation[1](6,0) = 0.0; + prolongation[1](6,1) = 0.0; + prolongation[1](6,2) = 0.0; + prolongation[1](6,3) = 0.0; + prolongation[1](6,4) = 0.0; + prolongation[1](6,5) = 3.0/8.0; + prolongation[1](6,6) = 0.0; + prolongation[1](6,7) = -1.0/8.0; + prolongation[1](6,8) = 3.0/4.0; + prolongation[1](7,0) = 0.0; + prolongation[1](7,1) = 0.0; + prolongation[1](7,2) = 0.0; + prolongation[1](7,3) = 0.0; + prolongation[1](7,4) = 3.0/8.0; + prolongation[1](7,5) = 0.0; + prolongation[1](7,6) = -1.0/8.0; + prolongation[1](7,7) = 0.0; + prolongation[1](7,8) = 3.0/4.0; + prolongation[1](8,0) = -3.0/64.0; + prolongation[1](8,1) = 9.0/64.0; + prolongation[1](8,2) = -3.0/64.0; + prolongation[1](8,3) = 1.0/64.0; + prolongation[1](8,4) = 9.0/32.0; + prolongation[1](8,5) = 9.0/32.0; + prolongation[1](8,6) = -3.0/32.0; + prolongation[1](8,7) = -3.0/32.0; + prolongation[1](8,8) = 9.0/16.0; + prolongation[2](0,0) = 0.0; + prolongation[2](0,1) = 0.0; + prolongation[2](0,2) = 0.0; + prolongation[2](0,3) = 0.0; + prolongation[2](0,4) = 0.0; + prolongation[2](0,5) = 0.0; + prolongation[2](0,6) = 0.0; + prolongation[2](0,7) = 0.0; + prolongation[2](0,8) = 1.0; + prolongation[2](1,0) = 0.0; + prolongation[2](1,1) = 0.0; + prolongation[2](1,2) = 0.0; + prolongation[2](1,3) = 0.0; + prolongation[2](1,4) = 0.0; + prolongation[2](1,5) = 1.0; + prolongation[2](1,6) = 0.0; + prolongation[2](1,7) = 0.0; + prolongation[2](1,8) = 0.0; + prolongation[2](2,0) = 0.0; + prolongation[2](2,1) = 0.0; + prolongation[2](2,2) = 1.0; + prolongation[2](2,3) = 0.0; + prolongation[2](2,4) = 0.0; + prolongation[2](2,5) = 0.0; + prolongation[2](2,6) = 0.0; + prolongation[2](2,7) = 0.0; + prolongation[2](2,8) = 0.0; + prolongation[2](3,0) = 0.0; + prolongation[2](3,1) = 0.0; + prolongation[2](3,2) = 0.0; + prolongation[2](3,3) = 0.0; + prolongation[2](3,4) = 0.0; + prolongation[2](3,5) = 0.0; + prolongation[2](3,6) = 1.0; + prolongation[2](3,7) = 0.0; + prolongation[2](3,8) = 0.0; + prolongation[2](4,0) = 0.0; + prolongation[2](4,1) = 0.0; + prolongation[2](4,2) = 0.0; + prolongation[2](4,3) = 0.0; + prolongation[2](4,4) = 0.0; + prolongation[2](4,5) = 3.0/8.0; + prolongation[2](4,6) = 0.0; + prolongation[2](4,7) = -1.0/8.0; + prolongation[2](4,8) = 3.0/4.0; + prolongation[2](5,0) = 0.0; + prolongation[2](5,1) = -1.0/8.0; + prolongation[2](5,2) = 3.0/8.0; + prolongation[2](5,3) = 0.0; + prolongation[2](5,4) = 0.0; + prolongation[2](5,5) = 3.0/4.0; + prolongation[2](5,6) = 0.0; + prolongation[2](5,7) = 0.0; + prolongation[2](5,8) = 0.0; + prolongation[2](6,0) = 0.0; + prolongation[2](6,1) = 0.0; + prolongation[2](6,2) = 3.0/8.0; + prolongation[2](6,3) = -1.0/8.0; + prolongation[2](6,4) = 0.0; + prolongation[2](6,5) = 0.0; + prolongation[2](6,6) = 3.0/4.0; + prolongation[2](6,7) = 0.0; + prolongation[2](6,8) = 0.0; + prolongation[2](7,0) = 0.0; + prolongation[2](7,1) = 0.0; + prolongation[2](7,2) = 0.0; + prolongation[2](7,3) = 0.0; + prolongation[2](7,4) = -1.0/8.0; + prolongation[2](7,5) = 0.0; + prolongation[2](7,6) = 3.0/8.0; + prolongation[2](7,7) = 0.0; + prolongation[2](7,8) = 3.0/4.0; + prolongation[2](8,0) = 1.0/64.0; + prolongation[2](8,1) = -3.0/64.0; + prolongation[2](8,2) = 9.0/64.0; + prolongation[2](8,3) = -3.0/64.0; + prolongation[2](8,4) = -3.0/32.0; + prolongation[2](8,5) = 9.0/32.0; + prolongation[2](8,6) = 9.0/32.0; + prolongation[2](8,7) = -3.0/32.0; + prolongation[2](8,8) = 9.0/16.0; + prolongation[3](0,0) = 0.0; + prolongation[3](0,1) = 0.0; + prolongation[3](0,2) = 0.0; + prolongation[3](0,3) = 0.0; + prolongation[3](0,4) = 0.0; + prolongation[3](0,5) = 0.0; + prolongation[3](0,6) = 0.0; + prolongation[3](0,7) = 1.0; + prolongation[3](0,8) = 0.0; + prolongation[3](1,0) = 0.0; + prolongation[3](1,1) = 0.0; + prolongation[3](1,2) = 0.0; + prolongation[3](1,3) = 0.0; + prolongation[3](1,4) = 0.0; + prolongation[3](1,5) = 0.0; + prolongation[3](1,6) = 0.0; + prolongation[3](1,7) = 0.0; + prolongation[3](1,8) = 1.0; + prolongation[3](2,0) = 0.0; + prolongation[3](2,1) = 0.0; + prolongation[3](2,2) = 0.0; + prolongation[3](2,3) = 0.0; + prolongation[3](2,4) = 0.0; + prolongation[3](2,5) = 0.0; + prolongation[3](2,6) = 1.0; + prolongation[3](2,7) = 0.0; + prolongation[3](2,8) = 0.0; + prolongation[3](3,0) = 0.0; + prolongation[3](3,1) = 0.0; + prolongation[3](3,2) = 0.0; + prolongation[3](3,3) = 1.0; + prolongation[3](3,4) = 0.0; + prolongation[3](3,5) = 0.0; + prolongation[3](3,6) = 0.0; + prolongation[3](3,7) = 0.0; + prolongation[3](3,8) = 0.0; + prolongation[3](4,0) = 0.0; + prolongation[3](4,1) = 0.0; + prolongation[3](4,2) = 0.0; + prolongation[3](4,3) = 0.0; + prolongation[3](4,4) = 0.0; + prolongation[3](4,5) = -1.0/8.0; + prolongation[3](4,6) = 0.0; + prolongation[3](4,7) = 3.0/8.0; + prolongation[3](4,8) = 3.0/4.0; + prolongation[3](5,0) = 0.0; + prolongation[3](5,1) = 0.0; + prolongation[3](5,2) = 0.0; + prolongation[3](5,3) = 0.0; + prolongation[3](5,4) = -1.0/8.0; + prolongation[3](5,5) = 0.0; + prolongation[3](5,6) = 3.0/8.0; + prolongation[3](5,7) = 0.0; + prolongation[3](5,8) = 3.0/4.0; + prolongation[3](6,0) = 0.0; + prolongation[3](6,1) = 0.0; + prolongation[3](6,2) = -1.0/8.0; + prolongation[3](6,3) = 3.0/8.0; + prolongation[3](6,4) = 0.0; + prolongation[3](6,5) = 0.0; + prolongation[3](6,6) = 3.0/4.0; + prolongation[3](6,7) = 0.0; + prolongation[3](6,8) = 0.0; + prolongation[3](7,0) = -1.0/8.0; + prolongation[3](7,1) = 0.0; + prolongation[3](7,2) = 0.0; + prolongation[3](7,3) = 3.0/8.0; + prolongation[3](7,4) = 0.0; + prolongation[3](7,5) = 0.0; + prolongation[3](7,6) = 0.0; + prolongation[3](7,7) = 3.0/4.0; + prolongation[3](7,8) = 0.0; + prolongation[3](8,0) = -3.0/64.0; + prolongation[3](8,1) = 1.0/64.0; + prolongation[3](8,2) = -3.0/64.0; + prolongation[3](8,3) = 9.0/64.0; + prolongation[3](8,4) = -3.0/32.0; + prolongation[3](8,5) = -3.0/32.0; + prolongation[3](8,6) = 9.0/32.0; + prolongation[3](8,7) = 9.0/32.0; + prolongation[3](8,8) = 9.0/16.0; + + restriction[0](0,0) = 1.0; + restriction[0](4,1) = 1.0; + restriction[0](7,3) = 1.0; + restriction[0](8,2) = 1.0; + restriction[1](1,1) = 1.0; + restriction[1](4,0) = 1.0; + restriction[1](5,2) = 1.0; + restriction[1](8,3) = 1.0; + restriction[2](2,2) = 1.0; + restriction[2](5,1) = 1.0; + restriction[2](6,3) = 1.0; + restriction[2](8,0) = 1.0; + restriction[3](3,3) = 1.0; + restriction[3](6,2) = 1.0; + restriction[3](7,0) = 1.0; + restriction[3](8,1) = 1.0; +}; + + + template <> double FEQuadraticSub<2>::shape_value (const unsigned int i, diff --git a/deal.II/deal.II/source/fe/fe_lib.quartic.cc b/deal.II/deal.II/source/fe/fe_lib.quartic.cc index a6cf7ffd35..209cfaac3c 100644 --- a/deal.II/deal.II/source/fe/fe_lib.quartic.cc +++ b/deal.II/deal.II/source/fe/fe_lib.quartic.cc @@ -945,6 +945,727 @@ FEQuarticSub<2>::FEQuarticSub () : }; + +template <> +FEQuarticSub<2>::FEQuarticSub (int) : + FELinearMapping<2> (0, 0, 25) +{ + prolongation[0](0,0) = 1.0; + prolongation[0](1,5) = 1.0; + prolongation[0](2,24) = 1.0; + prolongation[0](3,14) = 1.0; + prolongation[0](4,0) = 35.0/128.0; + prolongation[0](4,1) = -5.0/128.0; + prolongation[0](4,4) = 35.0/32.0; + prolongation[0](4,5) = -35.0/64.0; + prolongation[0](4,6) = 7.0/32.0; + prolongation[0](5,4) = 1.0; + prolongation[0](6,0) = -5.0/128.0; + prolongation[0](6,1) = 3.0/128.0; + prolongation[0](6,4) = 15.0/32.0; + prolongation[0](6,5) = 45.0/64.0; + prolongation[0](6,6) = -5.0/32.0; + prolongation[0](7,5) = 35.0/128.0; + prolongation[0](7,11) = -5.0/128.0; + prolongation[0](7,20) = 35.0/32.0; + prolongation[0](7,22) = 7.0/32.0; + prolongation[0](7,24) = -35.0/64.0; + prolongation[0](8,20) = 1.0; + prolongation[0](9,5) = -5.0/128.0; + prolongation[0](9,11) = 3.0/128.0; + prolongation[0](9,20) = 15.0/32.0; + prolongation[0](9,22) = -5.0/32.0; + prolongation[0](9,24) = 45.0/64.0; + prolongation[0](10,8) = -5.0/128.0; + prolongation[0](10,14) = 35.0/128.0; + prolongation[0](10,21) = 7.0/32.0; + prolongation[0](10,23) = 35.0/32.0; + prolongation[0](10,24) = -35.0/64.0; + prolongation[0](11,23) = 1.0; + prolongation[0](12,8) = 3.0/128.0; + prolongation[0](12,14) = -5.0/128.0; + prolongation[0](12,21) = -5.0/32.0; + prolongation[0](12,23) = 15.0/32.0; + prolongation[0](12,24) = 45.0/64.0; + prolongation[0](13,0) = 35.0/128.0; + prolongation[0](13,3) = -5.0/128.0; + prolongation[0](13,13) = 35.0/32.0; + prolongation[0](13,14) = -35.0/64.0; + prolongation[0](13,15) = 7.0/32.0; + prolongation[0](14,13) = 1.0; + prolongation[0](15,0) = -5.0/128.0; + prolongation[0](15,3) = 3.0/128.0; + prolongation[0](15,13) = 15.0/32.0; + prolongation[0](15,14) = 45.0/64.0; + prolongation[0](15,15) = -5.0/32.0; + prolongation[0](16,0) = 1225.0/16384.0; + prolongation[0](16,1) = -175.0/16384.0; + prolongation[0](16,2) = 25.0/16384.0; + prolongation[0](16,3) = -175.0/16384.0; + prolongation[0](16,4) = 1225.0/4096.0; + prolongation[0](16,5) = -1225.0/8192.0; + prolongation[0](16,6) = 245.0/4096.0; + prolongation[0](16,7) = -175.0/4096.0; + prolongation[0](16,8) = 175.0/8192.0; + prolongation[0](16,9) = -35.0/4096.0; + prolongation[0](16,10) = -175.0/4096.0; + prolongation[0](16,11) = 175.0/8192.0; + prolongation[0](16,12) = -35.0/4096.0; + prolongation[0](16,13) = 1225.0/4096.0; + prolongation[0](16,14) = -1225.0/8192.0; + prolongation[0](16,15) = 245.0/4096.0; + prolongation[0](16,16) = 1225.0/1024.0; + prolongation[0](16,17) = 245.0/1024.0; + prolongation[0](16,18) = 49.0/1024.0; + prolongation[0](16,19) = 245.0/1024.0; + prolongation[0](16,20) = -1225.0/2048.0; + prolongation[0](16,21) = -245.0/2048.0; + prolongation[0](16,22) = -245.0/2048.0; + prolongation[0](16,23) = -1225.0/2048.0; + prolongation[0](16,24) = 1225.0/4096.0; + prolongation[0](17,0) = -175.0/16384.0; + prolongation[0](17,1) = 105.0/16384.0; + prolongation[0](17,2) = -15.0/16384.0; + prolongation[0](17,3) = 25.0/16384.0; + prolongation[0](17,4) = 525.0/4096.0; + prolongation[0](17,5) = 1575.0/8192.0; + prolongation[0](17,6) = -175.0/4096.0; + prolongation[0](17,7) = 105.0/4096.0; + prolongation[0](17,8) = -105.0/8192.0; + prolongation[0](17,9) = 21.0/4096.0; + prolongation[0](17,10) = -75.0/4096.0; + prolongation[0](17,11) = -225.0/8192.0; + prolongation[0](17,12) = 25.0/4096.0; + prolongation[0](17,13) = -175.0/4096.0; + prolongation[0](17,14) = 175.0/8192.0; + prolongation[0](17,15) = -35.0/4096.0; + prolongation[0](17,16) = 525.0/1024.0; + prolongation[0](17,17) = -175.0/1024.0; + prolongation[0](17,18) = -35.0/1024.0; + prolongation[0](17,19) = 105.0/1024.0; + prolongation[0](17,20) = 1575.0/2048.0; + prolongation[0](17,21) = 175.0/2048.0; + prolongation[0](17,22) = 315.0/2048.0; + prolongation[0](17,23) = -525.0/2048.0; + prolongation[0](17,24) = -1575.0/4096.0; + prolongation[0](18,0) = 25.0/16384.0; + prolongation[0](18,1) = -15.0/16384.0; + prolongation[0](18,2) = 9.0/16384.0; + prolongation[0](18,3) = -15.0/16384.0; + prolongation[0](18,4) = -75.0/4096.0; + prolongation[0](18,5) = -225.0/8192.0; + prolongation[0](18,6) = 25.0/4096.0; + prolongation[0](18,7) = 45.0/4096.0; + prolongation[0](18,8) = 135.0/8192.0; + prolongation[0](18,9) = -15.0/4096.0; + prolongation[0](18,10) = 45.0/4096.0; + prolongation[0](18,11) = 135.0/8192.0; + prolongation[0](18,12) = -15.0/4096.0; + prolongation[0](18,13) = -75.0/4096.0; + prolongation[0](18,14) = -225.0/8192.0; + prolongation[0](18,15) = 25.0/4096.0; + prolongation[0](18,16) = 225.0/1024.0; + prolongation[0](18,17) = -75.0/1024.0; + prolongation[0](18,18) = 25.0/1024.0; + prolongation[0](18,19) = -75.0/1024.0; + prolongation[0](18,20) = 675.0/2048.0; + prolongation[0](18,21) = -225.0/2048.0; + prolongation[0](18,22) = -225.0/2048.0; + prolongation[0](18,23) = 675.0/2048.0; + prolongation[0](18,24) = 2025.0/4096.0; + prolongation[0](19,0) = -175.0/16384.0; + prolongation[0](19,1) = 25.0/16384.0; + prolongation[0](19,2) = -15.0/16384.0; + prolongation[0](19,3) = 105.0/16384.0; + prolongation[0](19,4) = -175.0/4096.0; + prolongation[0](19,5) = 175.0/8192.0; + prolongation[0](19,6) = -35.0/4096.0; + prolongation[0](19,7) = -75.0/4096.0; + prolongation[0](19,8) = -225.0/8192.0; + prolongation[0](19,9) = 25.0/4096.0; + prolongation[0](19,10) = 105.0/4096.0; + prolongation[0](19,11) = -105.0/8192.0; + prolongation[0](19,12) = 21.0/4096.0; + prolongation[0](19,13) = 525.0/4096.0; + prolongation[0](19,14) = 1575.0/8192.0; + prolongation[0](19,15) = -175.0/4096.0; + prolongation[0](19,16) = 525.0/1024.0; + prolongation[0](19,17) = 105.0/1024.0; + prolongation[0](19,18) = -35.0/1024.0; + prolongation[0](19,19) = -175.0/1024.0; + prolongation[0](19,20) = -525.0/2048.0; + prolongation[0](19,21) = 315.0/2048.0; + prolongation[0](19,22) = 175.0/2048.0; + prolongation[0](19,23) = 1575.0/2048.0; + prolongation[0](19,24) = -1575.0/4096.0; + prolongation[0](20,4) = 35.0/128.0; + prolongation[0](20,10) = -5.0/128.0; + prolongation[0](20,16) = 35.0/32.0; + prolongation[0](20,19) = 7.0/32.0; + prolongation[0](20,23) = -35.0/64.0; + prolongation[0](21,7) = 3.0/128.0; + prolongation[0](21,13) = -5.0/128.0; + prolongation[0](21,16) = 15.0/32.0; + prolongation[0](21,17) = -5.0/32.0; + prolongation[0](21,20) = 45.0/64.0; + prolongation[0](22,4) = -5.0/128.0; + prolongation[0](22,10) = 3.0/128.0; + prolongation[0](22,16) = 15.0/32.0; + prolongation[0](22,19) = -5.0/32.0; + prolongation[0](22,23) = 45.0/64.0; + prolongation[0](23,7) = -5.0/128.0; + prolongation[0](23,13) = 35.0/128.0; + prolongation[0](23,16) = 35.0/32.0; + prolongation[0](23,17) = 7.0/32.0; + prolongation[0](23,20) = -35.0/64.0; + prolongation[0](24,16) = 1.0; + prolongation[1](0,5) = 1.0; + prolongation[1](1,1) = 1.0; + prolongation[1](2,8) = 1.0; + prolongation[1](3,24) = 1.0; + prolongation[1](4,0) = 3.0/128.0; + prolongation[1](4,1) = -5.0/128.0; + prolongation[1](4,4) = -5.0/32.0; + prolongation[1](4,5) = 45.0/64.0; + prolongation[1](4,6) = 15.0/32.0; + prolongation[1](5,6) = 1.0; + prolongation[1](6,0) = -5.0/128.0; + prolongation[1](6,1) = 35.0/128.0; + prolongation[1](6,4) = 7.0/32.0; + prolongation[1](6,5) = -35.0/64.0; + prolongation[1](6,6) = 35.0/32.0; + prolongation[1](7,1) = 35.0/128.0; + prolongation[1](7,2) = -5.0/128.0; + prolongation[1](7,7) = 35.0/32.0; + prolongation[1](7,8) = -35.0/64.0; + prolongation[1](7,9) = 7.0/32.0; + prolongation[1](8,7) = 1.0; + prolongation[1](9,1) = -5.0/128.0; + prolongation[1](9,2) = 3.0/128.0; + prolongation[1](9,7) = 15.0/32.0; + prolongation[1](9,8) = 45.0/64.0; + prolongation[1](9,9) = -5.0/32.0; + prolongation[1](10,8) = -5.0/128.0; + prolongation[1](10,14) = 3.0/128.0; + prolongation[1](10,21) = 15.0/32.0; + prolongation[1](10,23) = -5.0/32.0; + prolongation[1](10,24) = 45.0/64.0; + prolongation[1](11,21) = 1.0; + prolongation[1](12,8) = 35.0/128.0; + prolongation[1](12,14) = -5.0/128.0; + prolongation[1](12,21) = 35.0/32.0; + prolongation[1](12,23) = 7.0/32.0; + prolongation[1](12,24) = -35.0/64.0; + prolongation[1](13,5) = 35.0/128.0; + prolongation[1](13,11) = -5.0/128.0; + prolongation[1](13,20) = 35.0/32.0; + prolongation[1](13,22) = 7.0/32.0; + prolongation[1](13,24) = -35.0/64.0; + prolongation[1](14,20) = 1.0; + prolongation[1](15,5) = -5.0/128.0; + prolongation[1](15,11) = 3.0/128.0; + prolongation[1](15,20) = 15.0/32.0; + prolongation[1](15,22) = -5.0/32.0; + prolongation[1](15,24) = 45.0/64.0; + prolongation[1](16,0) = 105.0/16384.0; + prolongation[1](16,1) = -175.0/16384.0; + prolongation[1](16,2) = 25.0/16384.0; + prolongation[1](16,3) = -15.0/16384.0; + prolongation[1](16,4) = -175.0/4096.0; + prolongation[1](16,5) = 1575.0/8192.0; + prolongation[1](16,6) = 525.0/4096.0; + prolongation[1](16,7) = -175.0/4096.0; + prolongation[1](16,8) = 175.0/8192.0; + prolongation[1](16,9) = -35.0/4096.0; + prolongation[1](16,10) = 25.0/4096.0; + prolongation[1](16,11) = -225.0/8192.0; + prolongation[1](16,12) = -75.0/4096.0; + prolongation[1](16,13) = 105.0/4096.0; + prolongation[1](16,14) = -105.0/8192.0; + prolongation[1](16,15) = 21.0/4096.0; + prolongation[1](16,16) = -175.0/1024.0; + prolongation[1](16,17) = 525.0/1024.0; + prolongation[1](16,18) = 105.0/1024.0; + prolongation[1](16,19) = -35.0/1024.0; + prolongation[1](16,20) = 1575.0/2048.0; + prolongation[1](16,21) = -525.0/2048.0; + prolongation[1](16,22) = 315.0/2048.0; + prolongation[1](16,23) = 175.0/2048.0; + prolongation[1](16,24) = -1575.0/4096.0; + prolongation[1](17,0) = -175.0/16384.0; + prolongation[1](17,1) = 1225.0/16384.0; + prolongation[1](17,2) = -175.0/16384.0; + prolongation[1](17,3) = 25.0/16384.0; + prolongation[1](17,4) = 245.0/4096.0; + prolongation[1](17,5) = -1225.0/8192.0; + prolongation[1](17,6) = 1225.0/4096.0; + prolongation[1](17,7) = 1225.0/4096.0; + prolongation[1](17,8) = -1225.0/8192.0; + prolongation[1](17,9) = 245.0/4096.0; + prolongation[1](17,10) = -35.0/4096.0; + prolongation[1](17,11) = 175.0/8192.0; + prolongation[1](17,12) = -175.0/4096.0; + prolongation[1](17,13) = -175.0/4096.0; + prolongation[1](17,14) = 175.0/8192.0; + prolongation[1](17,15) = -35.0/4096.0; + prolongation[1](17,16) = 245.0/1024.0; + prolongation[1](17,17) = 1225.0/1024.0; + prolongation[1](17,18) = 245.0/1024.0; + prolongation[1](17,19) = 49.0/1024.0; + prolongation[1](17,20) = -1225.0/2048.0; + prolongation[1](17,21) = -1225.0/2048.0; + prolongation[1](17,22) = -245.0/2048.0; + prolongation[1](17,23) = -245.0/2048.0; + prolongation[1](17,24) = 1225.0/4096.0; + prolongation[1](18,0) = 25.0/16384.0; + prolongation[1](18,1) = -175.0/16384.0; + prolongation[1](18,2) = 105.0/16384.0; + prolongation[1](18,3) = -15.0/16384.0; + prolongation[1](18,4) = -35.0/4096.0; + prolongation[1](18,5) = 175.0/8192.0; + prolongation[1](18,6) = -175.0/4096.0; + prolongation[1](18,7) = 525.0/4096.0; + prolongation[1](18,8) = 1575.0/8192.0; + prolongation[1](18,9) = -175.0/4096.0; + prolongation[1](18,10) = 21.0/4096.0; + prolongation[1](18,11) = -105.0/8192.0; + prolongation[1](18,12) = 105.0/4096.0; + prolongation[1](18,13) = -75.0/4096.0; + prolongation[1](18,14) = -225.0/8192.0; + prolongation[1](18,15) = 25.0/4096.0; + prolongation[1](18,16) = 105.0/1024.0; + prolongation[1](18,17) = 525.0/1024.0; + prolongation[1](18,18) = -175.0/1024.0; + prolongation[1](18,19) = -35.0/1024.0; + prolongation[1](18,20) = -525.0/2048.0; + prolongation[1](18,21) = 1575.0/2048.0; + prolongation[1](18,22) = 175.0/2048.0; + prolongation[1](18,23) = 315.0/2048.0; + prolongation[1](18,24) = -1575.0/4096.0; + prolongation[1](19,0) = -15.0/16384.0; + prolongation[1](19,1) = 25.0/16384.0; + prolongation[1](19,2) = -15.0/16384.0; + prolongation[1](19,3) = 9.0/16384.0; + prolongation[1](19,4) = 25.0/4096.0; + prolongation[1](19,5) = -225.0/8192.0; + prolongation[1](19,6) = -75.0/4096.0; + prolongation[1](19,7) = -75.0/4096.0; + prolongation[1](19,8) = -225.0/8192.0; + prolongation[1](19,9) = 25.0/4096.0; + prolongation[1](19,10) = -15.0/4096.0; + prolongation[1](19,11) = 135.0/8192.0; + prolongation[1](19,12) = 45.0/4096.0; + prolongation[1](19,13) = 45.0/4096.0; + prolongation[1](19,14) = 135.0/8192.0; + prolongation[1](19,15) = -15.0/4096.0; + prolongation[1](19,16) = -75.0/1024.0; + prolongation[1](19,17) = 225.0/1024.0; + prolongation[1](19,18) = -75.0/1024.0; + prolongation[1](19,19) = 25.0/1024.0; + prolongation[1](19,20) = 675.0/2048.0; + prolongation[1](19,21) = 675.0/2048.0; + prolongation[1](19,22) = -225.0/2048.0; + prolongation[1](19,23) = -225.0/2048.0; + prolongation[1](19,24) = 2025.0/4096.0; + prolongation[1](20,6) = 35.0/128.0; + prolongation[1](20,12) = -5.0/128.0; + prolongation[1](20,17) = 35.0/32.0; + prolongation[1](20,18) = 7.0/32.0; + prolongation[1](20,21) = -35.0/64.0; + prolongation[1](21,7) = 35.0/128.0; + prolongation[1](21,13) = -5.0/128.0; + prolongation[1](21,16) = 7.0/32.0; + prolongation[1](21,17) = 35.0/32.0; + prolongation[1](21,20) = -35.0/64.0; + prolongation[1](22,6) = -5.0/128.0; + prolongation[1](22,12) = 3.0/128.0; + prolongation[1](22,17) = 15.0/32.0; + prolongation[1](22,18) = -5.0/32.0; + prolongation[1](22,21) = 45.0/64.0; + prolongation[1](23,7) = -5.0/128.0; + prolongation[1](23,13) = 3.0/128.0; + prolongation[1](23,16) = -5.0/32.0; + prolongation[1](23,17) = 15.0/32.0; + prolongation[1](23,20) = 45.0/64.0; + prolongation[1](24,17) = 1.0; + prolongation[2](0,24) = 1.0; + prolongation[2](1,8) = 1.0; + prolongation[2](2,2) = 1.0; + prolongation[2](3,11) = 1.0; + prolongation[2](4,8) = -5.0/128.0; + prolongation[2](4,14) = 3.0/128.0; + prolongation[2](4,21) = 15.0/32.0; + prolongation[2](4,23) = -5.0/32.0; + prolongation[2](4,24) = 45.0/64.0; + prolongation[2](5,21) = 1.0; + prolongation[2](6,8) = 35.0/128.0; + prolongation[2](6,14) = -5.0/128.0; + prolongation[2](6,21) = 35.0/32.0; + prolongation[2](6,23) = 7.0/32.0; + prolongation[2](6,24) = -35.0/64.0; + prolongation[2](7,1) = 3.0/128.0; + prolongation[2](7,2) = -5.0/128.0; + prolongation[2](7,7) = -5.0/32.0; + prolongation[2](7,8) = 45.0/64.0; + prolongation[2](7,9) = 15.0/32.0; + prolongation[2](8,9) = 1.0; + prolongation[2](9,1) = -5.0/128.0; + prolongation[2](9,2) = 35.0/128.0; + prolongation[2](9,7) = 7.0/32.0; + prolongation[2](9,8) = -35.0/64.0; + prolongation[2](9,9) = 35.0/32.0; + prolongation[2](10,2) = -5.0/128.0; + prolongation[2](10,3) = 3.0/128.0; + prolongation[2](10,10) = -5.0/32.0; + prolongation[2](10,11) = 45.0/64.0; + prolongation[2](10,12) = 15.0/32.0; + prolongation[2](11,12) = 1.0; + prolongation[2](12,2) = 35.0/128.0; + prolongation[2](12,3) = -5.0/128.0; + prolongation[2](12,10) = 7.0/32.0; + prolongation[2](12,11) = -35.0/64.0; + prolongation[2](12,12) = 35.0/32.0; + prolongation[2](13,5) = 3.0/128.0; + prolongation[2](13,11) = -5.0/128.0; + prolongation[2](13,20) = -5.0/32.0; + prolongation[2](13,22) = 15.0/32.0; + prolongation[2](13,24) = 45.0/64.0; + prolongation[2](14,22) = 1.0; + prolongation[2](15,5) = -5.0/128.0; + prolongation[2](15,11) = 35.0/128.0; + prolongation[2](15,20) = 7.0/32.0; + prolongation[2](15,22) = 35.0/32.0; + prolongation[2](15,24) = -35.0/64.0; + prolongation[2](16,0) = 9.0/16384.0; + prolongation[2](16,1) = -15.0/16384.0; + prolongation[2](16,2) = 25.0/16384.0; + prolongation[2](16,3) = -15.0/16384.0; + prolongation[2](16,4) = -15.0/4096.0; + prolongation[2](16,5) = 135.0/8192.0; + prolongation[2](16,6) = 45.0/4096.0; + prolongation[2](16,7) = 25.0/4096.0; + prolongation[2](16,8) = -225.0/8192.0; + prolongation[2](16,9) = -75.0/4096.0; + prolongation[2](16,10) = 25.0/4096.0; + prolongation[2](16,11) = -225.0/8192.0; + prolongation[2](16,12) = -75.0/4096.0; + prolongation[2](16,13) = -15.0/4096.0; + prolongation[2](16,14) = 135.0/8192.0; + prolongation[2](16,15) = 45.0/4096.0; + prolongation[2](16,16) = 25.0/1024.0; + prolongation[2](16,17) = -75.0/1024.0; + prolongation[2](16,18) = 225.0/1024.0; + prolongation[2](16,19) = -75.0/1024.0; + prolongation[2](16,20) = -225.0/2048.0; + prolongation[2](16,21) = 675.0/2048.0; + prolongation[2](16,22) = 675.0/2048.0; + prolongation[2](16,23) = -225.0/2048.0; + prolongation[2](16,24) = 2025.0/4096.0; + prolongation[2](17,0) = -15.0/16384.0; + prolongation[2](17,1) = 105.0/16384.0; + prolongation[2](17,2) = -175.0/16384.0; + prolongation[2](17,3) = 25.0/16384.0; + prolongation[2](17,4) = 21.0/4096.0; + prolongation[2](17,5) = -105.0/8192.0; + prolongation[2](17,6) = 105.0/4096.0; + prolongation[2](17,7) = -175.0/4096.0; + prolongation[2](17,8) = 1575.0/8192.0; + prolongation[2](17,9) = 525.0/4096.0; + prolongation[2](17,10) = -35.0/4096.0; + prolongation[2](17,11) = 175.0/8192.0; + prolongation[2](17,12) = -175.0/4096.0; + prolongation[2](17,13) = 25.0/4096.0; + prolongation[2](17,14) = -225.0/8192.0; + prolongation[2](17,15) = -75.0/4096.0; + prolongation[2](17,16) = -35.0/1024.0; + prolongation[2](17,17) = -175.0/1024.0; + prolongation[2](17,18) = 525.0/1024.0; + prolongation[2](17,19) = 105.0/1024.0; + prolongation[2](17,20) = 175.0/2048.0; + prolongation[2](17,21) = 1575.0/2048.0; + prolongation[2](17,22) = -525.0/2048.0; + prolongation[2](17,23) = 315.0/2048.0; + prolongation[2](17,24) = -1575.0/4096.0; + prolongation[2](18,0) = 25.0/16384.0; + prolongation[2](18,1) = -175.0/16384.0; + prolongation[2](18,2) = 1225.0/16384.0; + prolongation[2](18,3) = -175.0/16384.0; + prolongation[2](18,4) = -35.0/4096.0; + prolongation[2](18,5) = 175.0/8192.0; + prolongation[2](18,6) = -175.0/4096.0; + prolongation[2](18,7) = 245.0/4096.0; + prolongation[2](18,8) = -1225.0/8192.0; + prolongation[2](18,9) = 1225.0/4096.0; + prolongation[2](18,10) = 245.0/4096.0; + prolongation[2](18,11) = -1225.0/8192.0; + prolongation[2](18,12) = 1225.0/4096.0; + prolongation[2](18,13) = -35.0/4096.0; + prolongation[2](18,14) = 175.0/8192.0; + prolongation[2](18,15) = -175.0/4096.0; + prolongation[2](18,16) = 49.0/1024.0; + prolongation[2](18,17) = 245.0/1024.0; + prolongation[2](18,18) = 1225.0/1024.0; + prolongation[2](18,19) = 245.0/1024.0; + prolongation[2](18,20) = -245.0/2048.0; + prolongation[2](18,21) = -1225.0/2048.0; + prolongation[2](18,22) = -1225.0/2048.0; + prolongation[2](18,23) = -245.0/2048.0; + prolongation[2](18,24) = 1225.0/4096.0; + prolongation[2](19,0) = -15.0/16384.0; + prolongation[2](19,1) = 25.0/16384.0; + prolongation[2](19,2) = -175.0/16384.0; + prolongation[2](19,3) = 105.0/16384.0; + prolongation[2](19,4) = 25.0/4096.0; + prolongation[2](19,5) = -225.0/8192.0; + prolongation[2](19,6) = -75.0/4096.0; + prolongation[2](19,7) = -35.0/4096.0; + prolongation[2](19,8) = 175.0/8192.0; + prolongation[2](19,9) = -175.0/4096.0; + prolongation[2](19,10) = -175.0/4096.0; + prolongation[2](19,11) = 1575.0/8192.0; + prolongation[2](19,12) = 525.0/4096.0; + prolongation[2](19,13) = 21.0/4096.0; + prolongation[2](19,14) = -105.0/8192.0; + prolongation[2](19,15) = 105.0/4096.0; + prolongation[2](19,16) = -35.0/1024.0; + prolongation[2](19,17) = 105.0/1024.0; + prolongation[2](19,18) = 525.0/1024.0; + prolongation[2](19,19) = -175.0/1024.0; + prolongation[2](19,20) = 315.0/2048.0; + prolongation[2](19,21) = -525.0/2048.0; + prolongation[2](19,22) = 1575.0/2048.0; + prolongation[2](19,23) = 175.0/2048.0; + prolongation[2](19,24) = -1575.0/4096.0; + prolongation[2](20,6) = 3.0/128.0; + prolongation[2](20,12) = -5.0/128.0; + prolongation[2](20,17) = -5.0/32.0; + prolongation[2](20,18) = 15.0/32.0; + prolongation[2](20,21) = 45.0/64.0; + prolongation[2](21,9) = 35.0/128.0; + prolongation[2](21,15) = -5.0/128.0; + prolongation[2](21,18) = 35.0/32.0; + prolongation[2](21,19) = 7.0/32.0; + prolongation[2](21,22) = -35.0/64.0; + prolongation[2](22,6) = -5.0/128.0; + prolongation[2](22,12) = 35.0/128.0; + prolongation[2](22,17) = 7.0/32.0; + prolongation[2](22,18) = 35.0/32.0; + prolongation[2](22,21) = -35.0/64.0; + prolongation[2](23,9) = -5.0/128.0; + prolongation[2](23,15) = 3.0/128.0; + prolongation[2](23,18) = 15.0/32.0; + prolongation[2](23,19) = -5.0/32.0; + prolongation[2](23,22) = 45.0/64.0; + prolongation[2](24,18) = 1.0; + prolongation[3](0,14) = 1.0; + prolongation[3](1,24) = 1.0; + prolongation[3](2,11) = 1.0; + prolongation[3](3,3) = 1.0; + prolongation[3](4,8) = -5.0/128.0; + prolongation[3](4,14) = 35.0/128.0; + prolongation[3](4,21) = 7.0/32.0; + prolongation[3](4,23) = 35.0/32.0; + prolongation[3](4,24) = -35.0/64.0; + prolongation[3](5,23) = 1.0; + prolongation[3](6,8) = 3.0/128.0; + prolongation[3](6,14) = -5.0/128.0; + prolongation[3](6,21) = -5.0/32.0; + prolongation[3](6,23) = 15.0/32.0; + prolongation[3](6,24) = 45.0/64.0; + prolongation[3](7,5) = 3.0/128.0; + prolongation[3](7,11) = -5.0/128.0; + prolongation[3](7,20) = -5.0/32.0; + prolongation[3](7,22) = 15.0/32.0; + prolongation[3](7,24) = 45.0/64.0; + prolongation[3](8,22) = 1.0; + prolongation[3](9,5) = -5.0/128.0; + prolongation[3](9,11) = 35.0/128.0; + prolongation[3](9,20) = 7.0/32.0; + prolongation[3](9,22) = 35.0/32.0; + prolongation[3](9,24) = -35.0/64.0; + prolongation[3](10,2) = -5.0/128.0; + prolongation[3](10,3) = 35.0/128.0; + prolongation[3](10,10) = 35.0/32.0; + prolongation[3](10,11) = -35.0/64.0; + prolongation[3](10,12) = 7.0/32.0; + prolongation[3](11,10) = 1.0; + prolongation[3](12,2) = 3.0/128.0; + prolongation[3](12,3) = -5.0/128.0; + prolongation[3](12,10) = 15.0/32.0; + prolongation[3](12,11) = 45.0/64.0; + prolongation[3](12,12) = -5.0/32.0; + prolongation[3](13,0) = 3.0/128.0; + prolongation[3](13,3) = -5.0/128.0; + prolongation[3](13,13) = -5.0/32.0; + prolongation[3](13,14) = 45.0/64.0; + prolongation[3](13,15) = 15.0/32.0; + prolongation[3](14,15) = 1.0; + prolongation[3](15,0) = -5.0/128.0; + prolongation[3](15,3) = 35.0/128.0; + prolongation[3](15,13) = 7.0/32.0; + prolongation[3](15,14) = -35.0/64.0; + prolongation[3](15,15) = 35.0/32.0; + prolongation[3](16,0) = 105.0/16384.0; + prolongation[3](16,1) = -15.0/16384.0; + prolongation[3](16,2) = 25.0/16384.0; + prolongation[3](16,3) = -175.0/16384.0; + prolongation[3](16,4) = 105.0/4096.0; + prolongation[3](16,5) = -105.0/8192.0; + prolongation[3](16,6) = 21.0/4096.0; + prolongation[3](16,7) = 25.0/4096.0; + prolongation[3](16,8) = -225.0/8192.0; + prolongation[3](16,9) = -75.0/4096.0; + prolongation[3](16,10) = -175.0/4096.0; + prolongation[3](16,11) = 175.0/8192.0; + prolongation[3](16,12) = -35.0/4096.0; + prolongation[3](16,13) = -175.0/4096.0; + prolongation[3](16,14) = 1575.0/8192.0; + prolongation[3](16,15) = 525.0/4096.0; + prolongation[3](16,16) = -175.0/1024.0; + prolongation[3](16,17) = -35.0/1024.0; + prolongation[3](16,18) = 105.0/1024.0; + prolongation[3](16,19) = 525.0/1024.0; + prolongation[3](16,20) = 175.0/2048.0; + prolongation[3](16,21) = 315.0/2048.0; + prolongation[3](16,22) = -525.0/2048.0; + prolongation[3](16,23) = 1575.0/2048.0; + prolongation[3](16,24) = -1575.0/4096.0; + prolongation[3](17,0) = -15.0/16384.0; + prolongation[3](17,1) = 9.0/16384.0; + prolongation[3](17,2) = -15.0/16384.0; + prolongation[3](17,3) = 25.0/16384.0; + prolongation[3](17,4) = 45.0/4096.0; + prolongation[3](17,5) = 135.0/8192.0; + prolongation[3](17,6) = -15.0/4096.0; + prolongation[3](17,7) = -15.0/4096.0; + prolongation[3](17,8) = 135.0/8192.0; + prolongation[3](17,9) = 45.0/4096.0; + prolongation[3](17,10) = -75.0/4096.0; + prolongation[3](17,11) = -225.0/8192.0; + prolongation[3](17,12) = 25.0/4096.0; + prolongation[3](17,13) = 25.0/4096.0; + prolongation[3](17,14) = -225.0/8192.0; + prolongation[3](17,15) = -75.0/4096.0; + prolongation[3](17,16) = -75.0/1024.0; + prolongation[3](17,17) = 25.0/1024.0; + prolongation[3](17,18) = -75.0/1024.0; + prolongation[3](17,19) = 225.0/1024.0; + prolongation[3](17,20) = -225.0/2048.0; + prolongation[3](17,21) = -225.0/2048.0; + prolongation[3](17,22) = 675.0/2048.0; + prolongation[3](17,23) = 675.0/2048.0; + prolongation[3](17,24) = 2025.0/4096.0; + prolongation[3](18,0) = 25.0/16384.0; + prolongation[3](18,1) = -15.0/16384.0; + prolongation[3](18,2) = 105.0/16384.0; + prolongation[3](18,3) = -175.0/16384.0; + prolongation[3](18,4) = -75.0/4096.0; + prolongation[3](18,5) = -225.0/8192.0; + prolongation[3](18,6) = 25.0/4096.0; + prolongation[3](18,7) = 21.0/4096.0; + prolongation[3](18,8) = -105.0/8192.0; + prolongation[3](18,9) = 105.0/4096.0; + prolongation[3](18,10) = 525.0/4096.0; + prolongation[3](18,11) = 1575.0/8192.0; + prolongation[3](18,12) = -175.0/4096.0; + prolongation[3](18,13) = -35.0/4096.0; + prolongation[3](18,14) = 175.0/8192.0; + prolongation[3](18,15) = -175.0/4096.0; + prolongation[3](18,16) = 105.0/1024.0; + prolongation[3](18,17) = -35.0/1024.0; + prolongation[3](18,18) = -175.0/1024.0; + prolongation[3](18,19) = 525.0/1024.0; + prolongation[3](18,20) = 315.0/2048.0; + prolongation[3](18,21) = 175.0/2048.0; + prolongation[3](18,22) = 1575.0/2048.0; + prolongation[3](18,23) = -525.0/2048.0; + prolongation[3](18,24) = -1575.0/4096.0; + prolongation[3](19,0) = -175.0/16384.0; + prolongation[3](19,1) = 25.0/16384.0; + prolongation[3](19,2) = -175.0/16384.0; + prolongation[3](19,3) = 1225.0/16384.0; + prolongation[3](19,4) = -175.0/4096.0; + prolongation[3](19,5) = 175.0/8192.0; + prolongation[3](19,6) = -35.0/4096.0; + prolongation[3](19,7) = -35.0/4096.0; + prolongation[3](19,8) = 175.0/8192.0; + prolongation[3](19,9) = -175.0/4096.0; + prolongation[3](19,10) = 1225.0/4096.0; + prolongation[3](19,11) = -1225.0/8192.0; + prolongation[3](19,12) = 245.0/4096.0; + prolongation[3](19,13) = 245.0/4096.0; + prolongation[3](19,14) = -1225.0/8192.0; + prolongation[3](19,15) = 1225.0/4096.0; + prolongation[3](19,16) = 245.0/1024.0; + prolongation[3](19,17) = 49.0/1024.0; + prolongation[3](19,18) = 245.0/1024.0; + prolongation[3](19,19) = 1225.0/1024.0; + prolongation[3](19,20) = -245.0/2048.0; + prolongation[3](19,21) = -245.0/2048.0; + prolongation[3](19,22) = -1225.0/2048.0; + prolongation[3](19,23) = -1225.0/2048.0; + prolongation[3](19,24) = 1225.0/4096.0; + prolongation[3](20,4) = 3.0/128.0; + prolongation[3](20,10) = -5.0/128.0; + prolongation[3](20,16) = -5.0/32.0; + prolongation[3](20,19) = 15.0/32.0; + prolongation[3](20,23) = 45.0/64.0; + prolongation[3](21,9) = 3.0/128.0; + prolongation[3](21,15) = -5.0/128.0; + prolongation[3](21,18) = -5.0/32.0; + prolongation[3](21,19) = 15.0/32.0; + prolongation[3](21,22) = 45.0/64.0; + prolongation[3](22,4) = -5.0/128.0; + prolongation[3](22,10) = 35.0/128.0; + prolongation[3](22,16) = 7.0/32.0; + prolongation[3](22,19) = 35.0/32.0; + prolongation[3](22,23) = -35.0/64.0; + prolongation[3](23,9) = -5.0/128.0; + prolongation[3](23,15) = 35.0/128.0; + prolongation[3](23,18) = 7.0/32.0; + prolongation[3](23,19) = 35.0/32.0; + prolongation[3](23,22) = -35.0/64.0; + prolongation[3](24,19) = 1.0; + + restriction[0](0,0) = 1.0; + restriction[0](4,5) = 1.0; + restriction[0](5,1) = 1.0; + restriction[0](13,14) = 1.0; + restriction[0](14,3) = 1.0; + restriction[0](16,24) = 1.0; + restriction[0](20,8) = 1.0; + restriction[0](23,11) = 1.0; + restriction[0](24,2) = 1.0; + restriction[1](1,1) = 1.0; + restriction[1](5,0) = 1.0; + restriction[1](6,5) = 1.0; + restriction[1](7,8) = 1.0; + restriction[1](8,2) = 1.0; + restriction[1](17,24) = 1.0; + restriction[1](20,14) = 1.0; + restriction[1](21,11) = 1.0; + restriction[1](24,3) = 1.0; + restriction[2](2,2) = 1.0; + restriction[2](8,1) = 1.0; + restriction[2](9,8) = 1.0; + restriction[2](11,3) = 1.0; + restriction[2](12,11) = 1.0; + restriction[2](18,24) = 1.0; + restriction[2](21,5) = 1.0; + restriction[2](22,14) = 1.0; + restriction[2](24,0) = 1.0; + restriction[3](3,3) = 1.0; + restriction[3](10,11) = 1.0; + restriction[3](11,2) = 1.0; + restriction[3](14,0) = 1.0; + restriction[3](15,14) = 1.0; + restriction[3](19,24) = 1.0; + restriction[3](22,8) = 1.0; + restriction[3](23,5) = 1.0; + restriction[3](24,1) = 1.0; +}; + + template <> double FEQuarticSub<2>::shape_value (const unsigned int i,