dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #07789
Re: Plotting MeshFunction
On Monday 05 May 2008, Anders Logg wrote:
> On Mon, May 05, 2008 at 03:38:49PM +0200, Ola Skavhaug wrote:
> > Ola Skavhaug skrev den 05/05-2008 følgende:
> > > >
> > > > I think the problem may be that it's not possible to plot a mesh
> > > > function defined on the facets of a mesh. Viper can't handle that as
> > > > far as I remember. It would be very good if this could be added since
> > > > it's a simple way to debug boundary conditions.
> >
> > Should be:
> >
> > bmesh = BoundaryMesh(mesh)
> > bmf = MeshFunction("uint", bmesh, bmesh.topology().dim())
> > # ^^^^^
> > # use mesh-bmesh mapping to remap indicators and insert into bmf
> > plot(bmf)
>
> I think that's a good solution (to just add a few lines that extracts
> the boundary and then plots the cells of the boundary).
Thanks, I've got it!
After some copy paste and other extra lines for the markers, it's done.
My c++ code for a boundary test.
int main()
{
// Sub domain for heat inflow DirichletBC
class DirichletBC : public SubDomain
{
bool inside(const real* x, bool on_boundary) const
{
real h3=0.035;
return ((x[0] > h3 - DOLFIN_EPS)&&(x[2]>DOLFIN_EPS)) && on_boundary;
}
};
// {{{For boundary conditions debug
class B_DirichletBC : public SubDomain
{
bool inside(const real* x,bool on_boundary) const
{
real h3=0.035;
return ((x[0] > h3 - DOLFIN_EPS)&&(x[2]>DOLFIN_EPS));
}
};
// }}}
// Read mesh
Mesh mesh("../barra4.xml");
BoundaryMesh bmesh(mesh);
MeshFunction<unsigned int> sub_domains(mesh, mesh.topology().dim() - 1);//
MeshFunction<unsigned int> b_sub_domains(bmesh,
bmesh.topology().dim());//For boundary conditions debug
// {{{ Mark all facets as sub domain 0 (*)
sub_domains = 0; //interior and boundary facets
b_sub_domains = 0; //facets of boundary mesh
// }}}
// {{{ Mark Dirichlet boundary as sub domain 1
DirichletBC dirichletbc;
B_DirichletBC b_dirichletbc;
dirichletbc.mark(sub_domains, 1); //boundary facets of 3D mesh
b_dirichletbc.mark(b_sub_domains, 1);//facets of boundary mesh
// }}}
// {{{ Save sub domains to file
// The information we need to the main code
File file("bc_subdomains.xml");
file << sub_domains;
// }}}
// {{{ Plotting for boundary conditions debug
File b_file("bmf.xml");
b_file << b_sub_domains;
File bmfvtk("bmf.pvd");
bmfvtk<<b_sub_domains;
plot(b_sub_domains);
// }}}
}
--
Nuno David Lopes
e-mail:ndl@xxxxxxxxxxxxxx (FCUL/CMAF)
nlopes@xxxxxxxxxxxxxxx (ISEL)
http://ptmat.ptmat.fc.ul.pt/%7Endl/
Follow ups
References