dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #02452
Re: [Fwd: Re: Future work]
>
>>> It appears that the most straightforward (and general?) way to
implement
>>> surface integrals would be to just integrate the cell basis functions
over
>>> a boundary/interior facet. Possibly by first throwing away dofs that
are
>>> zero on the facet. Using the "trace_tabulate" of FIAT this should be
too
>>> much work?
>>> On the DOLFIN side we would get element matrices corresponding to all
dofs
>>> of the cell also when looping over (boundary) edges, typically with a
lot
>>> of zero entries. There may be some optimizations here to consider, but
the
>>> general algorithm seems rather clear, or?
>> I wouldn't worry about any optimisations yet. The time to assemble over
boundary cells will be small relative to the assembly over all cells.
DOLFIN is pretty much ready for this - the code will mirror the
assembly
>> over all cells.
>>> On the FFC side, the reference tensor needs to be modified (using FIAT
trace_tabulate?) to reflect integration over an edge/face instead of over
>>> the whole cell.
>> I started poking around the FFC code to understand FCC and look at
boundary integrals should be incorporated. Have you already started on it
Johan? If so, I'll wait on it, or if you need any help point me in right
direction.
>
> I have not started to code. I would guess the place to start is:
ffc/src/ffc/compiler/referencetensor.py
>
> And also: ffc/src/ffc/compiler/integrator.py, where FIAT is used.
FIAT "tabulate" function is called on line 101 in integrator.py. I guess
it is here we need to change into the "trace_tabulate" function for
integration on a boundary entity.
/Johan
References