getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r5117 - in /trunk/getfem/src: getfem/getfem_generic_ass


From: Yves . Renard
Subject: [Getfem-commits] r5117 - in /trunk/getfem/src: getfem/getfem_generic_assembly.h getfem_generic_assembly.cc
Date: Mon, 02 Nov 2015 12:48:04 -0000

Author: renard
Date: Mon Nov  2 13:48:02 2015
New Revision: 5117

URL: http://svn.gna.org/viewcvs/getfem?rev=5117&view=rev
Log:
small bug fix on macros

Modified:
    trunk/getfem/src/getfem/getfem_generic_assembly.h
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/src/getfem/getfem_generic_assembly.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_generic_assembly.h?rev=5117&r1=5116&r2=5117&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_generic_assembly.h   (original)
+++ trunk/getfem/src/getfem/getfem_generic_assembly.h   Mon Nov  2 13:48:02 2015
@@ -204,11 +204,12 @@
       size_type meshdim;
       bool ignore_X;
       m_tree(void) : ptree(0) {}
+      m_tree(const m_tree& o);
+      m_tree &operator =(const m_tree& o);
       ~m_tree(void);
     };
 
     mutable std::map<std::string, m_tree> macro_trees;
-
 
     void add_tree(ga_tree &tree, const mesh &m, const mesh_im &mim,
                   const mesh_region &rg,

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5117&r1=5116&r2=5117&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Mon Nov  2 13:48:02 2015
@@ -680,8 +680,10 @@
       clear_node_rec(pnode);
     }
 
-    void clear(void)
-    { if (root) clear_node_rec(root); root = current_node = 0; }
+    void clear(void) { 
+      std::string ga_tree_to_string(const ga_tree &tree);
+      if (root) clear_node_rec(root); root = current_node = 0;
+    }
 
     void clear_children(pga_tree_node pnode) {
       for (size_type i = 0; i < pnode->children.size(); ++i)
@@ -5173,12 +5175,20 @@
   }
 
   ga_workspace::m_tree::~m_tree(void) { if (ptree) delete ptree; }
+  ga_workspace::m_tree::m_tree(const m_tree& o)
+    : ptree(o.ptree), meshdim(o.meshdim), ignore_X(o.ignore_X)
+  { if (o.ptree) ptree = new ga_tree(*(o.ptree)); }
+  ga_workspace::m_tree &ga_workspace::m_tree::operator =(const m_tree& o) {
+    ptree = o.ptree; meshdim = o.meshdim; ignore_X = o.ignore_X;
+    if (o.ptree) ptree = new ga_tree(*(o.ptree));
+    return *this;
+  }
 
   ga_tree &ga_workspace::macro_tree(const std::string &name,
                                     size_type meshdim, size_type ref_elt_dim,
                                     bool ignore_X) const {
     GMM_ASSERT1(macro_exists(name), "Undefined macro");
-    std::map<std::string, m_tree>::iterator it = macro_trees.find(name);
+    auto it = macro_trees.find(name);
     bool to_be_analyzed = false;
     m_tree *mt = 0;
 
@@ -5756,6 +5766,18 @@
     // cout << "semantic analysis of " << ga_tree_to_string(tree) << endl;
     ga_node_analysis(expr, tree, workspace, tree.root, meshdim, ref_elt_dim,
                      eval_fixed_size, ignore_X, option);
+    if (tree.root && option == 2) {
+      if (((tree.root->test_function_type & 1) && 
+          (tree.root->name_test1.compare(workspace.selected_test1.first)
+           || tree.root->interpolate_name_test1.compare
+           (workspace.selected_test1.second)))
+         ||
+         ((tree.root->test_function_type & 2) &&
+          (tree.root->name_test2.compare(workspace.selected_test2.first)
+           || tree.root->interpolate_name_test2.compare
+           (workspace.selected_test2.second))))
+       tree.clear();
+    }
     // cout << "semantic analysis done " << endl;
     ga_valid_operand(expr, tree.root);
   }




reply via email to

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