Jie,
> I need to constrain all the support points on a Q2 element instead of
only vertices. The constrained values (inhomogeneity) are obtained from
(conceptually) a function, say f(\bold{x}).
The code below suggests that you want to constraint all degrees of freedom.
Is this really what you intend? If so, it might be better to just
interpolate the values using VectorTools::interpolate
<https://www.dealii.org/8.5.0/doxygen/deal.II/namespaceVectorTools.html#a05db6c8cebf924b417dd92f525efe3db>.
> I already know how to query the coordinates of the support points, I also
know how to query their global dof numbers, but I do not know how the dof
numbers are ordered: for example, what is the global dof number of the ith
component of velocity at support point v?
> Especially my finite element consists of a 2nd order vector field
(velocity) and a 1st order scalar field (pressure). Here is the code
snippet: [...]
Don't rely on any particular order and use the whole finite element instead
of just the first base element in your code! To find out if a degree of
freedom corresponds to the velocity FiniteElement you can then call
system_to_component_index
<https://www.dealii.org/8.5.0/doxygen/deal.II/classFiniteElement.html#a27220a135402b96c7e6eecbb04acda56>
.
The problem with the approach above is that there (probably?) is no
DoFHandler that is responsible for the velocity degrees of freedoms alone.
Hence, a cell iterator (based on a DoFHandler) can only give you the global
degrees of freedoms
for all the components at the same time. By using system_to_component_index
you can then decide which to use.
> Another related question is that, my computational results are written in
vtu format as Q1 elements, which makes the resolution very coarse. Is there
a way to write the results as 2nd order elements (ParaView supports it)?
> I suppose the pressure component then needs to be interpolated as it is
1st order?
No, as far as I know we don't support writing the results as 2nd order
elements. The approach we take instead is to split a cell into several
(most of the time degree^dim) using DataOut::build_patches(degree) to
obtain a linear interpolation of the correct order.
Best,
Daniel
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.