On Dec 5, 2012, at 4:00 PM, Derek Gaston <fried...@gmail.com> wrote:

> We also have other users solving with 20-200 variables of the same
> kind (again, usually first or second order Lagrange) but they might
> also have 1-4 variables of another kind (like cubic hermites) mixed in
> - but not always.

OK, based on this and Saurabh's feedback it is clear going straight to the type 
(2) optimizations, while more difficult, is the way to go.

I'm going to focus on the DOF indexing part of this for now and then do the 
block matrix support later.  Note the block matrix support will still only be 
restricted to when all the variables in a system are of the same type, though.

To support the general case of multiple variables of different types (Derek's 
20 linear lagrange + 4 cubic hermites, for example)  I'm proposing we introduce 
the construct "VariableGroup", which is just like the current Variable except 
it supports an arbitrary number of variables with the same finite element 
approximation type and subdomain restriction.

So to implement a system of Derek's type that would be two variable groups.

To take advantage of this at the DofObject level, the DOF indexing will need to 
loop quickest within the variable groups.  This is because the DofObject does 
not know anything about the topology of the mesh or anything.  So the DOF index 
offset between two variables within a VariableGroup should not depend on the 
number of elements in the mesh in any way.

Specifically, to number DOFs efficiently will require something like this:

for each VariableGroup
  for each Node
     for each Variable in the VariableGroup
        for each Component in the Variable
        …
     …
  …
  for each Element
     for each Variable in the VariableGroup
        for each Component in the Variable
        …
     …
  …
…

When we only have one Variable per VariableGroup this is exactly the indexing 
we currently get (without --node_major_dofs, anyway).  With multiple Variables 
in a VariableGroup, however, the indexing and resulting sparse matrix ordering 
will be different.

-Ben 


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to