14 #include "libmesh/fe.h" 15 #include "libmesh/threads.h" 16 #include LIBMESH_INCLUDE_UNORDERED_SET 17 LIBMESH_DEFINE_HASH_POINTERS
18 #include "libmesh/quadrature.h" 24 : _fe_problem(x._fe_problem), _max(x._max)
39 std::set<std::pair<ElemType, SubdomainID>> seen_it;
41 for (
const auto & elem : range)
44 if (!seen_it.insert(std::make_pair(elem->type(), elem->subdomain_id())).second)
50 assem.setVolumeQRule(elem);
52 auto & qrule = assem.writeableQRule();
53 qrule->init(elem->type(), elem->p_level());
54 if (qrule->n_points() >
_max)
55 _max = qrule->n_points();
61 assem.setFaceQRule(elem, 0);
62 auto & qrule_face = assem.writeableQRuleFace();
63 qrule_face->init(elem->side_type(0), elem->p_level());
64 if (qrule_face->n_points() >
_max)
65 _max = qrule->n_points();
71 if (elem->n_nodes() >
_max)
72 _max = elem->n_nodes();
78 assem.clearCachedQRules();
This class determines the maximum number of Quadrature Points and Shape Functions used for a given si...
unsigned int _max
Maximum number of qps encountered.
void join(const MaxQpsThread &y)
void operator()(const ConstElemRange &range)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num) override
FEProblemBase & _fe_problem
void setCurrentSubdomainID(SubdomainID i)
set the current subdomain ID
MaxQpsThread(FEProblemBase &fe_problem)