Skip to content

New functionality and code improvements for the local p-refinement

João Isler requested to merge jisler/nektar:feature/pRefClassRegion into master

Issue/feature addressed

In this merge request, code improvements related to the three-dimensional local p-refinement functionality are added. Also, a new functionality is implemented in order to locally p-refine the mesh when the space dimension does not match the mesh dimension.

Proposed solution

In this new version of the local p-refinement functionality, an abstract base class is created which inherits from the derived classes all the surface regions which select the elements to be refined.

Also, an additional method was added. The method's name is SPHERE. Although the first method implemented (STANDARD) has more geometrical flexibility to define surface regions in a generic domain. This method does not allow the user to refine meshes which do not match the space dimension. Thus, the new method developed is able to perform local p-refinement for problems where the mesh dimension does not match the space dimension.


The RefRegion abstract base class inherits from the RefRegionLine, RefRegionSurface, RefRegionCylinder and RefRegionSphere derived classes. Each of these derived classes uses a different surface to select the elements to be refined. In the previous implementation, the methods implemented in these derived classes were in the MeshGraph class (MeshGraph.cpp file).


The test cases below were added

  1. solvers/ADRSolver/Tests/Helmholtz2D_DirectFull_pRef.xml
  • This test case checks the possibility to refine meshes which the space dimension does not match the mesh dimension. Thus, a two-dimensional mesh was created in the yz-plane. Although the mesh is two-dimensional, Nektar++ treats this domain as a three-dimensional problem. The new SPHERE method allows the user to perform this local p-refinement.
  1. solvers/ADRSolver/Tests/Helmholtz3D_Cube_pRef_MixedType.xml
  • This test was designed to demonstrated and check that the code can use both methods (TYPE="STANDARD", TYPE="SPHERE") in the same composite to refine the mesh.


This merge request provides improvements and extends functionalities first presented in the MR !1508 (merged).


  • Functions and classes, or changes to them, are documented.
  • User guide/documentation is updated.
  • Changelog is updated.
  • Suitable tests added for new functionality.
  • Contributed code is correctly formatted. (See the contributing guidelines).
  • License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).
Edited by João Isler

Merge request reports