← Back to team overview

dolfin team mailing list archive

Re: Form with a Real space

 

On 28. sep. 2010 17:16, Johan Hake wrote:
> On Tuesday September 28 2010 04:46:30 Marie Rognes wrote:
>   
>> 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)
>>     
> Yes.
>
>   
>> If yes, why not replace r0 by (r2 - r1)?
>>     
> That is true but I figure I want to compute that value for book keeping :P
>
>   

So, you want a simpler way of doing it, but not a really simple way of
doing it ;) ?

I don't think I have any more suggestions at the moment -- could you
remind me why the integration is a problem again? Or, what would you
like to write?


> On a related topic:
> The Real space can be used to compute ODEs coupled to PDEs by expressing them 
> using a form. I know several applications that this might be usefull. But then 
> we get the same "problem" when a scalar value are computed by integrating over 
> a domain.
>

Sounds like a bit of an overhead there, yes ...

--
Marie




Follow ups

References