Hello!
Happy New Year.
I am trying to implement
- adaptive mesh refinement (with hanging nodes) for an elasticity equation
- with DG methods
- by utilizing Simplex.
I am willing to modify library files if necessary.
Please if there is anybody who has looked through above components, please share your thoughts! :)
For DG methods, I am using the classical face loop, so we have three different cases.
When the face has children (neighbor is finer)- we need to use "FESubfaceValues"..
---
MappingFE<dim> mapping; mapping(FE_SimplexP<dim>(1)
FESystem<dim> fe; fe(FE_SimplexDGP<dim>(1), dim)
QGaussSimplex<dim> face_quadrature_formula(fe.degree+1);
FESubfaceValues<dim> fe_subface_values (mapping,fe, face_quadrature_formula,
update_values | update_normal_vectors |
update_gradients |
update_quadrature_points | update_JxW_values);
---
then, we initialize with cell, face and subface numbers -
fe_subface_values.reinit(cell,face_no,subface_no);
However, with the simplex, I have the following error with the above line !
An error occurred in line <1597> of file </dealii/source/base/qprojector.cc> in function
static QProjector<2>::DataSetDescriptor dealii::QProjector<2>::DataSetDescriptor::subface(const dealii::ReferenceCell &, const unsigned int, const unsigned int, const unsigned char, const unsigned int, const internal::SubfaceCase<2>) [dim = 2]
The violated condition was:
reference_cell == ReferenceCells::Quadrilateral
My question is
i) does anybody have any experience with this case? when you need subface values for DG + Simplex?
ii) Should I use meshworker or something more recent?
iii) I looked into qprojector.cc, and QProjector<2>::DataSetDescriptor::subface.
This function only returns
return ((face_no * GeometryInfo<2>::max_children_per_face + subface_no) *
n_quadrature_points);
If I manually fix this part to fit simplex, and reinstall deal.ii, do you think it will fix the problem?
Thanks a lot!
Sanghyun