Dear community,
I am working on an adaptive stabilized finite element method which consist in a saddle point problem to obtain:
- A continuous solution
- A discontinuous error estimator (which I use as an adaptive refinement).
I successfully implemented the method using the sample of the step 30 (for the DG formulation) combining with step 20 for the saddle point, and the step 39 for the error marking.
Now, I would like to implement an anisotropic refinement, so I am taking the same step 30 as a reference but now with the anisotropic flag actived.
As I mentioned, If I use only isotropic refinement, it works very well; but, if I activate the anisotropic flag for the adaptive refinement, it can only refine the first iteration, and then I get the following error:
An error occurred in line <357> of file </home/arsen/Documents/instaladores/dealii/include/deal.II/meshworker/loop.h> in function
void dealii::MeshWorker::cell_action(ITERATOR, dealii::MeshWorker::DoFInfoBox<dim, DOFINFO>&, INFOBOX&, const std::function<void(DOFINFO&, typename INFOBOX::CellInfo&)>&, const std::function<void(DOFINFO&, typename INFOBOX::CellInfo&)>&, const std::function<void(DOFINFO&, DOFINFO&, typename INFOBOX::CellInfo&, typename INFOBOX::CellInfo&)>&, const dealii::MeshWorker::LoopControl&) [with INFOBOX = dealii::MeshWorker::IntegrationInfoBox<2, 2>; DOFINFO = dealii::MeshWorker::DoFInfo<2, 2, double>; int dim = 2; int spacedim = 2; ITERATOR = dealii::TriaActiveIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, false> >; typename INFOBOX::CellInfo = dealii::MeshWorker::IntegrationInfo<2, 2>]
The violated condition was:
cell->level() == neighbor->level()
Additional information:
This exception -- which is used in many places in the library -- usually indicates that some condition which the author of the code thought must be satisfied at a certain point in an algorithm, is not fulfilled. An example would be that the first part of an algorithm sorts elements of an array in ascending order, and a second part of the algorithm later encounters an element that is not larger than the previous one.
There is usually not very much you can do if you encounter such an exception since it indicates an error in deal.II, not in your own program. Try to come up with the smallest possible program that still demonstrates the error and contact the deal.II mailing lists with it to obtain help.
I am wondering to know if anyone have any idea of what It is happening and how can I solve that problem. I will be very grateful for your help.
Thank you so much,
Juan Giraldo