← Back to team overview

dolfin team mailing list archive

Re: Form with a Real space

 

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.

Johan



Follow ups

References