getfem-commits
[Top][All Lists]
Advanced

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

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


From: logari81
Subject: [Getfem-commits] r5384 - /trunk/getfem/src/getfem_generic_assembly.cc
Date: Wed, 05 Oct 2016 11:22:48 -0000

Author: logari81
Date: Wed Oct  5 13:22:47 2016
New Revision: 5384

URL: http://svn.gna.org/viewcvs/getfem?rev=5384&view=rev
Log:
fix crash in hessian calculations

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=5384&r1=5383&r2=5384&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Wed Oct  5 13:22:47 2016
@@ -3184,12 +3184,13 @@
   };
 
   struct ga_instruction_hess : public ga_instruction_val {
-    // Z(ndof,target_dim,N*N), coeff(Qmult,ndof) --> t(target_dim*Qmult,N,N)
+    // Z(ndof,target_dim,N,N), coeff(Qmult,ndof) --> t(target_dim*Qmult,N,N)
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: Hessian");
       size_type ndof = Z.sizes()[0];
       size_type target_dim = Z.sizes()[1];
-      size_type N = size_type(round(sqrt(scalar_type(Z.sizes()[2]))));
+      size_type N = Z.sizes()[2];
+      GA_DEBUG_ASSERT(N == Z.sizes()[3], "Internal error");
       size_type Qmult = qdim / target_dim;
       GA_DEBUG_ASSERT((qdim == 1 && N == 1 && t.sizes()[0] == 1) ||
                       (qdim == 1 && t.sizes()[0] == N && t.sizes()[1] == N) ||
@@ -3333,7 +3334,7 @@
   };
 
   struct ga_instruction_copy_hess_base : public ga_instruction_copy_val_base {
-    // Z(ndof,target_dim,N*N) --> t(Qmult*ndof,Qmult*target_dim,N,N)
+    // Z(ndof,target_dim,N,N) --> t(Qmult*ndof,Qmult*target_dim,N,N)
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: Hessian of test functions");
       size_type ndof = Z.sizes()[0];
@@ -3486,7 +3487,7 @@
 
   struct ga_instruction_elementary_transformation_hess
     : public ga_instruction_hess, ga_instruction_elementary_transformation {
-    // Z(ndof,target_dim,N*N), coeff_in(Qmult,ndof) --> coeff_out --> 
t(target_dim*Qmult,N,N)
+    // Z(ndof,target_dim,N,N), coeff_in(Qmult,ndof) --> coeff_out --> 
t(target_dim*Qmult,N,N)
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: Hessian with elementary transformation");
       do_transformation();
@@ -3780,7 +3781,7 @@
 
   struct ga_instruction_interpolate_hess_base
     : public ga_instruction_copy_hess_base, ga_instruction_interpolate_base {
-    // ctx --> Z(ndof,target_dim,N*N) --> t(Qmult*ndof,Qmult*target_dim,N,N)
+    // ctx --> Z(ndof,target_dim,N,N) --> t(Qmult*ndof,Qmult*target_dim,N,N)
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: interpolated base hessian");
       ga_instruction_interpolate_base::exec();
@@ -3897,7 +3898,7 @@
   struct ga_instruction_elementary_transformation_hess_base
     : public ga_instruction_copy_hess_base,
              ga_instruction_elementary_transformation_base {
-    // Z(ndof,target_dim,N*N) --> t_in --> 
t_out(Qmult*ndof,Qmult*target_dim,N,N)
+    // Z(ndof,target_dim,N,N) --> t_in --> 
t_out(Qmult*ndof,Qmult*target_dim,N,N)
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: Hessian of test functions with elementary "
                     "transformation");




reply via email to

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