← Back to team overview

dolfin team mailing list archive

Re: Assembly + Dirichlet bcs

 

>
>
> Anders Logg wrote:
>> On Wed, Aug 20, 2008 at 04:17:11PM +0200, kent-and@xxxxxxxxx wrote:
>>>> kent-and@xxxxxxxxx wrote:
>>>>>> Can Assembler::assemble_system be easily generalised to an Array of
>>>>>> DirichletBC,
>>>>>>
>>>>>>    Array<DirichletBC*> bcs
>>>>>>
>>>>>> so that vector equations can be handled?
>>>>>>
>>>>>> Garth
>>>>>>
>>>>> Good point, I'll have a look.
>>>>>
>>>> OK, I'm taking a look at the moment with a view to generalising
>>>> Assembler::assemble_system for nonlinear problems (Newton solve).
>>>>
>>>> Garth
>>> OK, in the present implementation, the matrix does not have 1 on the
>>> diagonal
>>> associated with bcs. It will be 1 times the number of elements (or
>>> faces)
>>> associated
>>> with it.
>>>
>>> This weighting can be stored but it is not presently done.
>>>
>>> Kent
>>
>> I amazed you even managed to implement that code. It's huge. We should
>> try to break it up so we can reuse as much as possible between that
>> and the standard assemble() function.
>>
>
> I was impressed :).
>
> Now that what's needed is clear, it can be broken up. It looks to me
> like a number of the existing functions can be extended slightly and
> then re-used. The actual code for applying the bcs is not very long.
>
> Garth
>

It is a mess,  way to large and should be broken up.
It is also a bit "difficult" to break up. For instance, the
coefficents may or may not need to be computed depending
on whether it has been computed earlier ie. after computing coefficients
for a macro element it should not be needed when computing the cell integral.
The same applies to dof_maps. Hence it is hard to group everything associated
with eg a cell integral together in a function. Or maybe it can be done
with a set
of bools that contains the state of the various structures.

Kent






Follow ups

References