getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r5467 - in /trunk/getfem: src/getfem/getfem_assembling.


From: Yves . Renard
Subject: [Getfem-commits] r5467 - in /trunk/getfem: src/getfem/getfem_assembling.h src/getfem_generic_assembly.cc tests/crack.cc
Date: Sun, 06 Nov 2016 18:02:27 -0000

Author: renard
Date: Sun Nov  6 19:02:25 2016
New Revision: 5467

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

Modified:
    trunk/getfem/src/getfem/getfem_assembling.h
    trunk/getfem/src/getfem_generic_assembly.cc
    trunk/getfem/tests/crack.cc

Modified: trunk/getfem/src/getfem/getfem_assembling.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_assembling.h?rev=5467&r1=5466&r2=5467&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_assembling.h (original)
+++ trunk/getfem/src/getfem/getfem_assembling.h Sun Nov  6 19:02:25 2016
@@ -557,41 +557,6 @@
  
 
   // -------- Before this : cleaned ----------
-
-  template<typename MAT>
-  void asm_mass_matrix(const MAT &M, const mesh_im &mim,
-                      const mesh_fem &mf_u1,
-                      const mesh_region &rg = mesh_region::all_convexes()) {
-    generic_assembly assem;
-    if (mf_u1.get_qdim() == 1)
-      assem.set("M(#1,#1)+=sym(comp(Base(#1).Base(#1)))");
-    else
-      assem.set("M(#1,#1)+=sym(comp(vBase(#1).vBase(#1))(:,i,:,i));");
-    assem.push_mi(mim);
-    assem.push_mf(mf_u1);
-    assem.push_mat(const_cast<MAT &>(M));
-    assem.assembly(rg);
-  }
-
-  template<typename MAT>
-  void asm_mass_matrix(const MAT &M, const mesh_im &mim, const mesh_fem &mf_u1,
-                      const mesh_fem &mf_u2,
-                      const mesh_region &rg = mesh_region::all_convexes()) {
-    generic_assembly assem;
-    if (mf_u1.get_qdim() == 1 && mf_u2.get_qdim() == 1)
-      assem.set("M(#1,#2)+=comp(Base(#1).Base(#2))");
-    else if (mf_u1.get_qdim() == 1)
-      assem.set("M(#1,#2)+=comp(Base(#1).vBase(#2))(:,:,1);"); // could be i 
in place of 1
-    else if (mf_u2.get_qdim() == 1)
-      assem.set("M(#1,#2)+=comp(vBase(#1).Base(#2))(:,1,:);");
-    else
-      assem.set("M(#1,#2)+=comp(vBase(#1).vBase(#2))(:,i,:,i);");
-    assem.push_mi(mim);
-    assem.push_mf(mf_u1);
-    assem.push_mf(mf_u2);
-    assem.push_mat(const_cast<MAT &>(M));
-    assem.assembly(rg);
-  }
 
   
   /*
@@ -661,7 +626,7 @@
       @ingroup asm
   */
   template<typename MAT>
-  inline void new_asm_mass_matrix
+  inline void asm_mass_matrix
   (const MAT &M, const mesh_im &mim, const mesh_fem &mf1,
    const mesh_region &rg = mesh_region::all_convexes()) {
 
@@ -674,7 +639,7 @@
     gmm::add(workspace.assembled_matrix(), const_cast<MAT &>(M));
   }
 
-  inline void new_asm_mass_matrix
+  inline void asm_mass_matrix
   (model_real_sparse_matrix &M, const mesh_im &mim,
    const mesh_fem &mf1,
    const mesh_region &rg = mesh_region::all_convexes()) {
@@ -693,7 +658,7 @@
    */
 
   template<typename MAT>
-  inline void new_asm_mass_matrix
+  inline void asm_mass_matrix
   (const MAT &M, const mesh_im &mim, const mesh_fem &mf1, const mesh_fem &mf2,
    const mesh_region &rg = mesh_region::all_convexes()) {
     ga_workspace workspace;
@@ -707,7 +672,7 @@
             const_cast<MAT &>(M));
   }
   
-  inline void new_asm_mass_matrix
+  inline void asm_mass_matrix
   (model_real_sparse_matrix &M, const mesh_im &mim,
    const mesh_fem &mf1, const mesh_fem &mf2,
    const mesh_region &rg = mesh_region::all_convexes()) {

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5467&r1=5466&r2=5467&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Sun Nov  6 19:02:25 2016
@@ -4771,21 +4771,21 @@
     virtual int exec() {
       GA_DEBUG_INFO("Instruction: reduction operation of size " << nn <<
                    " optimized for vectorized tensor");
-      size_type s1 = tc1.size()/nn, s2 = tc2.size()/nn, s1_1 = s1+1;
-      GA_DEBUG_ASSERT(t.size() == s1*s2, "Internal error");
+      size_type s1 = tc1.size()/nn, s2 = tc2.size()/nn, s2_1 = s2+1;
+      GA_DEBUG_ASSERT(t.size() == s2*s1, "Internal error");
       size_type ss1 = s1/nn, ss2 = s2/nn;
 
       // std::fill(t.begin(), t.end(), scalar_type(0)); // Factorized
       auto it2 = tc2.begin();
       for (size_type j = 0; j < ss2; ++j, it2 += nn) {
-       auto it1 = tc1.begin(), it = t.begin() + j*tc1.size();
-       for (size_type i = 0; i < ss1; ++i, it1 += nn, it += nn) {
+       auto it1 = tc1.begin(), it = t.begin() + j*nn;
+       for (size_type i = 0; i < ss1; ++i, it1 += nn, it += s2*nn) {
                  scalar_type a = (*it1) * (*it2);
          auto itt = it;
-         *itt = a; itt += s1_1; *itt = a;
-                 for (size_type k = 2; k < nn; ++k) { itt += s1_1; *itt = a; }
+         *itt = a; itt += s2_1; *itt = a;
+                 for (size_type k = 2; k < nn; ++k) { itt += s2_1; *itt = a; }
                }
-      }
+      }      
       return 0;
     }
     ga_instruction_reduction_opt1(base_tensor &t_, base_tensor &tc1_,
@@ -4919,7 +4919,7 @@
       to_clear = true;
       t.set_sparsity(10, tc1.qdim());
       return std::make_shared<ga_instruction_reduction_opt1>
-       (t.tensor(), tc1.tensor(), tc2.tensor(), n);
+       (t.tensor(), tc1.tensor(), tc2.tensor(), n);
     }
     
     switch(n) {

Modified: trunk/getfem/tests/crack.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/tests/crack.cc?rev=5467&r1=5466&r2=5467&view=diff
==============================================================================
--- trunk/getfem/tests/crack.cc (original)
+++ trunk/getfem/tests/crack.cc Sun Nov  6 19:02:25 2016
@@ -549,7 +549,6 @@
 bool crack_problem::solve(plain_vector &U) {
   size_type N = mesh.dim();
   ls.reinit();  
-  cout << "ls.get_mesh_fem().nb_dof() = " << ls.get_mesh_fem().nb_dof() << 
"\n";
   for (size_type d = 0; d < ls.get_mesh_fem().nb_basic_dof(); ++d) {
     ls.values(0)[d] = ls_function(ls.get_mesh_fem().point_of_basic_dof(d), 
0)[0];
     ls.values(1)[d] = ls_function(ls.get_mesh_fem().point_of_basic_dof(d), 
0)[1];
@@ -815,20 +814,8 @@
 
     gmm::clear(H0);
     getfem::asm_mass_matrix(H0, mim, mf_mortar, mf_u(), 
-                                MORTAR_BOUNDARY_IN);
-    // cout << "H0 = " << H0 << "\n H0 " << endl; getchar();
-
-    // sparse_matrix H8(mf_mortar.nb_dof(), mf_u().nb_dof());
-    // gmm::clear(H8);
-    // getfem::asm_mass_matrix(H8, mim, mf_mortar, mf_u(), MORTAR_BOUNDARY_IN);
-    // // gmm::add(gmm::scaled(H0, -1.0), H8);
-    // // cout << "H0 = " << H0 << endl;
-    // cout << "H8 = " << H8 << endl;
-    
-
-
-
-    gmm::add(gmm::scaled(gmm::sub_matrix(H0, sub_i, sub_j), -1), H);
+                           MORTAR_BOUNDARY_IN);
+    gmm::add(gmm::scaled(gmm::sub_matrix(H0, sub_i, sub_j), -1.0), H);
 
 
     /* because of the discontinuous partition of mf_u(), some levelset




reply via email to

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