getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r5443 - in /trunk/getfem: contrib/opt_assembly/opt_asse


From: Yves . Renard
Subject: [Getfem-commits] r5443 - in /trunk/getfem: contrib/opt_assembly/opt_assembly.cc src/bgeot_geometric_trans.cc
Date: Wed, 26 Oct 2016 09:00:20 -0000

Author: renard
Date: Wed Oct 26 11:00:19 2016
New Revision: 5443

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

Modified:
    trunk/getfem/contrib/opt_assembly/opt_assembly.cc
    trunk/getfem/src/bgeot_geometric_trans.cc

Modified: trunk/getfem/contrib/opt_assembly/opt_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/contrib/opt_assembly/opt_assembly.cc?rev=5443&r1=5442&r2=5443&view=diff
==============================================================================
--- trunk/getfem/contrib/opt_assembly/opt_assembly.cc   (original)
+++ trunk/getfem/contrib/opt_assembly/opt_assembly.cc   Wed Oct 26 11:00:19 2016
@@ -454,7 +454,7 @@
   if (all || only_one == 1) // ndofu = 321602 ndofp = 160801 ndofchi = 1201
     test_new_assembly(2, 400, 1);
   // Vector source term   : 0.25 | 0.68 |
-  // Nonlinear residual   : 0.35 |      |
+  // Nonlinear residual   : 0.34 |      |
   // Mass (scalar)        : 0.18 | 0.58 | 0.04 | 0.06 | 0.06 | 0.06 |
   // Mass (vector)        : 0.30 | 0.82 | 0.09 | 0.15 | 0.06 | 0.09 |
   // Laplacian            : 0.16 | 0.80 | 0.04 | 0.05 | 0.06 | 0.05 |
@@ -466,9 +466,9 @@
   // Nonlinear residual   : 0.59 |      |
   // Mass (scalar)        : 0.21 | 0.58 | 0.05 | 0.08 | 0.08 | 0.06 |
   // Mass (vector)        : 0.69 | 1.37 | 0.17 | 0.27 | 0.08 | 0.34 |
-  // Laplacian            : 0.18 | 1.37 | 0.03 | 0.07 | 0.08 | 0.03 |
-  // Homogeneous elas     : 0.84 | 4.58 | 0.26 | 0.33 | 0.08 | 0.43 |
-  // Non-homogeneous elast: 0.90 | 6.55 | 0.26 | 0.33 | 0.08 | 0.49 |
+  // Laplacian            : 0.18 | 1.15 | 0.03 | 0.07 | 0.08 | 0.03 |
+  // Homogeneous elas     : 0.79 | 4.29 | 0.26 | 0.33 | 0.08 | 0.38 |
+  // Non-homogeneous elast: 0.87 | 6.35 | 0.26 | 0.33 | 0.08 | 0.46 |
   if (all || only_one == 3) // ndofu = 321602 ndofp = 160801 ndofchi = 1201
     test_new_assembly(2, 200, 2);
   // Vector source term   : 0.11 | 0.24 |
@@ -481,11 +481,11 @@
   if (all || only_one == 4) // ndofu = 151959 ndofp =  50653 ndofchi = 6553
     test_new_assembly(3, 18, 2);
   // Vector source term   : 0.16 | 0.24 |
-  // Nonlinear residual   : 0.40 |      |
+  // Nonlinear residual   : 0.39 |      |
   // Mass (scalar)        : 0.11 | 0.25 | 0.05 | 0.05 | 0.03 | 0.03 |
-  // Mass (vector)        : 1.14 | 0.90 | 0.21 | 0.35 | 0.03 | 0.76 |
-  // Laplacian            : 0.10 | 0.55 | 0.03 | 0.04 | 0.03 | 0.03 |
-  // Homogeneous elas     : 1.66 | 3.41 | 0.59 | 0.73 | 0.03 | 0.90 |
+  // Mass (vector)        : 1.14 | 0.89 | 0.21 | 0.35 | 0.03 | 0.76 |
+  // Laplacian            : 0.10 | 0.53 | 0.03 | 0.04 | 0.03 | 0.03 |
+  // Homogeneous elas     : 1.66 | 3.35 | 0.59 | 0.73 | 0.03 | 0.90 |
   // Non-homogeneous elast: 1.72 | 9.15 | 0.59 | 0.73 | 0.03 | 0.96 |
   if (all || only_one == 5) // ndofu = 151959 ndofp =  50653 ndofchi = 6553
     test_new_assembly(3, 9, 4);
@@ -494,7 +494,7 @@
   // Mass (scalar)        : 0.51 | 0.34 | 0.09 | 0.16 | 0.01 | 0.33 |
   // Mass (vector)        : 4.37 | 1.31 | 0.41 | 1.27 | 0.01 | 3.10 |
   // Laplacian            : 0.40 | 0.77 | 0.09 | 0.14 | 0.01 | 0.25 |
-  // Homogeneous elas     : 8.93 | 5.24 | 0.88 | 1.43 | 0.01 | 7.49 |
+  // Homogeneous elas     : 8.93 | 5.23 | 0.88 | 1.43 | 0.01 | 7.49 |
   // Non-homogeneous elast: 9.01 | 47.4 | 0.76 | 1.35 | 0.01 | 7.65 |
 
   // Conclusions :

Modified: trunk/getfem/src/bgeot_geometric_trans.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/bgeot_geometric_trans.cc?rev=5443&r1=5442&r2=5443&view=diff
==============================================================================
--- trunk/getfem/src/bgeot_geometric_trans.cc   (original)
+++ trunk/getfem/src/bgeot_geometric_trans.cc   Wed Oct 26 11:00:19 2016
@@ -153,16 +153,16 @@
       *A++ =  d/det;  *A++ /= -det; *A++ /= -det;  *A =  a/det;
       return det;
     } else if (N == 3) {
-      scalar_type a0 = A[4]*A[8] - A[5]*A[7], a3 = A[5]*A[6] - A[3]*A[8];
-      scalar_type a6 = A[3]*A[7] - A[4]*A[6];
-      scalar_type det =  A[0] * a0 + A[1] * a3 + A[2] * a6;
+      scalar_type a0 = A[4]*A[8] - A[5]*A[7], a1 = A[5]*A[6] - A[3]*A[8];
+      scalar_type a2 = A[3]*A[7] - A[4]*A[6];
+      scalar_type det =  A[0] * a0 + A[1] * a1 + A[2] * a2;
       GMM_ASSERT1(det != scalar_type(0), "Non invertible matrix");
-      scalar_type a1 = (A[2]*A[7] - A[1]*A[8]), a2 = (A[1]*A[5] - A[2]*A[4]);
-      scalar_type a4 = (A[0]*A[8] - A[2]*A[6]), a5 = (A[2]*A[3] - A[0]*A[5]);
-      scalar_type a7 = (A[1]*A[6] - A[0]*A[7]), a8 = (A[0]*A[4] - A[1]*A[3]);
-      *A++ = a0 / det; *A++ = a1 / det; *A++ = a2 / det;
-      *A++ = a3 / det; *A++ = a4 / det; *A++ = a5 / det;
-      *A++ = a6 / det; *A++ = a7 / det; *A++ = a8 / det;
+      scalar_type a3 = (A[2]*A[7] - A[1]*A[8]), a6 = (A[1]*A[5] - A[2]*A[4]);
+      scalar_type a4 = (A[0]*A[8] - A[2]*A[6]), a7 = (A[2]*A[3] - A[0]*A[5]);
+      scalar_type a5 = (A[1]*A[6] - A[0]*A[7]), a8 = (A[0]*A[4] - A[1]*A[3]);
+      *A++ = a0 / det; *A++ = a3 / det; *A++ = a6 / det;
+      *A++ = a1 / det; *A++ = a4 / det; *A++ = a7 / det;
+      *A++ = a2 / det; *A++ = a5 / det; *A++ = a8 / det;
       return det;
     } else {
       size_type NN = N*N;
@@ -235,10 +235,10 @@
       } else if (P == 3) {
        B_.base_resize(P, P); // co-factors
        auto it = KK.begin(); auto itB = B_.begin();
-       itB[0] = it[4]*it[8] - it[5]*it[7];
-       itB[3] = it[5]*it[6] - it[3]*it[8];
-       itB[6] = it[3]*it[7] - it[4]*it[6];
-       J__ = it[0] * itB[0] + it[1] * itB[3] + it[2] * itB[6];
+       scalar_type a0 = itB[0] = it[4]*it[8] - it[5]*it[7];
+       scalar_type a1 = itB[1] = it[5]*it[6] - it[3]*it[8];
+       scalar_type a2 = itB[2] = it[3]*it[7] - it[4]*it[6];
+       J__ = it[0] * a0 + it[1] * a1 + it[2] * a2;
        J_ = gmm::abs(J__);
       } else {
        B_factors.base_resize(P, P); // store factorization for B computation
@@ -284,16 +284,16 @@
         B_(0, 0) = scalar_type(1) / J__;
       } else if (P == 2) {
        auto it = KK.begin(); auto itB = B_.begin();
-       *itB++ = it[3] / J__; *itB++ = it[2] / J__; 
-       *itB++ = it[1] / J__; *itB = (*it) / J__;
+       *itB++ = it[3] / J__; *itB++ = -it[2] / J__; 
+       *itB++ = -it[1] / J__; *itB = (*it) / J__;
       } else if (P == 3) {
        auto it = KK.begin(); auto itB = B_.begin();
-       itB[0] /= J__; itB[3] /= J__; itB[6] /= J__; 
-       itB[1] = (it[2]*it[7] - it[1]*it[8]) / J__;
-       itB[2] = (it[1]*it[5] - it[2]*it[4]) / J__;
+       itB[0] /= J__; itB[1] /= J__; itB[2] /= J__; 
+       itB[3] = (it[2]*it[7] - it[1]*it[8]) / J__;
+       itB[6] = (it[1]*it[5] - it[2]*it[4]) / J__;
        itB[4] = (it[0]*it[8] - it[2]*it[6]) / J__;
-       itB[5] = (it[2]*it[3] - it[0]*it[5]) / J__;
-       itB[7] = (it[1]*it[6] - it[0]*it[7]) / J__;
+       itB[7] = (it[2]*it[3] - it[0]*it[5]) / J__;
+       itB[5] = (it[1]*it[6] - it[0]*it[7]) / J__;
        itB[8] = (it[0]*it[4] - it[1]*it[3]) / J__;
       } else {
        bgeot::lu_inverse(&(*(B_factors.begin())), ipvt, &(*(B_.begin())), P);




reply via email to

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