Hi all,
I've found the problem affecting the p refinement in my elliptic_dg
code...
In fe_boundary.C the method void FE<Dim,T>::reinit(const Elem* elem,
const unsigned int s, const Real tolerance)
will initialize the shape functions if ((this->get_type() != elem-
>type()) || (s != last_side) || this->shapes_need_reinit())...
I think we need to add a condition like if (this->get_p_level() !=
elem->p_level())... I've tried it creating a method
FeBase::get_p_level() and it works
but maybe you have a better solution.
Another option needed by the method FE<Dim,T>::reinit(const Elem*
elem, const unsigned int s, const Real tolerance) would be a parameter
extraorder to
increase the quadrature order if the element neighbor is at an higher
p level.
Something like
if (neighbor->p_level() > elem->p_level())
{
unsigned int extraorder = neighbor->p_level() - elem->p_level();
}
fe->reinit(elem, side, extraorder)
and
FE<Dim,T>::reinit(const Elem* elem, const unsigned int s,unsigned int
extraorder, const Real tolerance)
{
....
qrule->init(side->type(), elem->p_level() + extraorder);
...
}
Again, maybe you have a better idea...
Thanks
Lorenzo
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users