Hello

To test how to implement 

u.n = 0

in step-20 which uses FE_RaviartThomas for u, I know from here

https://groups.google.com/g/dealii/c/Tvs-V4ESiZE/m/fJ0RQ3VwAQAJ

that we cannot do this.

But if I change to FE_RaviartThomasNodal, 

  template <int dim>
  MixedLaplaceProblem<dim>::MixedLaplaceProblem(const unsigned int degree)
    : degree(degree)
    , fe(FE_RaviartThomasNodal<dim>(degree), 1, FE_DGQ<dim>(degree), 1)
    , dof_handler(triangulation)
  {}


I thought following should work

      std::map<types::global_dof_index, double> vel_boundary_values;
      ComponentMask vel_mask = fe.component_mask(velocities);
      VectorTools::interpolate_boundary_values(dof_handler,
                                               types::boundary_id(0),
                                               Functions::ZeroFunction<2>(3),
                                               vel_boundary_values,
                                               vel_mask);

but it does not

--------------------------------------------------------
An error occurred in line <263> of file 
</Users/praveen/Applications/deal.II/9.6.0/include/deal.II/numerics/vector_tools_boundary.templates.h>
 in function
    void dealii::VectorTools::internal::do_interpolate_boundary_values(const 
M_or_MC<dim, spacedim> &, const DoFHandler<dim, spacedim> &, const 
std::map<types::boundary_id, const Function<spacedim, number> *> &, 
std::map<types::global_dof_index, number> &, const ComponentMask &) [dim = 2, 
spacedim = 2, number = double, M_or_MC = dealii::Mapping]
The violated condition was:      fe.is_primitive(i)
Additional information:      This function can only deal with requested 
boundary values that
    correspond to primitive (scalar) base elements. You may want to look
    up in the deal.II glossary what the term 'primitive' means.
         There are alternative boundary value interpolation functions in
    namespace 'VectorTools' that you can use for non-primitive finite
    elements.

But FE_RaviartThomasNodal actually has nodal dofs on the boundary which fix u.n.

Is this not working because it is not implemented, or it is not possible to do 
this at all ?

thanks
praveen

-- 
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].
To view this discussion visit 
https://groups.google.com/d/msgid/dealii/5EAE7A44-BE7B-4DD2-9F95-E3CAF10625F4%40gmail.com.

Reply via email to