[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] (no subject)
From: |
Konstantinos Poulios |
Subject: |
[Getfem-commits] (no subject) |
Date: |
Tue, 1 Aug 2017 17:01:58 -0400 (EDT) |
branch: devel-logari81
commit 2f8f796f5744704ff63b7b3cb08f744f350b40a1
Author: Konstantinos Poulios <address@hidden>
Date: Tue Aug 1 22:58:10 2017 +0200
calculate and cache the center of the real element in
geotrans_interpolation_context
---
src/getfem/bgeot_geometric_trans.h | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/src/getfem/bgeot_geometric_trans.h
b/src/getfem/bgeot_geometric_trans.h
index 849f541..01d1deb 100644
--- a/src/getfem/bgeot_geometric_trans.h
+++ b/src/getfem/bgeot_geometric_trans.h
@@ -399,6 +399,7 @@ namespace bgeot {
mutable base_node xref_; /** reference point */
mutable base_node xreal_; /** transformed point */
const base_matrix *G_; /** pointer to the matrix of real nodes of the
convex */
+ mutable base_node cv_center_; /** real center of convex (average of
columns of G) */
mutable base_matrix K_, B_, B3_, B32_; /** see documentation (getfem
kernel doc) for more details */
pgeometric_trans pgt_;
pgeotrans_precomp pgp_;
@@ -408,7 +409,7 @@ namespace bgeot {
mutable base_matrix PC, B_factors;
mutable base_vector aux1, aux2;
mutable std::vector<int> ipvt;
- mutable bool have_J_, have_B_, have_B3_, have_B32_, have_K_;
+ mutable bool have_J_, have_B_, have_B3_, have_B32_, have_K_,
have_cv_center_;
void compute_J() const;
public:
bool have_xref() const { return !xref_.empty(); }
@@ -424,6 +425,8 @@ namespace bgeot {
const base_node& xref() const;
/// coordinates of the current point, in the real convex.
const base_node& xreal() const;
+ /// coordinates of the center of the real convex.
+ const base_node& cv_center() const;
/// See getfem kernel doc for these matrices
const base_matrix& K() const;
const base_matrix& B() const;
@@ -459,7 +462,8 @@ namespace bgeot {
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);
+ have_cv_center_ = false;
+ xref_.resize(0); xreal_.resize(0); cv_center_.resize(0);
}
void change(bgeot::pgeometric_trans pgt__,
bgeot::pstored_point_tab pspt__,
@@ -467,7 +471,8 @@ namespace bgeot {
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);
+ have_cv_center_ = false;
+ xref_.resize(0); xreal_.resize(0); cv_center_.resize(0);
}
void change(bgeot::pgeometric_trans pgt__,
const base_node& xref__,
@@ -475,32 +480,33 @@ namespace bgeot {
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);
+ have_cv_center_ = false;
+ xreal_.resize(0); cv_center_.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) {}
+ have_K_(false), have_cv_center_(false) {}
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) {}
+ have_B3_(false), have_B32_(false), have_K_(false),
have_cv_center_(false) {}
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) {}
+ have_B32_(false), have_K_(false), have_cv_center_(false) {}
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) {}
+ have_B32_(false), have_K_(false), have_cv_center_(false) {}
};
/* Function allowing the add of an geometric transformation method outwards