[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();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5397 - in /trunk/getfem/src: ./ getfem/,
Yves . Renard <=