virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
const Boundary<dim> &boundary,
dFMatrix &local_mass_matrix) const;
+
+ private:
+
+ /**
+ * This function is simply singled out of
+ * the constructor; it sets up the
+ * #restriction# and #prolongation#
+ * matrices. Since we have two constructors
+ * which need this functionality, we
+ * provide a single function for this.
+ */
+ void initialize_matrices ();
};
virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
const Boundary<dim> &boundary,
dFMatrix &local_mass_matrix) const;
+
+ private:
+
+ /**
+ * This function is simply singled out of
+ * the constructor; it sets up the
+ * #restriction# and #prolongation#
+ * matrices. Since we have two constructors
+ * which need this functionality, we
+ * provide a single function for this.
+ */
+ void initialize_matrices ();
};
virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
const Boundary<dim> &boundary,
dFMatrix &local_mass_matrix) const;
+
+ private:
+
+ /**
+ * This function is simply singled out of
+ * the constructor; it sets up the
+ * #restriction# and #prolongation#
+ * matrices. Since we have two constructors
+ * which need this functionality, we
+ * provide a single function for this.
+ */
+ void initialize_matrices ();
};
virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
const Boundary<dim> &boundary,
dFMatrix &local_mass_matrix) const;
+
+ private:
+
+ /**
+ * This function is simply singled out of
+ * the constructor; it sets up the
+ * #restriction# and #prolongation#
+ * matrices. Since we have two constructors
+ * which need this functionality, we
+ * provide a single function for this.
+ */
+ void initialize_matrices ();
};
+// declare explicit specializations before use:
+template <> void FECubicSub<deal_II_dimension>::initialize_matrices ();
+
+
#if deal_II_dimension == 1
template <>
FECubicSub<1>::FECubicSub () :
FELinearMapping<1> (1, 2) {
+ initialize_matrices ();
+};
+
+
+
+template <>
+FECubicSub<1>::FECubicSub (const int) :
+ FELinearMapping<2> (0, 0, 4)
+{
+ initialize_matrices ();
+};
+
+
+
+template <>
+void FECubicSub<1>::initialize_matrices () {
+
prolongation[0](0,0) = 1.0;
prolongation[0](0,1) = 0.0;
prolongation[0](0,2) = 0.0;
interface_constraints(4,2) = -5.0/16.0;
interface_constraints(4,3) = 15.0/16.0;
- 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;
+ initialize_matrices ();
};
template <>
-FECubicSub<2>::FECubicSub (int) :
+FECubicSub<2>::FECubicSub (const int) :
FELinearMapping<2> (0, 0, 16)
{
+ initialize_matrices ();
+};
+
+
+
+template <>
+void FECubicSub<2>::initialize_matrices () {
prolongation[0](0,0) = 1.0;
prolongation[0](1,0) = -1.0/16.0;
prolongation[0](1,1) = -1.0/16.0;
};
+
template <>
double
FECubicSub<2>::shape_value (const unsigned int i,
#include<fe/fe_lib.dg.h>
+
+
template<int dim>
FEDGLinear<dim>::FEDGLinear():
FELinear<dim>(1) {};
+
template<int dim>
FEDGQuadraticSub<dim>::FEDGQuadraticSub():
FEQuadraticSub<dim>(1) {};
+
template<int dim>
FEDGCubicSub<dim>::FEDGCubicSub():
FECubicSub<dim>(1) {};
+
template<int dim>
FEDGQuarticSub<dim>::FEDGQuarticSub():
FEQuarticSub<dim>(1) {};
};
+
template <int dim>
const dFMatrix &
FEDGCubicSub<dim>::restrict (const unsigned int child) const {
};
+
template <int dim>
const dFMatrix &
FEDGQuarticSub<dim>::restrict (const unsigned int child) const {
Assert (false, ExcNotImplemented());
return restriction[child];
};
+
+
+
+
+// explicit instantiations
+template class FEDGLinear<deal_II_dimension>;
+template class FEDGQuadraticSub<deal_II_dimension>;
+template class FEDGCubicSub<deal_II_dimension>;
+template class FEDGQuarticSub<deal_II_dimension>;
// we do not add up the contributions but
// set them right into the matrices!
- // The restriction matrizes got crazy values
+ // The restriction matrices got crazy values
// as it is yet not clear how they should work
// in the DG(0) case. In general
// the use of the restriction matrices
restriction[1](0,0) = 1e8;
prolongation[0](0,0) = 1.0;
-
prolongation[1](0,0) = 1.0;
};
Assert (false, ExcInternalError());
};
-
-/*
-template <>
-void FEDGConstant<1>::get_local_mass_matrix (const DoFHandler<1>::cell_iterator &cell,
- const Boundary<1> &,
- 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));
-
- const double h = cell->vertex(1)(0) - cell->vertex(0)(0);
- Assert (h>0, ExcJacobiDeterminantHasWrongSign());
-
- local_mass_matrix(0,0) = h;
-};
-*/
#endif
FEDGConstant<2>::FEDGConstant () :
FELinearMapping<2> (0, 0, 1)
{
- // The restriction matrizes got crazy values
+ // The restriction matrices got crazy values
// as it is yet not clear how they should work
// in the DG(0) case. In general
// the use of the restriction matrices
const Point<dim>&) const
{
Assert((i<total_dofs), ExcInvalidIndex(i));
- // originally, the return type of the
- // function was Point<dim>, so we
- // still construct it as that. it should
- // make no difference in practice,
- // however
- return Point<dim> ();
+ return Tensor<1,dim> ();
};
template <int dim>
void
FEDGConstant<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
- const Boundary<dim> &,
- vector<Point<dim> > &support_points) const {
+ const Boundary<dim> &,
+ vector<Point<dim> > &support_points) const {
Assert (support_points.size() == total_dofs,
ExcWrongFieldDimension (support_points.size(), total_dofs));
// explicit instantiations
template class FEDGConstant<deal_II_dimension>;
-
-
-
-
-
-
-
-
-
+// declare explicit specializations before use:
+template <> void FELinear<deal_II_dimension>::initialize_matrices ();
+
+
+
+
#if deal_II_dimension == 1
template <>
FELinear<1>::FELinear () :
FELinearMapping<1> (1, 0)
{
+ initialize_matrices ();
+};
+
+
+template <>
+FELinear<1>::FELinear (const int) :
+ FELinearMapping<1> (0, 2)
+{
+ initialize_matrices ();
+};
+
+
+
+
+template <>
+void FELinear<1>::initialize_matrices () {
// for restriction and prolongation matrices:
// note that we do not add up all the
// contributions since then we would get
interface_constraints(0,0) = 1./2.;
interface_constraints(0,1) = 1./2.;
- 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.;
+ initialize_matrices ();
};
+
template <>
FELinear<2>::FELinear (const int) :
FELinearMapping<2> (0, 0, 4)
{
+ initialize_matrices ();
+};
+
+
+
+template <>
+void FELinear<2>::initialize_matrices () {
restriction[0](0,0) = 1.0;
restriction[1](1,1) = 1.0;
restriction[2](2,2) = 1.0;
-
template <>
inline
double
+// declare explicit specializations before use:
+template <> void FEQuadraticSub<deal_II_dimension>::initialize_matrices ();
+
+
#if deal_II_dimension == 1
template <>
FEQuadraticSub<1>::FEQuadraticSub () :
FELinearMapping<1> (1, 1) {
+ initialize_matrices ();
+};
+
+
+
+template <>
+FEQuadraticSub<1>::FEQuadraticSub (const int) :
+ FELinearMapping<1> (0, 3) {
+ initialize_matrices ();
+};
+
+
+
+template <>
+void FEQuadraticSub<1>::initialize_matrices () {
/*
Get the prolongation matrices by the following little maple script:
local_mass_matrix(2,2) = 8./15.*h;
};
-
#endif
interface_constraints(2,1) = 3./8.;
interface_constraints(2,2) = 3./4.;
-/*
- 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);
+ initialize_matrices ();
+};
- 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 <>
+FEQuadraticSub<2>::FEQuadraticSub (const int) :
+ FELinearMapping<2> (0, 0, 9)
+{
+ initialize_matrices ();
};
+
template <>
-FEQuadraticSub<2>::FEQuadraticSub (int) :
- FELinearMapping<2> (0, 0, 9)
-{
+void FEQuadraticSub<2>::initialize_matrices () {
/*
Get the prolongation and restriction matrices by the following little maple script:
+// declare explicit specializations before use:
+template <> void FEQuarticSub<deal_II_dimension>::initialize_matrices ();
+
#if deal_II_dimension == 1
template <>
FEQuarticSub<1>::FEQuarticSub () :
FELinearMapping<1> (1, 3) {
+ initialize_matrices ();
+};
+
+
+template <>
+FEQuarticSub<1>::FEQuarticSub (const int) :
+ FELinearMapping<1> (0, 5) {
+ initialize_matrices ();
+};
+
+
+template <>
+void FEQuarticSub<1>::initialize_matrices () {
prolongation[0](0,0) = 1.0;
prolongation[0](1,3) = 1.0;
prolongation[0](2,0) = 35.0/128.0;
interface_constraints(6,3) = -35.0/64.0;
interface_constraints(6,4) = 35.0/32.0;
- 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;
+ initialize_matrices ();
};
template <>
-FEQuarticSub<2>::FEQuarticSub (int) :
+FEQuarticSub<2>::FEQuarticSub (const int) :
FELinearMapping<2> (0, 0, 25)
{
+ initialize_matrices ();
+};
+
+
+
+template <>
+void FEQuarticSub<2>::initialize_matrices () {
prolongation[0](0,0) = 1.0;
prolongation[0](1,5) = 1.0;
prolongation[0](2,24) = 1.0;