On 5/4/23 21:31, Aditya Karthik Saravanakumar wrote:
>
> Note: dofh_uhat is a DoFHandler<dim> object corresponding to the
> FE_FaceQ<dim,spacedim> finite element space.
>
> _ERROR MESSAGE_
> An error occurred in line <374> of file
> </home/--------/software/dealii-9.4.0/source/fe/fe.cc> in function
> const dealii::FullMatrix<double>& dealii::FiniteElement<<anonymous>,
> <anonymous> >::get_prolongation_matrix(unsigned int, const
> dealii::RefinementCase<dim>&) const [with int dim = 2; int spacedim = 2]
> The violated condition was:
> prolongation[refinement_case - 1][child].n() == this->n_dofs_per_cell()
> Additional information:
> You are trying to access the matrices that describe how to embed a
> finite element function on one cell into the finite element space on
> one of its children (i.e., the 'embedding' or 'prolongation'
> matrices). However, the current finite element can either not define
> this sort of operation, or it has not yet been implemented.
Ah yes. But this is of course not the fault of the multigrid implementation,
but rather that the element in question doesn't define these matrices.
So here's the underlying question: FE_FaceQ defines shape functions that only
live on the faces of the cell. If you want to interpolate ("prolong") the
solution from one mesh to a finer mesh, how are you going to define the
solution on the new edges that are created in the interior of the cell?
When we wrote the element, we simply didn't know the answer to this question,
and I still don't. What do the papers you reference use for this operation?