[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4885 - in /trunk/getfem/src: dal_static_stored_objects
From: |
Yves . Renard |
Subject: |
[Getfem-commits] r4885 - in /trunk/getfem/src: dal_static_stored_objects.cc getfem/bgeot_tensor.h |
Date: |
Mon, 16 Mar 2015 14:36:13 -0000 |
Author: renard
Date: Mon Mar 16 15:36:12 2015
New Revision: 4885
URL: http://svn.gna.org/viewcvs/getfem?rev=4885&view=rev
Log:
correction for _GLIBCXX_DEBUG mode
Modified:
trunk/getfem/src/dal_static_stored_objects.cc
trunk/getfem/src/getfem/bgeot_tensor.h
Modified: trunk/getfem/src/dal_static_stored_objects.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/dal_static_stored_objects.cc?rev=4885&r1=4884&r2=4885&view=diff
==============================================================================
--- trunk/getfem/src/dal_static_stored_objects.cc (original)
+++ trunk/getfem/src/dal_static_stored_objects.cc Mon Mar 16 15:36:12 2015
@@ -193,6 +193,7 @@
delete ito->first.p;
erase(ito);
it = to_delete.erase(it);
+ if (it == to_delete.end()) break;
--it;
}
}
Modified: trunk/getfem/src/getfem/bgeot_tensor.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/bgeot_tensor.h?rev=4885&r1=4884&r2=4885&view=diff
==============================================================================
--- trunk/getfem/src/getfem/bgeot_tensor.h (original)
+++ trunk/getfem/src/getfem/bgeot_tensor.h Mon Mar 16 15:36:12 2015
@@ -280,34 +280,42 @@
*mi = t.sizes();
size_type dimt = (*mi)[ni], dim = m.nrows();
+ GMM_ASSERT2(dimt, "Inconsistent dimension.");
GMM_ASSERT2(dimt == m.ncols(), "Dimensions mismatch.");
GMM_ASSERT2(&t != this, "Does not work when t and *this are the same.");
+
(*mi)[ni] = dim;
if (tmp->size() < dimt) tmp->resize(dimt);
adjust_sizes(*mi);
+
const_iterator pft = t.begin();
iterator pf = this->begin();
size_type dd = coeff[ni]*( sizes()[ni]-1)-1, co = coeff[ni];
size_type ddt = t.coeff[ni]*(t.sizes()[ni]-1)-1, cot = t.coeff[ni];
std::fill(mi->begin(), mi->end(), 0);
- for (;!mi->finished(sizes()); mi->incrementation(sizes()), ++pf, ++pft)
+ for (;!mi->finished(sizes()); mi->incrementation(sizes()), ++pf, ++pft) {
if ((*mi)[ni] != 0) {
for (size_type k = 0; k <= size_type(ni); ++k)
(*mi)[k] = size_type(sizes()[k] - 1);
pf += dd; pft += ddt;
- }
- else {
+ } else {
const_iterator pl = pft; iterator pt = tmp->begin();
- for(size_type k = 0; k < dimt; ++k, pl += cot, ++pt) *pt = *pl;
+ *pt = *pl;
+ for(size_type k = 1; k < dimt; ++k, ++pt) { pl += cot; *pt = *pl;}
iterator pff = pf;
- for (size_type k = 0; k < dim; ++k, pff += co) {
+ for (size_type k = 0; k < dim; ++k) {
+ if (k) pff += co;
*pff = T(0); pt = tmp->begin(); pl = m.begin() + k;
- for (size_type l = 0; l < dimt; ++l, ++pt, pl += dim)
+ *pff += (*pl) * (*pt);
+ for (size_type l = 1; l < dimt; ++l, ++pt) {
+ pl += dim;
*pff += (*pl) * (*pt);
+ }
}
}
+ }
}
template<class T> void tensor<T>::mat_mult(const gmm::dense_matrix<T> &m,
@@ -342,6 +350,7 @@
}
*mi = t.sizes();
size_type dimt = (*mi)[ni], dim = m.ncols();
+ GMM_ASSERT2(dimt, "Inconsistent dimension.");
GMM_ASSERT2(dimt == m.nrows(), "Dimensions mismatch.");
GMM_ASSERT2(&t != this, "Does not work when t and *this are the same.");
@@ -353,7 +362,7 @@
size_type dd = coeff[ni]*( sizes()[ni]-1)-1, co = coeff[ni];
size_type ddt = t.coeff[ni]*(t.sizes()[ni]-1)-1, cot = t.coeff[ni];
std::fill(mi->begin(), mi->end(), 0);
- for (;!mi->finished(sizes()); mi->incrementation(sizes()), ++pf, ++pft)
+ for (;!mi->finished(sizes()); mi->incrementation(sizes()), ++pf, ++pft) {
if ((*mi)[ni] != 0) {
for (size_type k = 0; k <= size_type(ni); ++k)
(*mi)[k] = size_type(sizes()[k] - 1);
@@ -361,15 +370,18 @@
}
else {
const_iterator pl = pft; iterator pt = tmp->begin();
- for(size_type k = 0; k < dimt; ++k, pl += cot, ++pt) *pt = *pl;
+ *pt = *pl;
+ for(size_type k = 1; k < dimt; ++k, ++pt) { pl += cot; *pt = *pl; }
iterator pff = pf; pl = m.begin();
- for (size_type k = 0; k < dim; ++k, pff += co) {
+ for (size_type k = 0; k < dim; ++k) {
+ if (k) pff += co;
*pff = T(0); pt = tmp->begin();
for (size_type l = 0; l < dimt; ++l, ++pt, ++pl)
*pff += (*pl) * (*pt);
}
}
+ }
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4885 - in /trunk/getfem/src: dal_static_stored_objects.cc getfem/bgeot_tensor.h,
Yves . Renard <=