← Back to team overview

dolfin team mailing list archive

Re: Form with a Real space

 

On 25. sep. 2010 22:02, Johan Hake wrote:
> On Saturday September 25 2010 00:24:12 Marie E. Rognes wrote:
>   
>> On 25. sep. 2010, at 02:37, Johan Hake <johan.hake@xxxxxxxxx> wrote:
>>     
>>> Hello!
>>>
>>> I have been experimenting with forms including spaces of Real. I am using
>>> the Real space to calculate average values of other species across the
>>> boundaries. These values are then used to cacluate derived values such
>>> as fluxes across a boundary. In this way I manage to connect two
>>> sepatated meshes (stored in the same mesh) via the calculated flux. As
>>> everything is contained in one form I can linearize it an use it in a
>>> Newton solver, which converges nicely.
>>>
>>> In this procedure I have used unknowns of Reals to caluclate other Reals.
>>> This is somewhat combersome when I have to express this using an
>>> integral.
>>>
>>> Consider:
>>>  V = MixedFunctionSpace([FunctionSpace(mesh, "CG", 1)]+
>>>  
>>>                         [FunctionSpace(mesh, "R", 0)]*3)
>>>  
>>>  u, r0, r1, r2 = split(Function(V))
>>>  v, v0, v1, v2 = TestFunctions(V)
>>>  ...
>>>  L0 = (r0-(r2-r1))*v0*ds(1)
>>>
>>> Here I express r0 in terms of r1 and r2. However in the form I need to
>>> integrate the expression over an arbitrary domain in the mesh. I am not
>>> interested in this, as the value is not spatialy varying. Do you have any
>>> suggestions of how to avoid this or to do it in some other manner?
>>>       
>> It is not entirely clear to me which values that are unknown above, but if
>> everything is known or you are just operating on real numbers, I imagine
>> that extracting the value of the Function using values() could be simpler?
>>     
> r0, r1, and r2 are unknowns together with the field u. r1 and r2 are the mean 
> of the field across a boundary, and r0 are the flux between the two distinct 
> domains. 
>
> A more complete form would be:
>
>   # Boundary forms
>   L1 = (r1-u)/area[1]*v1*ds(1)
>   L2 = (r2-u)/area[2]*v2*ds(2)
>   L0 = (r0-(r2-r1))*v0*ds(1)
>   Lu = r0*v*ds(1) - r0*v*ds(2)
>
>   # Stiffnes + Boundary
>   L = inner(grad(u),grad(v))*dx + L0 + L1 + L2 + Lu
>   
> My question relates to the algebraic relation of the reals in:
>
>   L0 = (r0-(r2-r1))*v0*ds(1)
>
> which really does not need an integral.
>
>   

Do you really want:

    r0 = (r2 - r1)

?

If yes, why not replace r0 by (r2 - r1)?

--
Marie





Follow ups

References