getfem-commits
[Top][All Lists]
Advanced

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

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


From: Yves . Renard
Subject: [Getfem-commits] r5011 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Wed, 27 May 2015 17:44:52 -0000

Author: renard
Date: Wed May 27 19:44:52 2015
New Revision: 5011

URL: http://svn.gna.org/viewcvs/getfem?rev=5011&view=rev
Log:
small fix

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=5011&r1=5010&r2=5011&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Wed May 27 19:44:52 2015
@@ -232,7 +232,7 @@
 
   static void ga_throw_error_msg(const std::string &expr, size_type pos,
                                  const std::string &msg) {
-    int length_before = 50, length_after = 50;
+    int length_before = 70, length_after = 70;
     if (expr.size()) {
       int first = std::max(0, int(pos)-length_before);
       int last = std::min(int(pos)+length_after, int(expr.size()));
@@ -2159,7 +2159,7 @@
 
 
     // Miscellaneous functions
-    PREDEF_FUNCTIONS["Heaviside"] = ga_predef_function(ga_Heaviside);
+    PREDEF_FUNCTIONS["Heaviside"] = ga_predef_function(ga_Heaviside); // 
ga_predef_function(ga_Heaviside, 2, "(0)");
     PREDEF_FUNCTIONS["sign"] = ga_predef_function(ga_sign);
     PREDEF_FUNCTIONS["abs"] = ga_predef_function(ga_abs, 1, "sign");
     PREDEF_FUNCTIONS["pos_part"]
@@ -7832,7 +7832,7 @@
           switch (F.dtype) {
           case 0:
             GMM_ASSERT1(false, "Cannot derive function " << child0->name
-                        << ". No derivative provided");
+                        << ". No derivative provided or not derivable 
function.");
           case 1:
             child0->name = F.derivative1;
             break;
@@ -7853,24 +7853,16 @@
               if (Fp.is_affine("t")) {
                 scalar_type b = Fp(scalar_type(0));
                 scalar_type a = Fp(scalar_type(1)) - b;
-                if (a == scalar_type(0) && b == scalar_type(0)) {
-                  pnode->node_type = GA_NODE_ZERO;
-                  gmm::clear(pnode->t.as_vector());
-                  tree.clear_children(pnode);
-                } else if (a == scalar_type(0)) {
-                  pnode->node_type = GA_NODE_CONSTANT;
-                  std::fill(pnode->t.begin(), pnode->t.end(), b);
-                  tree.clear_children(pnode);
-                } else if (b  == scalar_type(0)) {
+                if (b  == scalar_type(0)) {
                   pnode->node_type = GA_NODE_OP;
                   pnode->op_type = GA_MULT;
                   child0->init_scalar_tensor(a);
-                  child0->node_type = GA_NODE_CONSTANT;
+                  child0->node_type = (a == scalar_type(0)) ? GA_NODE_ZERO : 
GA_NODE_CONSTANT;
                 } else {
                   pnode->node_type = GA_NODE_OP;
                   pnode->op_type = GA_MULT;
                   child0->init_scalar_tensor(a);
-                  child0->node_type = GA_NODE_CONSTANT;
+                  child0->node_type = (a == scalar_type(0)) ? GA_NODE_ZERO : 
GA_NODE_CONSTANT;
                   tree.insert_node(pnode, GA_NODE_OP);
                   pnode->parent->op_type = GA_PLUS;
                   tree.add_child(pnode->parent);




reply via email to

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