Thanks for the immediate replies.

@Vijay : I look forward to the functionality in your patch! My work involves setting
bound charges between dielectrics. I was in fact thinking about how I could handle these interfaces ... I guess having surface_ids in a 3D mesh will allow me to solve the problem.

@Dave : I am using r3510. Could the problem arise from the fact that ex1.C uses the function ) .... is there something special that needs to be done for Gmsh


On Wed, Oct 28, 2009 at 4:56 AM, Roy Stogner <> wrote:

On Wed, 28 Oct 2009, Arvind Ajoy wrote:

I am trying to read in a simple mesh created using Gmsh, which has
two Physical regions.  I use the example programme to read
the .msh file, and write it out as another .msh file, i.e ./ex1 -d 2
in.msh out.msh.

I find that the output of mentions n_subdomains()=1, though
there are two physical regions.


MeshBase::n_subdomains() has been around since 2005, when Ben added
it (presumably to Mesh, back then?). MeshBase::set_n_subdomains() appears to be an easy accessor that Derek
added earlier this year... but other than a little overloading in the
BoundaryInfo::sync() method, I can't find anywhere that subdomain
counts are actually getting *set* rather than just copied around!

I suppose a typical use case is for the user code to set subdomain
ids, but we do support them in Exodus, GMSH, Nemesis, and XDR I/O...
yet none of that code seems to update the total mesh id count.

Ben, Derek, anyone else know what I'm missing?  It seems as if
updating MeshBase::_n_sbd ought to be a standard part of
prepare_for_use(), but isn't...