LCOV - code coverage report
Current view: top level - src/mfem/base - MFEMExecutedObject.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 329044 Lines: 54 60 90.0 %
Date: 2026-08-03 21:12:22 Functions: 11 11 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #ifdef MOOSE_MFEM_ENABLED
      11             : 
      12             : #include "MFEMExecutedObject.h"
      13             : 
      14             : InputParameters
      15       79134 : MFEMExecutedObject::validParams()
      16             : {
      17       79134 :   InputParameters params = MFEMObject::validParams();
      18       79134 :   params += SetupInterface::validParams();
      19       79134 :   params.registerSystemAttributeName("MFEMExecutedObject");
      20      237402 :   params.addPrivateParam<std::vector<std::string>>("_mfem_dependency_param_names", {});
      21      158268 :   params.set<ExecFlagEnum>("execute_on", true) = EXEC_TIMESTEP_END;
      22       79134 :   params.addClassDescription("Base class for executed MFEM objects.");
      23       79134 :   return params;
      24           0 : }
      25             : 
      26        3355 : MFEMExecutedObject::MFEMExecutedObject(const InputParameters & parameters)
      27        3355 :   : MFEMObject(parameters), SetupInterface(this), DependencyResolverInterface()
      28             : {
      29        3355 : }
      30             : 
      31             : std::optional<std::string>
      32        1244 : MFEMExecutedObject::suppliedVariableName() const
      33             : {
      34        1244 :   return std::nullopt;
      35             : }
      36             : 
      37             : std::optional<std::string>
      38        2515 : MFEMExecutedObject::suppliedPostprocessorName() const
      39             : {
      40        2515 :   return std::nullopt;
      41             : }
      42             : 
      43             : std::optional<std::string>
      44        2871 : MFEMExecutedObject::suppliedVectorPostprocessorName() const
      45             : {
      46        2871 :   return std::nullopt;
      47             : }
      48             : 
      49             : const std::set<std::string> &
      50        5172 : MFEMExecutedObject::getRequestedItems()
      51             : {
      52        5172 :   if (_requested_items)
      53        2331 :     return *_requested_items;
      54             : 
      55        2841 :   _requested_items.emplace();
      56             : 
      57       10171 :   for (const auto & param : getParam<std::vector<std::string>>("_mfem_dependency_param_names"))
      58             :   {
      59        1648 :     if (const auto * name = queryParam<VariableName>(param))
      60        1579 :       _requested_items->insert(variableDependencyKey(*name));
      61        1648 :     if (const auto * names = queryParam<std::vector<VariableName>>(param))
      62         183 :       for (const auto & name : *names)
      63         122 :         _requested_items->insert(variableDependencyKey(name));
      64        1648 :     if (const auto * name = queryParam<PostprocessorName>(param))
      65           2 :       _requested_items->insert(postprocessorDependencyKey(*name));
      66        1648 :     if (const auto * names = queryParam<std::vector<PostprocessorName>>(param))
      67           0 :       for (const auto & name : *names)
      68           0 :         _requested_items->insert(postprocessorDependencyKey(name));
      69        1648 :     if (const auto * name = queryParam<VectorPostprocessorName>(param))
      70           0 :       _requested_items->insert(vectorPostprocessorDependencyKey(*name));
      71        1648 :     if (const auto * names = queryParam<std::vector<VectorPostprocessorName>>(param))
      72           0 :       for (const auto & name : *names)
      73           0 :         _requested_items->insert(vectorPostprocessorDependencyKey(name));
      74             :   }
      75             : 
      76        2841 :   return *_requested_items;
      77             : }
      78             : 
      79             : const std::set<std::string> &
      80        9800 : MFEMExecutedObject::getSuppliedItems()
      81             : {
      82        9800 :   if (_supplied_items)
      83        6485 :     return *_supplied_items;
      84             : 
      85        3315 :   _supplied_items.emplace();
      86             : 
      87        3315 :   if (const auto name = suppliedVariableName())
      88        3315 :     _supplied_items->insert(variableDependencyKey(*name));
      89        3315 :   if (const auto name = suppliedPostprocessorName())
      90        3315 :     _supplied_items->insert(postprocessorDependencyKey(*name));
      91        3315 :   if (const auto name = suppliedVectorPostprocessorName())
      92        3315 :     _supplied_items->insert(vectorPostprocessorDependencyKey(*name));
      93             : 
      94        3315 :   return *_supplied_items;
      95             : }
      96             : 
      97             : std::string
      98        3772 : MFEMExecutedObject::variableDependencyKey(const std::string & name)
      99             : {
     100        3772 :   return "variable:" + name;
     101             : }
     102             : 
     103             : std::string
     104         802 : MFEMExecutedObject::postprocessorDependencyKey(const std::string & name)
     105             : {
     106         802 :   return "postprocessor:" + name;
     107             : }
     108             : 
     109             : std::string
     110         444 : MFEMExecutedObject::vectorPostprocessorDependencyKey(const std::string & name)
     111             : {
     112         444 :   return "vector_postprocessor:" + name;
     113             : }
     114             : 
     115             : void
     116       57334 : MFEMExecutedObject::appendDependencyParam(InputParameters & params, const std::string & param_name)
     117             : {
     118       57334 :   auto & param_names = params.set<std::vector<std::string>>("_mfem_dependency_param_names");
     119       57334 :   param_names.push_back(param_name);
     120       57334 : }
     121             : 
     122             : #endif

Generated by: LCOV version 1.14