InputParameters
validParams<ElemSideNeighborLayersGeomTester>()
{
  InputParameters params = validParams<ElemSideNeighborLayersTester>();

  // Our base class had called out some relationship managers that we don't want for this object
  params.clearRelationshipManagers();

  /**
   * Reuse an existing RelationshipManager, but restrict it to only acting geometrically.
   * There is no new code or options in this class, just a registration change.
   */
  params.addRelationshipManager(
      "ElementSideNeighborLayers",
      Moose::RelationshipManagerType::GEOMETRIC,

      [](const InputParameters & obj_params, InputParameters & rm_params) {
        rm_params.set<unsigned short>("layers") =
            obj_params.get<unsigned short>("element_side_neighbor_layers");
      }

  );

  params.addRequiredParam<unsigned short>("element_side_neighbor_layers",
                                          "Number of layers to ghost");

  params.addClassDescription("User object to calculate ghosted elements on a single processor or "
                             "the union across all processors.");
  return params;
}
Exemple #2
0
InputParameters
validParams<InterfaceUserObject>()
{
  InputParameters params = validParams<UserObject>();
  params += validParams<BoundaryRestrictableRequired>();
  params += validParams<TwoMaterialPropertyInterface>();
  params += validParams<TransientInterface>();
  params.addClassDescription("Basic UO class to perform computation across an interface");

  // Need one layer of ghosting
  params.addRelationshipManager("ElementSideNeighborLayers",
                                Moose::RelationshipManagerType::GEOMETRIC |
                                    Moose::RelationshipManagerType::ALGEBRAIC);
  return params;
}