@@ -316,6 +316,42 @@ void BEMProblem<dim>::reinit()
316316
317317}
318318
319+
320+ template <>
321+ const Quadrature<2 > & BEMProblem<3 >::get_singular_quadrature(const unsigned int index) const
322+ {
323+ Assert (index < fe->dofs_per_cell ,
324+ ExcIndexRange (0 , fe->dofs_per_cell , index));
325+
326+ static std::vector<Quadrature<2 > > quadratures;
327+ {
328+ if (quadratures.size () == 0 )
329+ for (unsigned int i=0 ; i<fe->dofs_per_cell ; ++i)
330+ {
331+ quadratures.push_back (QSplit<2 > (QDuffy (singular_quadrature_order,1 .),fe->get_unit_support_points ()[i]));
332+ }
333+ }
334+
335+ return quadratures[index];
336+
337+ }
338+
339+ template <>
340+ const Quadrature<1 > & BEMProblem<2 >::get_singular_quadrature(const unsigned int index) const
341+ {
342+ Assert (index < fe->dofs_per_cell ,
343+ ExcIndexRange (0 , fe->dofs_per_cell , index));
344+
345+ static std::vector<Quadrature<1 > > quadratures;
346+ if (quadratures.size () == 0 )
347+ for (unsigned int i=0 ; i<fe->dofs_per_cell ; ++i)
348+ {
349+ quadratures.push_back (QTelles<1 >(singular_quadrature_order,
350+ fe->get_unit_support_points ()[i]));
351+ }
352+ return quadratures[index];
353+ }
354+
319355template <int dim>
320356void BEMProblem<dim>::declare_parameters (ParameterHandler &prm)
321357{
@@ -566,23 +602,10 @@ void BEMProblem<dim>::assemble_system()
566602 dirichlet_matrix = 0 ;
567603
568604
569- std::vector<Quadrature<dim-1 > > sing_quadratures;
605+ std::vector<Quadrature<dim-1 > > sing_quadratures (fe-> dofs_per_cell ) ;
570606 for (unsigned int i=0 ; i<fe->dofs_per_cell ; ++i)
571607 {
572- if (fe->degree > 1 )
573- {
574- sing_quadratures.push_back (QIterated<dim-1 >(QGauss<1 > (singular_quadrature_order),fe->degree ));
575- }
576- else
577- {
578- sing_quadratures.push_back
579- (QTelles<dim-1 >(singular_quadrature_order,
580- fe->get_unit_support_points ()[i]));
581- //
582- // Usage of alternative singular quadrature formula
583- // (QGaussOneOverR<dim-1>(singular_quadrature_order,
584- // fe->get_unit_support_points()[i],true));
585- }
608+ sing_quadratures[i] = get_singular_quadrature (i);
586609 }
587610
588611
0 commit comments