getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r4856 - /trunk/getfem/src/getfem_generic_assembly.cc


From: logari81
Subject: [Getfem-commits] r4856 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Tue, 10 Feb 2015 09:05:20 -0000

Author: logari81
Date: Tue Feb 10 10:05:20 2015
New Revision: 4856

URL: http://svn.gna.org/viewcvs/getfem?rev=4856&view=rev
Log:
fix bug in derivation of division operator and enable compilation of zero nodes

Modified:
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=4856&r1=4855&r2=4856&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Tue Feb 10 10:05:20 2015
@@ -6637,12 +6637,20 @@
           
       case GA_DIV: case GA_DOTDIV:
         if (mark1) {
-          if (mark0) {
-            tree.duplicate_with_addition(pnode);
-            ga_node_derivation(tree, workspace, m, child0, varname,
-                               interpolatename, order);
-            pnode->parent->op_type = GA_MINUS;
-            pnode = pnode->parent->children[1];
+          if (pnode->children[0]->node_type == GA_NODE_CONSTANT)
+            gmm::scale(pnode->children[0]->t.as_vector(), scalar_type(-1));
+          else {
+            if (mark0) {
+              tree.duplicate_with_addition(pnode);
+              ga_node_derivation(tree, workspace, m, child0, varname,
+                                 interpolatename, order);
+              pnode->parent->op_type = GA_MINUS;
+              pnode = pnode->parent->children[1];
+            } else {
+              tree.insert_node(pnode);
+              pnode->parent->node_type = GA_NODE_OP;
+              pnode->parent->op_type = GA_UNARY_MINUS;
+            }
           }
           tree.insert_node(pnode->children[1]);
           pga_tree_node pnode_param = pnode->children[1];
@@ -7097,7 +7105,7 @@
         pnode->node_type == GA_NODE_SPEC_FUNC ||
         pnode->node_type == GA_NODE_CONSTANT ||
         pnode->node_type == GA_NODE_ALLINDICES ||
-        pnode->node_type == GA_NODE_ZERO ||
+        //pnode->node_type == GA_NODE_ZERO ||   // zero nodes can still have 
test functions
         pnode->node_type == GA_NODE_RESHAPE) return;
 
     pga_instruction pgai = 0;




reply via email to

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