← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Fix assembly over interior facets, DG demo seems to work now

 



Anders Logg wrote:
On Tue, Oct 28, 2008 at 03:13:52PM +0100, Martin Sandve Alnæs wrote:
2008/10/28 Kristian Oelgaard <k.b.oelgaard@xxxxxxxxxx>:
Quoting DOLFIN <dolfin@xxxxxxxxxx>:

One or more new changesets pushed to the primary dolfin repository.
A short summary of the last three changesets is included below.

changeset:   5040:14dbf71b2272b246d861b28d38a8cf79cbabadbd
tag:         tip
user:        Anders Logg <logg@xxxxxxxxx>
date:        Tue Oct 28 14:28:50 2008 +0100
files:       dolfin/fem/Assembler.cpp
description:
Fix assembly over interior facets, DG demo seems to work now
Yes indeed. When I was re-writing the main.cpp file for this demo I noticed that
it was easy to get confused about which FunctionSpace to use.

E.g., for u and v I could use one of the following:
PoissonBilinearFormArgumentSpace0
PoissonBilinearFormArgumentSpace1
PoissonLinearFormArgumentSpace0
PoissonLinearFormCoefficientSpace0
PoissonTestSpace
PoissonTrialSpace

and still get the same result. For forms with many functions this only gets
worse. A nice feature would be if one could do:

PoissonFunctionSpace v("v");
PoissonFunctionSpace u("u");
PoissonFunctionSpace n("n");
PoissonFunctionSpace h("h");

or something similar, to be sure that the function space was picked correctly.

Kristian
Perhaps it's better to encode this name in the classname though?

PoissonFunctionSpace_h
PoissonFunctionSpace::h

these can just be typedefs to a unique "FunctionSpace_CHECKSUM",
where checksum is something like the cache checksum.

How about some magic?

We can extend Martin's suggestion from yesterday to make the following
possible:

  Function f;
  Function g;

  Form a(V, V);
  a.f = f;
  a.g = g;

We just need to make sure that the assignment operator checks whether
or not the Function assigned has a FunctionSpace defined, and
otherwise figures out which one to use and then sets it.


Looks relatively simple to implement and clear to use, as long as reserved C++ names are not used in the FFC input.

We do then need to allow Functions to be created without a FunctionSpace. I was thinking we would make Function::Function() protected which won't be possible with the above design.

Garth




------------------------------------------------------------------------

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev




References