]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add some TODOs w.r.t. the matrices for Nedelec elements.
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 15 Aug 2002 11:18:26 +0000 (11:18 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Thu, 15 Aug 2002 11:18:26 +0000 (11:18 +0000)
git-svn-id: https://svn.dealii.org/trunk@6328 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/source/fe/fe_nedelec_2d.cc
deal.II/deal.II/source/fe/fe_nedelec_3d.cc

index b10aabea8a23a4c2e93cb31678b76127758c98e6..9c8691bbace3a2c05b916d48a166a9602a4328fc 100644 (file)
 // the four child cells which tells us how the degrees of freedom on
 // the child cell are obtained from the degrees of freedom on the
 // mother cell
+//
+// TODO: [Anna] check whether the following paragraph is correct. if so, then please multiply the values in the four following matrices by two
+
+// note the following: since the shape functions themselves and not
+// only the gradients are transformed using the mapping object from
+// the unit cell to the real cell, the actual values of the function
+// on the real cell is degree of freedom times value of the shape
+// function on the unit cell times Jacobian. Thus, what has the DoF
+// value 1 on the mother cell must have the DoF value 2 on the child
+// cell since the latter is smaller by a (linear scaling) factor of
+// two.
 namespace FE_Nedelec_2d
 {
   static const double q1_into_q1_refined_0[] =
@@ -78,6 +89,12 @@ sizeof(FE_Nedelec<2>::Matrices::embedding[0]);
 
 // Constraint matrices: how do the new value on child faces depend on
 // the values on the mother face if that face has a hanging node
+//
+// Here, the same applies as for the embedding matrices: since the DoF
+// values are not only multiplied by the values of the shape function
+// on the unit cell, but also by the transformation, we have to
+// multiply the value on the large face by two to get the same value
+// back on the small face
 namespace FE_Nedelec_2d 
 {
   static const double constraint_q1[] =
@@ -87,8 +104,11 @@ namespace FE_Nedelec_2d
                                         // degree of freedom on the
                                         // refined edge has the same
                                         // value as that on the
-                                        // coarse edge
-       1., 1.     
+                                        // coarse edge, modulo the
+                                        // issue with the
+                                        // transformation described
+                                        // above
+       2., 2.
   };
 
 };
index 6c1fd0cc287f40e9c5299d1c9afbdf4bba01f65a..c0a6894dc63403ff8af0f4f58a881fce214ab31f 100644 (file)
 
 #include <fe/fe_nedelec.h>
 
+// Transfer matrices for finite elements: have one matrix for each of
+// the four child cells which tells us how the degrees of freedom on
+// the child cell are obtained from the degrees of freedom on the
+// mother cell
+//
+// TODO: [Anna] check whether the following paragraph is correct. if so, then please multiply the values in the eight following matrices by two
+
+// note the following: since the shape functions themselves and not
+// only the gradients are transformed using the mapping object from
+// the unit cell to the real cell, the actual values of the function
+// on the real cell is degree of freedom times value of the shape
+// function on the unit cell times Jacobian. Thus, what has the DoF
+// value 1 on the mother cell must have the DoF value 2 on the child
+// cell since the latter is smaller by a (linear scaling) factor of
+// two.
 namespace FE_Nedelec_3d
 {
   static const double q1_into_q1_refined_0[] =
@@ -176,8 +191,16 @@ sizeof(FE_Nedelec<3>::Matrices::embedding[0]);
 
 
 
-// Constraint matrices
+// Constraint matrices: how do the new value on child faces depend on
+// the values on the mother face if that face has a hanging node
+//
+// TODO: [Anna] check whether the following paragraph is correct. if so, then please multiply the values in the following matrix by two
 
+// Here, the same applies as for the embedding matrices: since the DoF
+// values are not only multiplied by the values of the shape function
+// on the unit cell, but also by the transformation, we have to
+// multiply the value on the large face by two to get the same value
+// back on the small face
 namespace FE_Nedelec_3d 
 {
   static const double constraint_q1[] =

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.