Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] 3D meshing - Subdomain index of a cell and it's mirror

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] 3D meshing - Subdomain index of a cell and it's mirror


Chronological Thread 
  • From: Ramin H <>
  • To:
  • Subject: Re: [cgal-discuss] 3D meshing - Subdomain index of a cell and it's mirror
  • Date: Wed, 5 May 2010 10:16:25 -0400
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=iRQZazrNa/cFlmDLN+UEEqlGq6avWRzq/7DinKmKmNZqhlOFE2pS6WZCCAQaPnviER ++c7ZJRXx/cvBaYd3hw7ckmCqNezmsgQftlzNbpe/6sKxiZfUcHZCH2HaPnhYzGK2Vj0 afAoM14hJcK4JH8vcGExf9qWtOi8Heot+Uv8o=

I am attaching a slightly modified version of mesh_polyhedral_domain.cpp  and input.off (the elephant that comes with the CGAL examples).

Can you please compile and the .cpp file and run it against the input.off and see if you get any output such as:
Cell and it's mirror have equal subdomain_index: 0

If yes, then why do you think this is happening? How can we fix this?

Thank you for your time.
-Ramin


On Tue, May 4, 2010 at 11:30 AM, Ramin H <> wrote:
Laurent,

Do you get the same results on your machine for the cell and it's mirror if you loop over facets of the C3T3 when you mesh the polyhedral domain I provided?

Thanks,
-Ramin



On Tue, May 4, 2010 at 9:11 AM, Ramin H <> wrote:
I wanted to add that I have extended the Mesher_3 by adding one member function:

template<class C3T3, class MC, class MD>
void
Mesher_3<C3T3,MC,MD>::refine_mesh_one_step()
{
  if ( ! cells_mesher_.is_algorithm_done() )
  {
    cells_mesher_.one_step(cells_visitor_);
  }
}

And call this function at each step to track the mesh refinement and visualize each step. I hope this does not have anything to do with this problem.

-Ramin


On Tue, May 4, 2010 at 8:37 AM, Ramin H <> wrote:
Here are the typedef's

   typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
    typedef CGAL::Mesh_3::Robust_intersection_traits_3<K> Geom_traits;
    typedef CGAL::Polyhedron_3<Geom_traits> Polyhedron;
    typedef CGAL::Polyhedral_mesh_domain_3<Polyhedron, Geom_traits> Mesh_domain;
    // Triangulation
    typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
    typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;

I read the Polyhedron from an .off file. This polyhedron was created by performing Boolean operation on a few other polyhedrons. If the input in consistent, then the problem is in the code.


On Tue, May 4, 2010 at 7:57 AM, Laurent Rineau (GeometryFactory) <> wrote:
On Monday 03 May 2010 18:43:42 Ramin H wrote:
> Hi,
> I still don't know everything about C3T3 even though I have read the
> documentation. In a 3D triangulation, let's say the cell representing a
> facet does not belong to domain (subdomain=0). If we find the mirror cell
> of this facet, should it belong to the domain (subdomain > 0) ?
>
> To test this idea, I wrote the following code:
>
>   for(Facet_iterator facet_it = c3t3_.facets_begin() ;
>       facet_it != c3t3_.facets_end() ;
>       ++facet_it)
>   {
>     Facet facet = *facet_it;
>     const Facet f = c3t3_.triangulation().mirror_facet(facet);
>     if( (int)(facet.first->subdomain_index()) ==
> (int)(f.first->subdomain_index()) )
>     {
>       std::cerr << "Cell and it's mirror have equal subindex: " <<
> (int)(f.first->subdomain_index()) << std::endl;
>     }
>   }
>
> Here is some sample output:
> Cell and it's mirror have equal subindex: 1
> Cell and it's mirror have equal subindex: 1
> Cell and it's mirror have equal subindex: 0
> Cell and it's mirror have equal subindex: 1
> Cell and it's mirror have equal subindex: 1
> Cell and it's mirror have equal subindex: 1
> Cell and it's mirror have equal subindex: 0
> Cell and it's mirror have equal subindex: 1
>
> Is this correct behavior? If Facet_iterator is iterating over the facets on
> the surface, why a cell representing that facet and it's mirror both can
> have subdomain index equal to 1 or 0?

No it is not a correct behavior. There is an inconsistency between the answers
provided by the mesh domain oracle to the two following questions :
 - does a given segment/ray intersects the boundary of the domain,
 - is a given center of cell in the domain or not.

Does your domain class (CGAL::Polyhedral_mesh_domain_3 or something like that)
use a filtered (exact) kernel or an inexact one?

--
Laurent Rineau, PhD
R&D Engineer at GeometryFactory           http://www.geometryfactory.com/
Release Manager of the CGAL Project       http://www.cgal.org/

--
You are currently subscribed to cgal-discuss.
To unsubscribe or access the archives, go to
https://lists-sop.inria.fr/wws/info/cgal-discuss





Attachment: mesh_polyhedral_domain.cpp
Description: Binary data

Attachment: input.off
Description: Binary data




Archive powered by MHonArc 2.6.16.

Top of Page