On Wed, 10 Dec 2014 20:24:08 +0100 simone <[email protected]> wrote:
> Hi, > thank's for your support; i've tried using your code, that runs > without any error, but it still doesn't do what i need. The problem > is that with this definition of facets, the mark method of > LeftBoundary and RightBoundary objects (as defined in my first mail) > doesn't mark my domain. It is able to mark only parts of domain > boundary, not subdomain boundary (which is within the domain, not on > the boundary ), so if I try to integrate over subdomain boundary it > returns me 0.0 because there's no facet over which to integrate. I > suppose this problem is due to my implementation error, could you > please explain me where i'm wrong? Thank you [please, keep [email protected] in CC] 1. ds = measure on exterior facets dS = measure on interior facets 2. on_boundary in your SubDomains causes that it is only on boundary. Example class Axis42(SubDomain): def inside(self, x, on_boundary): return near(x[0], 42.0) defines axis x=42.0 disregarding boundary. Jan > Regards > SC > > Il 10/12/2014 15:11, Jan Blechta ha scritto: > > Hi, > > > > we cannot find a problem why non-positive progress bar is to be > > created and raising runtime error without a complete code to try. > > > > But note that you are probably misusing SubMesh. Having solved some > > problem on mesh and trying to integrate its solution around some > > cells or facets is normally done without SubMesh. Like > > > > u = Function(V) # V space on mesh > > > > solve(..., u, ...) > > > > facets = FacetFunction('size_t', mesh) > > LeftBoundary().mark(facets, 2) > > RightBoundary().mark(facets, 1) > > > > # current syntax > > F = u*ds(subdomain_id=1, subdomain_data=facets) > > F += u*ds(subdomain_id=2, subdomain_data=facets) > > > > # deprecated synatx > > F = u*ds[facets](1) > > F += u*ds[facets](2) > > > > assemble(F) > > > > i.e. everything is done on the orginal mesh and integration is > > performed over on subset of original mesh using cell/facet markers. > > No new mesh is ibtroduced using SubMesh, which just complicates the > > things. > > > > Jan > > > > > > On Wed, 10 Dec 2014 02:19:13 +0100 > > simone <[email protected]> wrote: > > > >> Good evening, > >> i'm sorry if I rewrite to you but i cannot find a solution in the > >> forum neither in the documentation. I have a rectangular domain > >> and a smaller rectangular subdomain. After the resolution of a > >> differential problem over the domain, i need to evaluate the > >> integral of the obtained solution over the left and right sides of > >> the subdomain boundary. Called p the solution, this is part of my > >> code: > >> > >> Gamma=FacetFunction("size_t",SubMesh(my_mesh,my_subdomain)) > >> > >> class LeftBoundary(SubDomain): > >> def inside(self, x, on_boundary): > >> return on_boundary and near(x[0],x1) #x1=x-coordinate of > >> the left side of the subdomain > >> > >> class RightBoundary(SubDomain): > >> def inside(self, x, on_boundary): > >> return on_boundary and near(x[0],x2) #x2=x-coordinate of > >> the right side of the subdomain > >> > >> Gamma.set_all(0) > >> LeftBoundary().mark(Gamma,2) > >> RightBoundary().mark(Gamma,1) > >> > >> d_gamma=Measure("ds",domain=SubMesh(my_mesh,my_subdomain))[Gamma] > >> > >> d_p=p*d_gamma(1)-p*d_gamma(0) > >> > >> direction=assemble(d_p,exterior_facet_domains=Gamma) > >> > >> > >> > >> > >> If I try to run this code i get this error: > >> File "/usr/lib/python2.7/dist-packages/dolfin/cpp/mesh.py", line > >> 4461, in mark > >> self._mark(*args) > >> RuntimeError: > >> > >> *** > >> ------------------------------------------------------------------------- > >> *** DOLFIN encountered an error. If you are not able to resolve > >> this issue *** using the information listed below, you can ask for > >> help at *** > >> *** [email protected] > >> *** > >> *** Remember to include the error message listed below and, if > >> possible, *** include a *minimal* running example to reproduce the > >> error. *** > >> *** > >> ------------------------------------------------------------------------- > >> *** Error: Unable to create progress bar. > >> *** Reason: Number of steps for progress bar must be positive. > >> *** Where: This error was encountered inside Progress.cpp. > >> *** Process: unknown > >> *** > >> *** DOLFIN version: 1.4.0 > >> *** Git changeset: unknown > >> > >> I cannot understand the meaning of the error message, so i don't > >> know how to modify the code. > >> I would like also to know what happens if the mesh vertexes don't > >> match the subdomain boundary, with the subdomain sides intersecting > >> mesh cells. I hope I've explained myself, I'm sorry for my english > >> Thank you for your support > >> Best regards > >> Simone Carriero > >> _______________________________________________ > >> fenics-support mailing list > >> [email protected] > >> http://fenicsproject.org/mailman/listinfo/fenics-support _______________________________________________ fenics-support mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics-support
