Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] acquire mesh information

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] acquire mesh information


Chronological Thread 
  • From: "Sebastien Loriot (GeometryFactory)" <>
  • To:
  • Subject: Re: [cgal-discuss] acquire mesh information
  • Date: Fri, 28 Jan 2011 08:20:12 +0100

When you are calling refine_mesh, cdt is modified and contains the mesh.
You have to refer to the documentation of 2D triangulations for
iterating over faces for examples.
See:
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_2/Chapter_main.html
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Mesh_2_ref/Concept_DelaunayMeshFaceBase_2.html#Cross_link_anchor_1425

For example:

Triangulation t;

Triangulation::Finite_faces_iterator fc = t.finite_faces_begin();
for( ; fc != t.finite_faces_end(); ++fc)
if (fc->is_in_domain()){
std::cout << fc->vertex(0)->point()
<< fc->vertex(1)->point()
<< fc->vertex(2)->point() << std::endl;
}



ppmm wrote:
Hello,

I am new to CGAL. I would like to use CGAL to create the 2D meshes for FEM
analysis.

My question is how to get the mesh information from the generated mesh, such
as point coordinate and each zone is defined by which three points.

For example, how to get those information from the mesh_class.cpp example
listed below.

Thanks a lot for your help.




#include <CGAL/Delaunay_mesh_size_criteria_2.h>

#include <iostream>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Delaunay_mesh_face_base_2<K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb> Tds;
typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
typedef CGAL::Delaunay_mesh_size_criteria_2<CDT> Criteria;
typedef CGAL::Delaunay_mesher_2<CDT, Criteria> Mesher;

typedef CDT::Vertex_handle Vertex_handle;
typedef CDT::Point Point;

int main()
{
CDT cdt;

Vertex_handle va = cdt.insert(Point(-4,0));
Vertex_handle vb = cdt.insert(Point(0,-1));
Vertex_handle vc = cdt.insert(Point(4,0));
Vertex_handle vd = cdt.insert(Point(0,1));
cdt.insert(Point(2, 0.6));

cdt.insert_constraint(va, vb);
cdt.insert_constraint(vb, vc);
cdt.insert_constraint(vc, vd);
cdt.insert_constraint(vd, va);

std::cout << "Number of vertices: " << cdt.number_of_vertices() <<
std::endl;

std::cout << "Meshing the triangulation with default criterias..."
<< std::endl;

Mesher mesher(cdt);
mesher.refine_mesh();

std::cout << "Number of vertices: " << cdt.number_of_vertices() <<
std::endl;

std::cout << "Meshing with new criterias..." << std::endl;
// 0.125 is the default shape bound. It corresponds to abound 20.6 degree.
// 0.5 is the upper bound on the length of the longuest edge.
// See reference manual for Delaunay_mesh_size_traits_2<K>.
mesher.set_criteria(Criteria(0.125, 0.5));
mesher.refine_mesh();

std::cout << "Number of vertices: " << cdt.number_of_vertices() <<
std::endl;
}





Archive powered by MHonArc 2.6.16.

Top of Page