On Mon, 20 Apr 2009, [email protected] wrote:
>> >> On Mon, 20 Apr 2009, Anders Logg wrote: >> >>> On Thu, Apr 16, 2009 at 09:19:51PM -0400, Shawn Walker wrote: >>>> >>>> On Fri, 17 Apr 2009, Garth N. Wells wrote: >>>> >>>>> [email protected] wrote: >>>>>> I would also like this capability! It is something that often shows >>>>>> up >>>>>> in inverse/optimal control problems. >>>>>> >>>>>> Written in FFC/UFL your first equation reads: >>>>>> >>>>>> dot(u,v)*dx - p*div(v)*dx + lmbda*dot(v,n)*ds >>>>>> >>>>>> where u, p, lmbda are trial functions. >>>>>> >>>>>> You could form one system or create a block matrix. Anyhow >>>>>> the term >>>>>> lmbda*dot(v,n)*ds >>>>>> would lead to a matrix with a very big kernel since you are not able >>>>>> to >>>>>> restrict the dofs of lmbda only to the boundary. >>>>>> >>>>>> What you can currently do is to restrict the functionspace for lmbda >>>>>> to >>>>>> all the cells >>>>>> associated with the boundary. >>>>>> >>>>>> Using restricted functionspaces (in a simpler fashion) can be found >>>>>> in >>>>>> demo/function/restriction. >>>>>> >>>>>> The restriction does only work on cells for now. >>>>>> >>>>>> We could discuss Uzawa and/or block matrices for this problem but I >>>>>> think >>>>>> the simplest start is to create one system to begin with. >>>>>> >>>>>> Whether it makes sense that lmbda lives on the whole cell associated >>>>>> with >>>>>> the boundary, I don't know. >>>>>> >>>>> >>>>> It should live only on the boundary. In practice this only becomes an >>>>> issue for higher-order elements with internal dofs. >>>>> >>>>> Garth >>>> >>>> Yes, I agree. >>>> >>>> So how ridiculous is it to enable FFC/DOLFIN to have finite element >>>> functions that are only defined on the boundary of the domain? I'm >>>> guessing there would be some special DoFmappings to go from the global >>>> domain numbering to a boundary numbering only. This would be really >>>> nice >>>> to have. There are lots of cases in practice that have these kinds of >>>> boundary functions. >>>> >>>> - Shawn >>> >>> It's not impossible but it requires some thought. I think Garth has >>> asked about this for a long time as well (to have function spaces that >>> only live on facets). I don't really know how to best handle it. >>> >>> -- >>> Anders >> >> ok. I just implemented what I needed in MATLAB and that formulation >> works. But it would certainly be great to have it in FENICS. >> >> - Shawn > > A possible way to do it with not to much work (?) in FEniCS would be to > to create the matrix on the space with to many degrees of freedom and > a large kernel. Then create a projection matrix based on the degrees > of freedom you want. You may then project the matrix onto the space you > want. This is similar to what is currently done in the function restriction > (allthought it is between the lines here). Both PETSc and Trilinos support > matrix matrix multiplication (I think). > > This is maybe not the most elegant solution, but it is not all bad. > > Kent Is it really that bad to put this directly into FENICS? It seems that all you need is a separate DoFmap for the variables that live on the boundary only. Is it not possible to setup a DoF numbering on the boundary only? Maybe, in addition, have a way of mapping the DoF's on the boundary to the corresponding DoF's in the global numbering? Wasn't something like this done for the parallel stuff? I seem to remember something about having mapping between DoF's on different sub-domains, but I wasn't really paying attention. If someone could summarize the difficulties here, that would be great. I am not that familiar with this aspect of FENICS. - Shawn _______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
