[cig-commits] r1280 - in branches/active_compositions/source: material_model simulator

dannberg at dealii.org dannberg at dealii.org
Thu Oct 18 08:26:33 PDT 2012


Author: dannberg
Date: 2012-10-18 09:26:33 -0600 (Thu, 18 Oct 2012)
New Revision: 1280

Modified:
   branches/active_compositions/source/material_model/simple.cc
   branches/active_compositions/source/simulator/core.cc
   branches/active_compositions/source/simulator/parameters.cc
Log:
Introduce Composition as mesh refinemen criterion.

Modified: branches/active_compositions/source/material_model/simple.cc
===================================================================
--- branches/active_compositions/source/material_model/simple.cc	2012-10-16 18:05:48 UTC (rev 1279)
+++ branches/active_compositions/source/material_model/simple.cc	2012-10-18 15:26:33 UTC (rev 1280)
@@ -39,12 +39,12 @@
                const SymmetricTensor<2,dim> &,
                const Point<dim> &) const
     {
-//      return eta;
-      return (this->n_compositional_fields()>0
+      return eta;
+/*      return (this->n_compositional_fields()>0
           ?
-          (4.0*composition[0]+1) * eta
+          (6.5*composition[0]+1) * eta
           :
-          eta);
+          eta);*/
     }
 
 

Modified: branches/active_compositions/source/simulator/core.cc
===================================================================
--- branches/active_compositions/source/simulator/core.cc	2012-10-16 18:05:48 UTC (rev 1279)
+++ branches/active_compositions/source/simulator/core.cc	2012-10-18 15:26:33 UTC (rev 1280)
@@ -788,6 +788,8 @@
     Vector<float> estimated_error_per_cell_rho (triangulation.n_active_cells());
     Vector<float> estimated_error_per_cell_T (triangulation.n_active_cells());
     Vector<float> estimated_error_per_cell_u (triangulation.n_active_cells());
+    std::vector<Vector<float> > estimated_error_per_cell_C (parameters.n_compositional_fields,
+                                                            Vector<float> (triangulation.n_active_cells()));
 
     const FEValuesExtractors::Scalar pressure (dim);
     const FEValuesExtractors::Scalar temperature (dim+1);
@@ -802,7 +804,8 @@
     //Velocity|Temperature|Normalized density and temperature|Weighted density and temperature|Density c_p temperature
 
     // compute density error
-    if (parameters.refinement_strategy != "Temperature" && parameters.refinement_strategy != "Velocity")
+    if (parameters.refinement_strategy != "Temperature" && parameters.refinement_strategy != "Velocity"
+                                                        && parameters.refinement_strategy != "Composition")
       {
         bool lookup_rho_c_p_T = (parameters.refinement_strategy == "Density c_p temperature");
 
@@ -942,6 +945,33 @@
         estimated_error_per_cell_T = 0;
       }
 
+    // compute the errors for composition solution
+    if (parameters.refinement_strategy == "Composition")
+      {
+        for (unsigned int i=0;i<parameters.n_compositional_fields;++i)
+          {
+            std::vector<bool> composition_component (dim+2+parameters.n_compositional_fields, false);
+            composition_component[dim+2+i] = true;
+            KellyErrorEstimator<dim>::estimate (dof_handler,
+                                                QGauss<dim-1>(parameters.composition_degree+1),
+                                                typename FunctionMap<dim>::type(),
+                                                solution,
+                                                estimated_error_per_cell_C[i],
+                                                composition_component,
+                                                0,
+                                                0,
+                                                triangulation.locally_owned_subdomain());
+
+            for (unsigned int k=0;k<estimated_error_per_cell.size();++k)
+              pcout << estimated_error_per_cell_C[i](k) << std::endl;
+          }
+      }
+    else
+      {
+        for (unsigned int i=0;i<parameters.n_compositional_fields;++i)
+          estimated_error_per_cell_C[i] = 0;
+      }
+
     // compute the errors for the stokes solution
     if (parameters.refinement_strategy == "Velocity")
       {
@@ -1010,6 +1040,14 @@
           for (unsigned int i=0; i<estimated_error_per_cell.size(); ++i)
             estimated_error_per_cell(i) = estimated_error_per_cell_rho(i);
         }
+      else if (parameters.refinement_strategy == "Composition")
+        {
+          for (unsigned int i=0; i<estimated_error_per_cell.size(); ++i)
+            estimated_error_per_cell(i) = 0;
+          for (unsigned int k=0; k<parameters.n_compositional_fields; ++k)
+            for (unsigned int i=0; i<estimated_error_per_cell.size(); ++i)
+              estimated_error_per_cell(i) += estimated_error_per_cell_C[k](i);
+        }
       else
         AssertThrow(false, ExcNotImplemented());
     }

Modified: branches/active_compositions/source/simulator/parameters.cc
===================================================================
--- branches/active_compositions/source/simulator/parameters.cc	2012-10-16 18:05:48 UTC (rev 1279)
+++ branches/active_compositions/source/simulator/parameters.cc	2012-10-18 15:26:33 UTC (rev 1280)
@@ -299,7 +299,8 @@
                                               "Velocity|"
                                               "Normalized density and temperature|"
                                               "Weighted density and temperature|"
-                                              "Density c_p temperature"),
+                                              "Density c_p temperature|"
+                                              "Composition"),
                          "The method used to determine which cells to refine and which "
                          "to coarsen.");
       prm.declare_entry ("Additional refinement times", "",



More information about the CIG-COMMITS mailing list