getfem-commits
[Top][All Lists]
Advanced

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

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


From: Yves . Renard
Subject: [Getfem-commits] r4720 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Thu, 17 Jul 2014 09:28:11 -0000

Author: renard
Date: Thu Jul 17 11:28:11 2014
New Revision: 4720

URL: http://svn.gna.org/viewcvs/getfem?rev=4720&view=rev
Log:
a bug fix on deviator operator

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=4720&r1=4719&r2=4720&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Thu Jul 17 11:28:11 2014
@@ -555,7 +555,7 @@
       pga_tree_node new_node = new ga_tree_node(op_type, pos);
       if (current_node) {
         if (op_type == GA_UNARY_MINUS || op_type == GA_TRACE
-            || op_type == GA_PRINT) {
+            || op_type == GA_DEVIATOR || op_type == GA_PRINT) {
           current_node->children.push_back(new_node);
           new_node->parent = current_node;
         } else {
@@ -933,15 +933,17 @@
           GMM_ASSERT1(pnode->children.size() == 1, "Invalid tree");
           str << "Trace("; ga_print_node(pnode->children[0], str); str << ")";
         } else if (pnode->op_type == GA_DEVIATOR) {
-          GMM_ASSERT1(pnode->children.size() == 1, "Invalid tree");
+          GMM_ASSERT1(pnode->children.size() == 1, "Invalid tree with "
+                      << pnode->children.size() << " children instead of 1");
           str << "Deviator("; ga_print_node(pnode->children[0], str); str<<")";
         } else if (pnode->op_type == GA_PRINT) {
           GMM_ASSERT1(pnode->children.size() == 1, "Invalid tree");
           str << "Print("; ga_print_node(pnode->children[0], str); str << ")";
         } else {
-          GMM_ASSERT1(pnode->children.size() == 2, "Invalid tree");
+          // GMM_ASSERT1(pnode->children.size() == 2, "Invalid tree");
           if (pnode->op_type == GA_MULT &&
-              (pnode->test_function_type == size_type(-1) ||
+              (pnode->children.size() == 1 ||
+               pnode->test_function_type == size_type(-1) ||
                (pnode->children[0]->tensor_order() == 4 &&
                 pnode->children[1]->tensor_order() == 2)))
             { par = true; str << "("; }
@@ -959,7 +961,10 @@
           default: GMM_ASSERT1(false, "Invalid or not taken into account "
                                "operation");
           }
-          ga_print_node(pnode->children[1], str);
+          if (pnode->children.size() >= 2)
+            ga_print_node(pnode->children[1], str);
+          else
+            str << "(unknow second argument)";
         }
         if (par) str << ")";
       }
@@ -4108,7 +4113,8 @@
     ga_tree tree;
     // cout << "read string" << endl;
     ga_read_string(expr, tree);
-    // cout << "first semantic analysis" << endl;
+    // cout << "string read" << endl << "result : " << ga_tree_to_string(tree)
+    //     << endl << "first semantic analysis" << endl;
     ga_semantic_analysis(expr, tree, *this, mim.linked_mesh().dim(),
                          false, false);
     // cout << "first semantic analysis done" << endl;
@@ -4463,8 +4469,6 @@
                                const ga_workspace &workspace,
                                pga_tree_node pnode, size_type meshdim,
                                bool eval_fixed_size, bool ignore_X) {
-    // cout << "begin analysis of node "; ga_print_node(pnode, cout);
-    // cout << endl;
     bool all_cte = true, all_sc = true;
     pnode->symmetric_op = false;
 
@@ -4495,6 +4499,13 @@
     const bgeot::multi_index &size1 = child1 ? child1->t.sizes() : mi;
     size_type dim0 = child0 ? child0->tensor_order() : 0;
     size_type dim1 = child1 ? child1->tensor_order() : 0;
+
+    // cout << "child1 = " << child1 << endl;
+    // cout << "child0 = " << child0 << endl;
+    // cout << "nbch = " << nbch << endl;
+    // cout << "begin analysis of node "; ga_print_node(pnode, cout);
+    // cout << endl;
+    
 
     switch (pnode->node_type) {
     case GA_NODE_PREDEF_FUNC: case GA_NODE_OPERATOR: case GA_NODE_SPEC_FUNC :




reply via email to

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