getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] (no subject)


From: Konstantinos Poulios
Subject: [Getfem-commits] (no subject)
Date: Wed, 20 Feb 2019 05:25:00 -0500 (EST)

branch: master
commit bf68273a853c0fc9b03e09ed2667e911dd0ab40b
Author: Konstantinos Poulios <address@hidden>
Date:   Wed Feb 20 11:24:52 2019 +0100

    Code simplifications
---
 src/getfem_generic_assembly_compile_and_exec.cc | 94 ++++++++++++-------------
 src/getfem_generic_assembly_workspace.cc        | 26 +++----
 2 files changed, 60 insertions(+), 60 deletions(-)

diff --git a/src/getfem_generic_assembly_compile_and_exec.cc 
b/src/getfem_generic_assembly_compile_and_exec.cc
index 6df384d..aa189c6 100644
--- a/src/getfem_generic_assembly_compile_and_exec.cc
+++ b/src/getfem_generic_assembly_compile_and_exec.cc
@@ -4109,7 +4109,7 @@ namespace getfem {
   };
 
   template <class MAT>
-  inline void add_elem_matrix_
+  inline void add_elem_matrix
   (MAT &K, const std::vector<size_type> &dofs1,
    const std::vector<size_type> &dofs2, std::vector<size_type> &/*dofs1_sort*/,
    base_vector &elem, scalar_type threshold, size_type /* N */) {
@@ -4129,7 +4129,7 @@ namespace getfem {
   //   return  int((*the_indto_sort)[aa]) - int((*the_indto_sort)[bb]);
   // }
 
-  inline void add_elem_matrix_
+  inline void add_elem_matrix
   (gmm::col_matrix<gmm::rsvector<scalar_type>> &K,
    const std::vector<size_type> &dofs1, const std::vector<size_type> &dofs2,
    std::vector<size_type> &dofs1_sort,
@@ -4281,12 +4281,12 @@ namespace getfem {
 
         if (pmf1 == pmf2 && cv1 == cv2) {
           if (I1.first() == I2.first()) {
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
           } else {
             dofs2.resize(dofs1.size());
             for (size_type i = 0; i < dofs1.size(); ++i)
               dofs2[i] =  dofs1[i] + I2.first() - I1.first();
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
           }
         } else {
           dofs2.assign(s2, I2.first());
@@ -4308,7 +4308,7 @@ namespace getfem {
           } else
             for (size_type i=0; i < s2; ++i) dofs2[i] += i;
 
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
         }
       }
       return 0;
@@ -4385,12 +4385,12 @@ namespace getfem {
 
         if (pmf2 == pmf1 && cv1 == cv2) {
           if (I1.first() == I2.first()) {
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
           } else {
             dofs2.resize(dofs1.size());
             for (size_type i = 0; i < dofs1.size(); ++i)
               dofs2[i] =  dofs1[i] + I2.first() - I1.first();
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
           }
         } else {
           if (cv2 == size_type(-1)) return 0;
@@ -4399,7 +4399,7 @@ namespace getfem {
           dofs2.resize(ct2.size());
           for (size_type i = 0; i < ct2.size(); ++i)
             dofs2[i] = ct2[i] + I2.first();
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
         }
       }
       return 0;
@@ -4480,12 +4480,12 @@ namespace getfem {
 
         if (pmf2 == pmf1 && cv1 == cv2) {
           if (I1.first() == I2.first()) {
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf*1E-14, N);
           } else {
             dofs2.resize(dofs1.size());
             for (size_type i = 0; i < dofs1.size(); ++i)
               dofs2[i] =  dofs1[i] + I2.first() - I1.first();
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
           }
         } else {
           if (cv2 == size_type(-1)) return 0;
@@ -4498,7 +4498,7 @@ namespace getfem {
             for (size_type q = 0; q < qmult2; ++q)
               *itd++ += *itt + q;
 
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf*1E-14, N);
         }
       }
       return 0;
@@ -4566,26 +4566,26 @@ namespace getfem {
 
         if (pmf2 == pmf1 && cv1 == cv2) {
           if (i1 == i2) {
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
           } else {
             dofs2.resize(ss2);
             for (size_type i = 0; i < ss2; ++i) dofs2[i] = i2 + ct1[i];
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
             for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
           }
         } else {
           if (cv2 == size_type(-1)) return 0;
           auto &ct2 = pmf2->ind_scalar_basic_dof_of_element(cv2);
           dofs2.resize(ss2);
           for (size_type i = 0; i < ss2; ++i) dofs2[i] = i2 + ct2[i];
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
           for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
           for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
         }
       }
       return 0;
@@ -4653,34 +4653,34 @@ namespace getfem {
 
         if (pmf2 == pmf1 && cv1 == cv2) {
           if (i1 == i2) {
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
-            add_elem_matrix_(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs1, dofs1_sort, elem, ninf, N);
           } else {
             dofs2.resize(ss2);
             for (size_type i = 0; i < ss2; ++i) dofs2[i] = i2 + ct1[i];
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
             for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
             for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
             for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-            add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+            add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
           }
         } else {
           if (cv2 == size_type(-1)) return 0;
           auto &ct2 = pmf2->ind_scalar_basic_dof_of_element(cv2);
           dofs2.resize(ss2);
           for (size_type i = 0; i < ss2; ++i) dofs2[i] = i2 + ct2[i];
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
           for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
           for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
           for (size_type i = 0; i < ss1; ++i) (dofs1[i])++;
           for (size_type i = 0; i < ss2; ++i) (dofs2[i])++;
-          add_elem_matrix_(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
+          add_elem_matrix(K, dofs1, dofs2, dofs1_sort, elem, ninf, N);
         }
       }
       return 0;
@@ -6575,7 +6575,7 @@ namespace getfem {
       }
     }
     rmi.node_list[pnode->hash_value].push_back(pnode);
-  }
+  } // ga_compile_node
 
   void ga_compile_function(ga_workspace &workspace,
                            ga_instruction_set &gis, bool scalar) {
@@ -6773,7 +6773,7 @@ namespace getfem {
             // cout << endl;
 
             if (version > 0) { // Assignment OR interpolation
-              if(td.varname_interpolation.size() != 0) {// assignment
+              if (!td.varname_interpolation.empty()) { // assignment
                 auto *imd
                   = workspace.associated_im_data(td.varname_interpolation);
                 auto &V = const_cast<model_real_plain_vector &>
@@ -6844,15 +6844,16 @@ namespace getfem {
                   GMM_ASSERT1(root->tensor_proper_size() == 1,
                               "Invalid vector or tensor quantity. An order 2 "
                               "weak form has to be a scalar quantity");
-                  const mesh_fem 
*mf1=workspace.associated_mf(root->name_test1);
-                  const mesh_fem 
*mf2=workspace.associated_mf(root->name_test2);
-                  const mesh_fem **mfg1 = 0, **mfg2 = 0;
-                  const std::string &intn1 = root->interpolate_name_test1;
-                  const std::string &intn2 = root->interpolate_name_test2;
+                  const mesh_fem
+                    *mf1=workspace.associated_mf(root->name_test1),
+                    *mf2=workspace.associated_mf(root->name_test2),
+                    **mfg1 = 0, **mfg2 = 0;
+                  const std::string &intn1 = root->interpolate_name_test1,
+                                    &intn2 = root->interpolate_name_test2;
                   bool secondary1 = intn1.size() &&
-                      workspace.secondary_domain_exists(intn1);
+                                    workspace.secondary_domain_exists(intn1);
                   bool secondary2 = intn2.size() &&
-                      workspace.secondary_domain_exists(intn2);
+                                    workspace.secondary_domain_exists(intn2);
                   fem_interpolation_context
                     &ctx1 = intn1.size()
                           ? (secondary1 ? rmi.secondary_domain_infos.ctx
@@ -6905,23 +6906,23 @@ namespace getfem {
                     In2 = &(workspace.interval_of_variable(root->name_test2));
                   }
 
-                  if (!interpolate && mfg1 == 0 && mfg2 == 0 && mf1 && mf2
-                      && mf1->get_qdim() == 1 && mf2->get_qdim() == 1
-                      && !(mf1->is_reduced()) && !(mf2->is_reduced())) {
+                  bool simple = !interpolate &&
+                                mfg1 == 0 && mfg2 == 0 && mf1 && mf2 &&
+                                !(mf1->is_reduced()) && !(mf2->is_reduced());
+                  if (simple && mf1->get_qdim() == 1 && mf2->get_qdim() == 1) {
                     pgai = std::make_shared
                       <ga_instruction_matrix_assembly_standard_scalar<>>
                       (root->tensor(), workspace.assembled_matrix(), ctx1, 
ctx2,
                        *In1, *In2, mf1, mf2,
                        gis.coeff, *alpha1, *alpha2, gis.nbpt, gis.ipt);
-                  } else if (!interpolate && mfg1 == 0 && mfg2==0 && mf1 && mf2
-                             && !(mf1->is_reduced()) && !(mf2->is_reduced())) {
-                    if (root->sparsity() == 10 && root->t.qdim()==2)
+                  } else if (simple) {
+                    if (root->sparsity() == 10 && root->t.qdim() == 2)
                       pgai = std::make_shared
                         
<ga_instruction_matrix_assembly_standard_vector_opt10_2>
                         (root->tensor(), 
workspace.assembled_matrix(),ctx1,ctx2,
                          *In1, *In2, mf1, mf2,
                          gis.coeff, *alpha1, *alpha2, gis.nbpt, gis.ipt);
-                    else if (root->sparsity() == 10 && root->t.qdim()==3)
+                    else if (root->sparsity() == 10 && root->t.qdim() == 3)
                       pgai = std::make_shared
                         
<ga_instruction_matrix_assembly_standard_vector_opt10_3>
                         (root->tensor(), 
workspace.assembled_matrix(),ctx1,ctx2,
@@ -6946,8 +6947,7 @@ namespace getfem {
                 }
               }
               if (pgai)
-                gis.whole_instructions[rm].instructions.push_back
-                  (std::move(pgai));
+                rmi.instructions.push_back(std::move(pgai));
             }
           }
         }
@@ -7097,9 +7097,9 @@ namespace getfem {
       psecondary_domain psd = instr.first.psd();
       const getfem::mesh &m = *(instr.second.m);
       GMM_ASSERT1(&m == &(mim.linked_mesh()), "Incompatibility of meshes");
-      const ga_instruction_list &gilb = instr.second.begin_instructions;
-      const ga_instruction_list &gile = instr.second.elt_instructions;
-      const ga_instruction_list &gil = instr.second.instructions;
+      const auto &gilb = instr.second.begin_instructions;
+      const auto &gile = instr.second.elt_instructions;
+      const auto &gil = instr.second.instructions;
 
       // if (gilb.size()) cout << "Begin instructions\n";
       // for (size_type j = 0; j < gilb.size(); ++j)
diff --git a/src/getfem_generic_assembly_workspace.cc 
b/src/getfem_generic_assembly_workspace.cc
index 55a5bcf..efbc6d3 100644
--- a/src/getfem_generic_assembly_workspace.cc
+++ b/src/getfem_generic_assembly_workspace.cc
@@ -420,19 +420,19 @@ namespace getfem {
       }
 
       bool found = false;
-      for (size_type i = 0; i < trees.size(); ++i) {
-        if (trees[i].mim == &mim && trees[i].m == &m &&
-           trees[i].secondary_domain.compare(tree.secondary_domain) == 0 &&
-            trees[i].order == order &&
-            trees[i].name_test1.compare(tree.root->name_test1) == 0 &&
-            trees[i].interpolate_name_test1.compare
-            (tree.root->interpolate_name_test1) == 0 &&
-            trees[i].name_test2.compare(tree.root->name_test2) == 0 &&
-            trees[i].interpolate_name_test2.compare
-            (tree.root->interpolate_name_test2) == 0 &&
-            trees[i].rg == &rg && trees[i].interpolation == for_interpolation 
&&
-            trees[i].varname_interpolation.compare(varname_interpolation)==0) {
-          ga_tree &ftree = *(trees[i].ptree);
+      for (const ga_workspace::tree_description &td : trees) {
+        if (td.mim == &mim &&
+            td.m == &m &&
+            td.secondary_domain == tree.secondary_domain &&
+            td.order == order &&
+            td.name_test1 == tree.root->name_test1 &&
+            td.interpolate_name_test1 == tree.root->interpolate_name_test1 &&
+            td.name_test2 == tree.root->name_test2 &&
+            td.interpolate_name_test2 == tree.root->interpolate_name_test2 &&
+            td.rg == &rg &&
+            td.interpolation == for_interpolation &&
+            td.varname_interpolation == varname_interpolation) {
+          ga_tree &ftree = *(td.ptree);
 
           ftree.insert_node(ftree.root, GA_NODE_OP);
           ftree.root->op_type = GA_PLUS;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]