getfem-commits
[Top][All Lists]
Advanced

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

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


From: Yves . Renard
Subject: [Getfem-commits] r5397 - in /trunk/getfem/src: ./ getfem/
Date: Sun, 09 Oct 2016 16:10:20 -0000

Author: renard
Date: Sun Oct  9 18:10:20 2016
New Revision: 5397

URL: http://svn.gna.org/viewcvs/getfem?rev=5397&view=rev
Log:
small additional optimization

Modified:
    trunk/getfem/src/bgeot_geometric_trans.cc
    trunk/getfem/src/getfem/bgeot_geometric_trans.h
    trunk/getfem/src/getfem/getfem_fem.h
    trunk/getfem/src/getfem_fem.cc
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/src/bgeot_geometric_trans.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/bgeot_geometric_trans.cc?rev=5397&r1=5396&r2=5397&view=diff
==============================================================================
--- trunk/getfem/src/bgeot_geometric_trans.cc   (original)
+++ trunk/getfem/src/bgeot_geometric_trans.cc   Sun Oct  9 18:10:20 2016
@@ -189,28 +189,6 @@
       { have_K_ = have_B_ = have_B3_ = have_B32_ = have_J_ = false; }
     xreal_.resize(0); ii_ = size_type(-1); pspt_ = 0;
   }
-
-  geotrans_interpolation_context::geotrans_interpolation_context() :
-    G_(0), pgt_(0), pgp_(0), pspt_(0), ii_(size_type(-1)),
-    have_J_(false), have_B_(false), have_B3_(false), have_B32_(false),
-    have_K_(false) {}
-  geotrans_interpolation_context::geotrans_interpolation_context
-  (bgeot::pgeotrans_precomp pgp__, size_type ii__, const base_matrix& G__) :
-    G_(&G__), pgt_(pgp__->get_trans()), pgp_(pgp__),
-    pspt_(pgp__->get_ppoint_tab()), ii_(ii__), have_J_(false), have_B_(false),
-    have_B3_(false), have_B32_(false), have_K_(false) {}
-  geotrans_interpolation_context::geotrans_interpolation_context
-  (bgeot::pgeometric_trans pgt__, bgeot::pstored_point_tab pspt__,
-   size_type ii__,  const base_matrix& G__) :
-    G_(&G__), pgt_(pgt__), pgp_(0),
-    pspt_(pspt__), ii_(ii__), have_J_(false), have_B_(false), have_B3_(false),
-    have_B32_(false), have_K_(false) {}
-  geotrans_interpolation_context::geotrans_interpolation_context
-  (bgeot::pgeometric_trans pgt__, const base_node& xref__,
-   const base_matrix& G__) :
-    xref_(xref__), G_(&G__), pgt_(pgt__), pgp_(0), pspt_(0),
-    ii_(size_type(-1)),have_J_(false), have_B_(false), have_B3_(false),
-    have_B32_(false), have_K_(false)  {}
 
 
   base_node geometric_trans::transform(const base_node &pt,

Modified: trunk/getfem/src/getfem/bgeot_geometric_trans.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/bgeot_geometric_trans.h?rev=5397&r1=5396&r2=5397&view=diff
==============================================================================
--- trunk/getfem/src/getfem/bgeot_geometric_trans.h     (original)
+++ trunk/getfem/src/getfem/bgeot_geometric_trans.h     Sun Oct  9 18:10:20 2016
@@ -441,17 +441,54 @@
     void set_ii(size_type ii__);
     /** change the current point (coordinates given in the reference convex) */
     void set_xref(const base_node& P);
-    geotrans_interpolation_context();
+    void change(bgeot::pgeotrans_precomp pgp__,
+               size_type ii__,
+               const base_matrix& G__) {
+      G_ = &G__; pgt_ = pgp__->get_trans(); pgp_ = pgp__;
+      pspt_ = pgp__->get_ppoint_tab(); ii_ = ii__;
+      have_J_ = have_B_ = have_B3_ = have_B32_ = have_K_ = false;
+      xref_.resize(0); xreal_.resize(0);
+    }
+    void change(bgeot::pgeometric_trans pgt__,
+               bgeot::pstored_point_tab pspt__,
+               size_type ii__,
+               const base_matrix& G__) {
+      G_ = &G__; pgt_ = pgt__; pgp_ = 0; pspt_ = pspt__; ii_ = ii__;
+      have_J_ = have_B_ = have_B3_ = have_B32_ = have_K_ = false;
+      xref_.resize(0); xreal_.resize(0);
+    }
+    void change(bgeot::pgeometric_trans pgt__,
+               const base_node& xref__,
+               const base_matrix& G__) {
+      xref_ = xref__; G_ = &G__; pgt_ = pgt__; pgp_ = 0; pspt_ = 0;
+      ii_ = size_type(-1);
+      have_J_ = have_B_ = have_B3_ = have_B32_ = have_K_ = false;
+      xreal_.resize(0);
+    }
+    
+    geotrans_interpolation_context()
+      : G_(0), pgt_(0), pgp_(0), pspt_(0), ii_(size_type(-1)),
+      have_J_(false), have_B_(false), have_B3_(false), have_B32_(false),
+      have_K_(false) {}
     geotrans_interpolation_context(bgeot::pgeotrans_precomp pgp__,
                                    size_type ii__,
-                                   const base_matrix& G__);
+                                   const base_matrix& G__)
+      : G_(&G__), pgt_(pgp__->get_trans()), pgp_(pgp__),
+      pspt_(pgp__->get_ppoint_tab()), ii_(ii__), have_J_(false), 
have_B_(false),
+      have_B3_(false), have_B32_(false), have_K_(false) {}
     geotrans_interpolation_context(bgeot::pgeometric_trans pgt__,
                                    bgeot::pstored_point_tab pspt__,
                                    size_type ii__,
-                                   const base_matrix& G__);
+                                   const base_matrix& G__)
+      : G_(&G__), pgt_(pgt__), pgp_(0),
+      pspt_(pspt__), ii_(ii__), have_J_(false), have_B_(false), 
have_B3_(false),
+      have_B32_(false), have_K_(false) {}
     geotrans_interpolation_context(bgeot::pgeometric_trans pgt__,
                                    const base_node& xref__,
-                                   const base_matrix& G__);
+                                   const base_matrix& G__)
+      : xref_(xref__), G_(&G__), pgt_(pgt__), pgp_(0), pspt_(0),
+      ii_(size_type(-1)),have_J_(false), have_B_(false), have_B3_(false),
+      have_B32_(false), have_K_(false)  {}
   };
 
   /* Function allowing the add of an geometric transformation method outwards

Modified: trunk/getfem/src/getfem/getfem_fem.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_fem.h?rev=5397&r1=5396&r2=5397&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_fem.h        (original)
+++ trunk/getfem/src/getfem/getfem_fem.h        Sun Oct  9 18:10:20 2016
@@ -719,23 +719,59 @@
     void set_pf(pfem newpf);
     int xfem_side() const { return xfem_side_; }
     void set_xfem_side(int side) { xfem_side_ = side; }
-    fem_interpolation_context();
+    void change(bgeot::pgeotrans_precomp pgp__,
+               pfem_precomp pfp__, size_type ii__,
+               const base_matrix& G__, size_type convex_num__,
+               short_type face_num__ = short_type(-1)) {
+      bgeot::geotrans_interpolation_context::change(pgp__,ii__,G__);
+      convex_num_ = convex_num__; face_num_ = face_num__;  xfem_side_ = 0;
+      set_pfp(pfp__);
+    }
+    void change(bgeot::pgeometric_trans pgt__,
+               pfem_precomp pfp__, size_type ii__,
+               const base_matrix& G__, size_type convex_num__,
+               short_type face_num__ = short_type(-1)) {
+      bgeot::geotrans_interpolation_context::change
+       (pgt__, pfp__->get_ppoint_tab(), ii__, G__);
+      convex_num_ = convex_num__; face_num_ = face_num__; xfem_side_ = 0;
+      set_pfp(pfp__);
+    }
+    void change(bgeot::pgeometric_trans pgt__,
+               pfem pf__, const base_node& xref__, const base_matrix& G__,
+               size_type convex_num__, short_type face_num__=short_type(-1)) {
+      bgeot::geotrans_interpolation_context::change(pgt__,xref__,G__);
+      pf_ = pf__; pfp_ = 0; convex_num_ = convex_num__; face_num_ = face_num__;
+      xfem_side_ = 0;
+    }
+    fem_interpolation_context()
+      : bgeot::geotrans_interpolation_context(),
+       convex_num_(size_type(-1)), face_num_(short_type(-1)), xfem_side_(0) {}
     fem_interpolation_context(bgeot::pgeotrans_precomp pgp__,
                               pfem_precomp pfp__, size_type ii__,
                               const base_matrix& G__,
                               size_type convex_num__,
-                              short_type face_num__ = short_type(-1));
+                              short_type face_num__ = short_type(-1))
+      : bgeot::geotrans_interpolation_context(pgp__,ii__,G__),
+       convex_num_(convex_num__), face_num_(face_num__), xfem_side_(0)
+    { set_pfp(pfp__); }
     fem_interpolation_context(bgeot::pgeometric_trans pgt__,
                               pfem_precomp pfp__, size_type ii__,
                               const base_matrix& G__,
                               size_type convex_num__,
-                              short_type face_num__ = short_type(-1));
+                              short_type face_num__ = short_type(-1))
+      : bgeot::geotrans_interpolation_context(pgt__,pfp__->get_ppoint_tab(),
+                                             ii__, G__),
+       convex_num_(convex_num__), face_num_(face_num__), xfem_side_(0)
+    { set_pfp(pfp__); }
     fem_interpolation_context(bgeot::pgeometric_trans pgt__,
                               pfem pf__,
                               const base_node& xref__,
                               const base_matrix& G__,
                               size_type convex_num__,
-                              short_type face_num__ = short_type(-1));
+                              short_type face_num__ = short_type(-1))
+      : bgeot::geotrans_interpolation_context(pgt__,xref__,G__),
+       pf_(pf__), pfp_(0), convex_num_(convex_num__), face_num_(face_num__),
+       xfem_side_(0) {}
   };
 
   // IN : coeff(Qmult,nb_dof)

Modified: trunk/getfem/src/getfem_fem.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_fem.cc?rev=5397&r1=5396&r2=5397&view=diff
==============================================================================
--- trunk/getfem/src/getfem_fem.cc      (original)
+++ trunk/getfem/src/getfem_fem.cc      Sun Oct  9 18:10:20 2016
@@ -286,30 +286,6 @@
       pf_ = newpf;
     }
   }
-
-  fem_interpolation_context::fem_interpolation_context() :
-    bgeot::geotrans_interpolation_context(),
-    convex_num_(size_type(-1)), face_num_(short_type(-1)), xfem_side_(0) {}
-  fem_interpolation_context::fem_interpolation_context
-  (bgeot::pgeotrans_precomp pgp__, pfem_precomp pfp__, size_type ii__,
-   const base_matrix& G__, size_type convex_num__, short_type face_num__) :
-    bgeot::geotrans_interpolation_context(pgp__,ii__,G__),
-    convex_num_(convex_num__), face_num_(face_num__), xfem_side_(0)
-    { set_pfp(pfp__); }
-  fem_interpolation_context::fem_interpolation_context
-  (bgeot::pgeometric_trans pgt__, pfem_precomp pfp__, size_type ii__,
-   const base_matrix& G__, size_type convex_num__, short_type face_num__) :
-    bgeot::geotrans_interpolation_context(pgt__,pfp__->get_ppoint_tab(),
-                                          ii__, G__),
-    convex_num_(convex_num__), face_num_(face_num__), xfem_side_(0)
-  { set_pfp(pfp__); }
-  fem_interpolation_context::fem_interpolation_context(
-   bgeot::pgeometric_trans pgt__, pfem pf__,
-   const base_node& xref__,const base_matrix& G__, size_type convex_num__,
-   short_type face_num__) :
-    bgeot::geotrans_interpolation_context(pgt__,xref__,G__),
-    pf_(pf__), pfp_(0), convex_num_(convex_num__), face_num_(face_num__),
-    xfem_side_(0) {}
 
   void virtual_fem::real_base_value(const fem_interpolation_context &c,
                                     base_tensor &t, bool withM) const

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5397&r1=5396&r2=5397&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Sun Oct  9 18:10:20 2016
@@ -5207,8 +5207,8 @@
       if (inin.pt_type) {
         if (cv != size_type(-1)) {
           bgeot::vectors_to_base_matrix(inin.G, 
(inin.m)->points_of_convex(cv));
-          inin.ctx = fem_interpolation_context((inin.m)->trans_of_convex(cv),
-                                               0, P_ref, inin.G, cv, face_num);
+          inin.ctx.change((inin.m)->trans_of_convex(cv),
+                         0, P_ref, inin.G, cv, face_num);
           inin.has_ctx = true;
           if (face_num != short_type(-1)) {
             inin.Normal = bgeot::compute_normal(inin.ctx, face_num);
@@ -5318,8 +5318,7 @@
             bgeot::vectors_to_base_matrix(inin.G,
                                           m.points_of_convex(adj_face.cv));
             bgeot::pgeotrans_precomp pgp = gp_pool(gpc.pgt2, pspt);
-            inin.ctx = fem_interpolation_context(pgp, 0, 0, inin.G,
-                                                 adj_face.cv, adj_face.f);
+            inin.ctx.change(pgp, 0, 0, inin.G, adj_face.cv, adj_face.f);
           }
         }
       }
@@ -5344,8 +5343,8 @@
           if (cv != size_type(-1)) {
             bgeot::vectors_to_base_matrix(inin.G,
                                           (inin.m)->points_of_convex(cv));
-            inin.ctx = fem_interpolation_context((inin.m)->trans_of_convex(cv),
-                                                 0, P_ref, inin.G, cv, 
face_num);
+            inin.ctx.change((inin.m)->trans_of_convex(cv),
+                           0, P_ref, inin.G, cv, face_num);
             inin.has_ctx = true;
             if (face_num != short_type(-1)) {
               inin.Normal = bgeot::compute_normal(inin.ctx, face_num);
@@ -11653,16 +11652,12 @@
           un.resize(pgt->dim());
 
           if (gis.ctx.have_pgp() && gis.ctx.pgt() == pgt) {
-            gis.ctx = fem_interpolation_context(gis.ctx.pgp(), 0, 0, G,
-                                                v.cv(), v.f());
+            gis.ctx.change(gis.ctx.pgp(), 0, 0, G, v.cv(), v.f());
           } else {
             if (!(gic.use_pgp(v.cv()))) {
-              gis.ctx = fem_interpolation_context(pgt, 0, (*pspt)[0], G,
-                                                  v.cv(), v.f());
+              gis.ctx.change(pgt, 0, (*pspt)[0], G, v.cv(), v.f());
             } else {
-              bgeot::pgeotrans_precomp pgp = gis.gp_pool(pgt, pspt);
-              gis.ctx = fem_interpolation_context(pgp, 0, 0, G,
-                                                  v.cv(), v.f());
+              gis.ctx.change(gis.gp_pool(pgt, pspt), 0, 0, G, v.cv(), v.f());
             }
           }
 
@@ -11761,27 +11756,19 @@
             un.resize(pgt->dim());
             pim = mim.int_method_of_element(v.cv());
             if (pim->type() == IM_NONE) continue;
-            // cout << "pim->type() = " << int(pim->type()) <<  " : "
-           //      << int(IM_APPROX) << endl;
             GMM_ASSERT1(pim->type() == IM_APPROX, "Sorry, exact methods cannot 
"
                         "be used in high level generic assembly");
-            // cout << "passed ..." << endl;
 
             pspt = pim->approx_method()->pintegration_points();
-
             if (pspt->size()) {
               if (gis.ctx.have_pgp() && gis.pai == pim->approx_method() &&
                   gis.ctx.pgt() == pgt) {
-                gis.ctx = fem_interpolation_context(gis.ctx.pgp(), 0, 0, G,
-                                                    v.cv(), v.f());
+                gis.ctx.change(gis.ctx.pgp(), 0, 0, G, v.cv(), v.f());
               } else {
                 if (pim->approx_method()->is_built_on_the_fly()) {
-                  gis.ctx = fem_interpolation_context(pgt, 0, (*pspt)[0], G,
-                                                      v.cv(), v.f());
+                  gis.ctx.change(pgt, 0, (*pspt)[0], G, v.cv(), v.f());
                 } else {
-                  bgeot::pgeotrans_precomp pgp = gis.gp_pool(pgt, pspt);
-                  gis.ctx = fem_interpolation_context(pgp, 0, 0, G,
-                                                      v.cv(), v.f());
+                  gis.ctx.change(gis.gp_pool(pgt, pspt), 0,0, G, v.cv(), 
v.f());
                 }
               }
               gis.pai = pim->approx_method();




reply via email to

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