dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #19777
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