This is the first of a series of PRs aimed at refactoring the matrixFreePDE class into several compositional classes (e.g., discretization, timesteppings, etc.). This reduces the bulkiness of matrixFreePDE and makes it easier to figure out what files you need to edit (without having to understand what everything does).
This should also lower the barrier of entry for future PRs and contributors.
This is the first of a series of PRs aimed at refactoring the
matrixFreePDE
class into several compositional classes (e.g., discretization, timesteppings, etc.). This reduces the bulkiness ofmatrixFreePDE
and makes it easier to figure out what files you need to edit (without having to understand what everything does).This should also lower the barrier of entry for future PRs and contributors.
In addition to refactoring, I also cleaned the method that applies the refinement criterion to marks cells to be refined or coarsened. As part of this, I redid the enum for the refinement criterion to imitate deal.II's
enum UpdateFlags
. This allows us to use bitwise OR and AND statements to specify if we need the values, gradients, etc (see below). https://github.com/prisms-center/phaseField/blob/1682413858c4ce6e8e9468830cd883840bdfd163/src/userInputParameters/userInputParameters.cc#L104-L106