Hi there Andrew,

I think that fe.component_to_system_index could give you what you
want. You would use it in a loop over the desired faces. It takes two
unsigned ints if I remember right: one is the component you want and
the other which support point for that component. I forget how it
handles the situation where one component has fewer support points,
like pressure often does. It gives you the local_index that can be
used in the standard local_dof_indices (local_index) to get the global
dof index (filled using cell->get_dof_indices (local_dof_indices). The
method also has an inverse (system_to_component_index) that takes the
local_dof_index (on the cell) and gives you the two variables I
mentioned above. You can then test to see if it is the component you
are interested in but this is probably more expensive. In either case
you need to use it in a loop over the desired faces.

Cheers,
Michael

On Tue, Mar 15, 2011 at 4:22 PM, Andrew McBride
<[email protected]> wrote:
> Hi all
> I'm trying to implement periodic boundary conditions on pairs of opposite
> faces of a cube in 3D. The problem is mixed in that each element has
> vectorial (continuous) displacements,  and (discontinuous) pressures and
> dilatation as unknowns. I wish to impose periodicity between the
> displacement degrees of freedom only.
> I've adapted a 2d periodic boundary conditions algorithm. I've sorted the
> faces of the element on the opposite sides based on the position of the
> centroid of the elements face. The problem is now to match degrees of
> freedom on opposite faces. I can determine if they are associated with the
> displacements and to which local support point they correspond but this does
> not give me a geometric measure to order the dof.
> I can't restrict the problem to only Q_1 elements for the displacement but
> it will always be Q_something.
> Is there any way to use a function
> like DoFTools::map_dofs_to_support_points  but to restrict its operation to
> only certain components? Or, if I know a dof index (local or global) can I
> determine the position of the support point? In other words, is there a
> function like DoFTools::map_dofs_to_support_point that only works with one
> dof at a time.
> I would appreciate any suggestions as I'm sure I'm not the first to do this
> Thanks as ever
> andrew
> _______________________________________________
> dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
>
>
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to