[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5071 - in /trunk/getfem: interface/src/ src/ src/getfe
From: |
logari81 |
Subject: |
[Getfem-commits] r5071 - in /trunk/getfem: interface/src/ src/ src/getfem/ |
Date: |
Tue, 18 Aug 2015 08:35:32 -0000 |
Author: logari81
Date: Tue Aug 18 10:35:32 2015
New Revision: 5071
URL: http://svn.gna.org/viewcvs/getfem?rev=5071&view=rev
Log:
let the user increase the tolerance for detecting overlapping points at merging
of meshes
Modified:
trunk/getfem/interface/src/gf_mesh_set.cc
trunk/getfem/src/bgeot_node_tab.cc
trunk/getfem/src/getfem/bgeot_mesh.h
trunk/getfem/src/getfem/bgeot_node_tab.h
trunk/getfem/src/getfem/getfem_mesh.h
Modified: trunk/getfem/interface/src/gf_mesh_set.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/gf_mesh_set.cc?rev=5071&r1=5070&r2=5071&view=diff
==============================================================================
--- trunk/getfem/interface/src/gf_mesh_set.cc (original)
+++ trunk/getfem/interface/src/gf_mesh_set.cc Tue Aug 18 10:35:32 2015
@@ -355,16 +355,20 @@
);
- /address@hidden ('merge', @tmesh m2)
+ /address@hidden ('merge', @tmesh m2[, @scalar tol])
Merge with the @tmesh `m2`.
- Overlapping points won't be duplicated. If `m2` is a @tmf object,
- its linked mesh will be address@hidden/
- sub_command
- ("merge", 1, 1, 0, 0,
+ Overlapping points, within a tolerance radius `tol`, will not be
+ duplicated. If `m2` is a @tmf object, its linked mesh will be
address@hidden/
+ sub_command
+ ("merge", 1, 2, 0, 0,
const getfem::mesh *pmesh2 = in.pop().to_const_mesh();
+ scalar_type tol(0);
+ if (in.remaining()) tol = in.pop().to_scalar();
for (dal::bv_visitor cv(pmesh2->convex_index()); !cv.finished(); ++cv)
- pmesh->add_convex_by_points(pmesh2->trans_of_convex(cv),
pmesh2->points_of_convex(cv).begin());
+ pmesh->add_convex_by_points(pmesh2->trans_of_convex(cv),
+ pmesh2->points_of_convex(cv).begin(),
+ tol);
);
Modified: trunk/getfem/src/bgeot_node_tab.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/bgeot_node_tab.cc?rev=5071&r1=5070&r2=5071&view=diff
==============================================================================
--- trunk/getfem/src/bgeot_node_tab.cc (original)
+++ trunk/getfem/src/bgeot_node_tab.cc Tue Aug 18 10:35:32 2015
@@ -92,7 +92,8 @@
eps = max_radius * prec_factor;
}
- size_type node_tab::add_node(const base_node &pt) {
+ size_type node_tab::add_node(const base_node &pt,
+ const scalar_type radius) {
scalar_type npt = gmm::vect_norm2(pt);
max_radius = std::max(max_radius, npt);
eps = max_radius * prec_factor;
@@ -105,7 +106,7 @@
}
else {
GMM_ASSERT1(dim_ == pt.size(), "Nodes should have the same dimension");
- id = search_node(pt);
+ id = search_node(pt, radius);
if (id == size_type(-1)) {
id = dal::dynamic_tas<base_node>::add(pt);
for (size_type i = 0; i < sorters.size(); ++i) {
Modified: trunk/getfem/src/getfem/bgeot_mesh.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/bgeot_mesh.h?rev=5071&r1=5070&r2=5071&view=diff
==============================================================================
--- trunk/getfem/src/getfem/bgeot_mesh.h (original)
+++ trunk/getfem/src/getfem/bgeot_mesh.h Tue Aug 18 10:35:32 2015
@@ -87,7 +87,10 @@
return ref_mesh_pt_ct(pts.begin(), rct.begin(), rct.end());
}
- size_type add_point(const base_node &pt) { return pts.add_node(pt); }
+ size_type add_point(const base_node &pt,
+ const scalar_type tol=scalar_type(0)) {
+ return pts.add_node(pt, tol);
+ }
template<class ITER>
size_type add_convex(bgeot::pgeometric_trans pgt, ITER ipts) {
Modified: trunk/getfem/src/getfem/bgeot_node_tab.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/bgeot_node_tab.h?rev=5071&r1=5070&r2=5071&view=diff
==============================================================================
--- trunk/getfem/src/getfem/bgeot_node_tab.h (original)
+++ trunk/getfem/src/getfem/bgeot_node_tab.h Tue Aug 18 10:35:32 2015
@@ -83,7 +83,7 @@
/** Add a point to the array or identify it with a very close existing
point.
*/
- size_type add_node(const base_node &pt);
+ size_type add_node(const base_node &pt, const scalar_type radius=0);
size_type add(const base_node &pt) { return add_node(pt); }
void sup_node(size_type i);
void sup(size_type i) { sup_node(i); }
Modified: trunk/getfem/src/getfem/getfem_mesh.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_mesh.h?rev=5071&r1=5070&r2=5071&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_mesh.h (original)
+++ trunk/getfem/src/getfem/getfem_mesh.h Tue Aug 18 10:35:32 2015
@@ -216,7 +216,10 @@
already existing point.
@param pt the point coordinates.
*/
- size_type add_point(const base_node &pt) { return pts.add_node(pt); }
+ size_type add_point(const base_node &pt,
+ const scalar_type tol=scalar_type(0)) {
+ return pts.add_node(pt, tol);
+ }
// scalar_type characteristic_size =
scalar_type(1));
/// Give the number of geometrical nodes in the mesh.
@@ -278,7 +281,8 @@
@return the number of the new convex.
*/
template<class ITER>
- size_type add_convex_by_points(bgeot::pgeometric_trans pgt, ITER ipts);
+ size_type add_convex_by_points(bgeot::pgeometric_trans pgt, ITER ipts,
+ const scalar_type tol=scalar_type(0));
/** Add a simplex to the mesh, given its dimension and point numbers.
*/
@@ -579,11 +583,11 @@
template<class ITER>
size_type mesh::add_convex_by_points(bgeot::pgeometric_trans pgt,
- ITER ipts)
+ ITER ipts, const scalar_type tol)
{
short_type nb = short_type(pgt->nb_points());
std::vector<size_type> ind(nb);
- for (short_type i = 0; i < nb; ++ipts, ++i) ind[i] = add_point(*ipts);
+ for (short_type i = 0; i < nb; ++ipts, ++i) ind[i] = add_point(*ipts, tol);
return add_convex(pgt, ind.begin());
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5071 - in /trunk/getfem: interface/src/ src/ src/getfem/,
logari81 <=