LCOV - code coverage report
Current view: top level - src/meshgenerators - ParsedElementIDMeshGenerator.C (source / functions) Hit Total Coverage
Test: neams-th-coe/cardinal: ddd5f2 Lines: 23 32 71.9 %
Date: 2026-06-07 19:35:24 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include "ParsedElementIDMeshGenerator.h"
       2             : 
       3             : registerMooseObject("CardinalApp", ParsedElementIDMeshGenerator);
       4             : 
       5             : InputParameters
       6          18 : ParsedElementIDMeshGenerator::validParams()
       7             : {
       8             : 
       9          18 :   InputParameters params = MeshGenerator::validParams();
      10             : 
      11          36 :   params.addRequiredParam<MeshGeneratorName>("input", "The mesh we want to modify");
      12             : 
      13          36 :   params.addRequiredParam<std::vector<ExtraElementIDName>>("extra_element_integer_names",
      14             :                                                            "list of extra integer names to"
      15             :                                                            "to be added in the mesh.");
      16             : 
      17          36 :   params.addParam<std::vector<int>>(
      18             :       "values",
      19             :       "Optional list of integer values corresponding to each name in "
      20             :       "'extra_element_integer_names'. "
      21             :       "If not provided, all values will default to -1. "
      22             :       "If provided, the list must contain the same number of entries as "
      23             :       "'extra_element_integer_names', "
      24             :       "with each value assigned to the respective extra element integer.");
      25             : 
      26          18 :   params.addClassDescription("Adds extra element integers to the whole mesh.");
      27          18 :   return params;
      28           0 : }
      29             : 
      30           9 : ParsedElementIDMeshGenerator::ParsedElementIDMeshGenerator(const InputParameters & params)
      31             :   : MeshGenerator(params),
      32           9 :     _input(getMesh("input")),
      33           9 :     _extra_element_id_names(
      34           9 :         getParam<std::vector<ExtraElementIDName>>("extra_element_integer_names")),
      35          36 :     _eeiid_values(isParamValid("values")
      36           9 :                       ? getParam<std::vector<int>>("values")
      37           9 :                       : std::vector<int>(_extra_element_id_names.size(), DEFAULT))
      38             : {
      39           9 :   if (_eeiid_values.empty() || _extra_element_id_names.empty())
      40           0 :     mooseError("Both 'extra_element_integer_names' and 'values' cannot be empty. "
      41             :                "Please provide at least one entry for each.");
      42             : 
      43             :   // check if value for every extra element integer is provided
      44           9 :   if (_eeiid_values.size() != _extra_element_id_names.size())
      45           0 :     paramError("values",
      46           0 :                "Number of entries in 'values' (" + std::to_string(_eeiid_values.size()) +
      47             :                    ") must match the number of entries in 'extra_element_integer_names'"
      48           0 :                    " (" +
      49           0 :                    std::to_string(_extra_element_id_names.size()) + ")");
      50           9 : }
      51             : 
      52             : std::unique_ptr<MeshBase>
      53           9 : ParsedElementIDMeshGenerator::generate()
      54             : {
      55           9 :   std::unique_ptr<MeshBase> mesh = std::move(_input);
      56             : 
      57          18 :   for (int i = 0; i < _extra_element_id_names.size(); i++)
      58             :   {
      59             :     // check if the extra element integer already exists in the mesh and only add the
      60             :     // element integer if it doesn't.
      61             :     // If it exits already then throw a mooseWarning.
      62           9 :     if (!mesh->has_elem_integer(_extra_element_id_names[i]))
      63          18 :       mesh->add_elem_integer(_extra_element_id_names[i], _eeiid_values[i]);
      64             :     else
      65           0 :       mooseWarning("The element integer id named ",
      66             :                    _extra_element_id_names[i],
      67             :                    " already exists in the mesh. The existing values will be retained,"
      68             :                    " and the provided value for ",
      69           0 :                    _extra_element_id_names[i],
      70             :                    " will be ignored.");
      71             :   }
      72             : 
      73           9 :   return mesh;
      74           0 : }

Generated by: LCOV version 1.14