ufl team mailing list archive
-
ufl team
-
Mailing list archive
-
Message #00184
Re: Dirichlet boundary conditions
2008/6/19 Kent-Andre Mardal <kent-and@xxxxxxxxx>:
>
> Should we include Dirichlet conditions in UFL ?
>
> It could be done with the notion of traces:
>
> g = Function(...)
> u = TrialFunction(...)
> T = FacetTrace(...)
>From a programming point of view, this line makes no sense to me:
> T*u = g
What it means mathematically is clear, but this can never be valid Python.
Do you mean something like:
a = u*v*dx + dot(u,n)*v*ds(0) + g*T(1)
where T(i) and ds(i) would refer to the same boundary?
> meaning that u = g on the boundary.
> One could also have T(i) for the trace
> on subdomain i.
>
> I think it also could be put into the UFC assembly loop in a nice way,
>
> assembly(...){
>
> ...
>
> assembleCells(...);
>
> assembleExteriorFacets(...);
>
> assembleInteriorFacets(...);
>
> enforceTraces(...);
>
> }
>
>
> The bad thing is that it affects both the right and left hand side so
> that the matrix and the right hand side need to be assembled at the same
> time (or one could make a very sparse matrix that resemble applying the
> constraints).
>
> Kent
I don't think they'll _need to_ be assembled at the same time, this could
also be ignored during initial assembly and then done as a separate step.
In particular if it's only part of UFL and not UFC: the Assembler shouldn't
know about UFL at all, only UFC (which we may of course extend as well!).
--
Martin
Follow ups
References