]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Further simplify code.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Thu, 1 Oct 2015 20:02:51 +0000 (15:02 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Thu, 1 Oct 2015 20:16:35 +0000 (15:16 -0500)
Since MappingQ is now no longer derived from MappingQ1, we can simplify
the implementation of the MappingQ::transform functions.

source/fe/mapping_q.cc

index e2162e64f6eec691e63a0537619a3bcc8c462e59..ed051a5ad4a759bf14a31e65b147c3f9399cbffe 100644 (file)
@@ -311,18 +311,17 @@ transform (const VectorSlice<const std::vector<Tensor<1,dim> > >   input,
            VectorSlice<std::vector<Tensor<1,spacedim> > >          output) const
 {
   AssertDimension (input.size(), output.size());
-  Assert ((dynamic_cast<const typename MappingQGeneric<dim,spacedim>::InternalData *> (&mapping_data)
+  Assert ((dynamic_cast<const typename MappingQ<dim,spacedim>::InternalData *> (&mapping_data)
            != 0),
           ExcInternalError());
+  const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data);
 
-  // If it is a genuine MappingQ::InternalData, we have to test further
-  // whether we should in fact work on the Q1 portion of it
-  if (const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data))
-    if (data->use_mapping_q1_on_current_cell)
-      return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
-
-  // otherwise just stick with what we already had
-  MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
+  // check whether we should in fact work on the Q1 portion of it
+  if (data->use_mapping_q1_on_current_cell)
+    return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
+  else
+    // otherwise use the full mapping
+    MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
 }
 
 
@@ -336,18 +335,17 @@ transform (const VectorSlice<const std::vector<DerivativeForm<1, dim ,spacedim>
            VectorSlice<std::vector<Tensor<2,spacedim> > >                             output) const
 {
   AssertDimension (input.size(), output.size());
-  Assert ((dynamic_cast<const typename MappingQGeneric<dim,spacedim>::InternalData *> (&mapping_data)
+  Assert ((dynamic_cast<const typename MappingQ<dim,spacedim>::InternalData *> (&mapping_data)
            != 0),
           ExcInternalError());
+  const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data);
 
-  // If it is a genuine MappingQ::InternalData, we have to test further
-  // whether we should in fact work on the Q1 portion of it
-  if (const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data))
-    if (data->use_mapping_q1_on_current_cell)
-      return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
-
-  // otherwise just stick with what we already had
-  MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
+  // check whether we should in fact work on the Q1 portion of it
+  if (data->use_mapping_q1_on_current_cell)
+    return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
+  else
+    // otherwise use the full mapping
+    MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
 }
 
 
@@ -359,18 +357,17 @@ transform (const VectorSlice<const std::vector<Tensor<2, dim> > >  input,
            VectorSlice<std::vector<Tensor<2,spacedim> > >          output) const
 {
   AssertDimension (input.size(), output.size());
-  Assert ((dynamic_cast<const typename MappingQGeneric<dim,spacedim>::InternalData *> (&mapping_data)
+  Assert ((dynamic_cast<const typename MappingQ<dim,spacedim>::InternalData *> (&mapping_data)
            != 0),
           ExcInternalError());
+  const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data);
 
-  // If it is a genuine MappingQ::InternalData, we have to test further
-  // whether we should in fact work on the Q1 portion of it
-  if (const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data))
-    if (data->use_mapping_q1_on_current_cell)
-      return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
-
-  // otherwise just stick with what we already had
-  MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
+  // check whether we should in fact work on the Q1 portion of it
+  if (data->use_mapping_q1_on_current_cell)
+    return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
+  else
+    // otherwise use the full mapping
+    MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
 }
 
 
@@ -384,18 +381,17 @@ transform (const VectorSlice<const std::vector<DerivativeForm<2, dim ,spacedim>
            VectorSlice<std::vector<Tensor<3,spacedim> > >                             output) const
 {
   AssertDimension (input.size(), output.size());
-  Assert ((dynamic_cast<const typename MappingQGeneric<dim,spacedim>::InternalData *> (&mapping_data)
+  Assert ((dynamic_cast<const typename MappingQ<dim,spacedim>::InternalData *> (&mapping_data)
            != 0),
           ExcInternalError());
+  const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data);
 
-  // If it is a genuine MappingQ::InternalData, we have to test further
-  // whether we should in fact work on the Q1 portion of it
-  if (const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data))
-    if (data->use_mapping_q1_on_current_cell)
-      return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
-
-  // otherwise just stick with what we already had
-  MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
+  // check whether we should in fact work on the Q1 portion of it
+  if (data->use_mapping_q1_on_current_cell)
+    return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
+  else
+    // otherwise use the full mapping
+    MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
 }
 
 
@@ -407,18 +403,17 @@ transform (const VectorSlice<const std::vector<Tensor<3, dim> > >  input,
            VectorSlice<std::vector<Tensor<3,spacedim> > >          output) const
 {
   AssertDimension (input.size(), output.size());
-  Assert ((dynamic_cast<const typename MappingQGeneric<dim,spacedim>::InternalData *> (&mapping_data)
+  Assert ((dynamic_cast<const typename MappingQ<dim,spacedim>::InternalData *> (&mapping_data)
            != 0),
           ExcInternalError());
+  const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data);
 
-  // If it is a genuine MappingQ::InternalData, we have to test further
-  // whether we should in fact work on the Q1 portion of it
-  if (const InternalData *data = dynamic_cast<const InternalData *>(&mapping_data))
-    if (data->use_mapping_q1_on_current_cell)
-      return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
-
-  // otherwise just stick with what we already had
-  MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
+  // check whether we should in fact work on the Q1 portion of it
+  if (data->use_mapping_q1_on_current_cell)
+    return q1_mapping->transform (input, mapping_type, *data->mapping_q1_data, output);
+  else
+    // otherwise use the full mapping
+    MappingQGeneric<dim,spacedim>::transform(input, mapping_type, mapping_data, output);
 }
 
 

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.