www.mooseframework.org
OutputInterface.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 // MOOSE includes
11 #include "OutputInterface.h"
12 #include "OutputWarehouse.h"
13 #include "MooseApp.h"
14 #include "ActionWarehouse.h"
15 
16 // Define input parameters
17 template <>
20 {
22  params.addParam<std::vector<OutputName>>("outputs",
23  "Vector of output names were you would like "
24  "to restrict the output of variables(s) "
25  "associated with this object");
26 
27  params.addParamNamesToGroup("outputs", "Advanced");
28  std::set<std::string> reserved = {"all", "none"};
29  params.setReservedValues("outputs", reserved);
30 
31  return params;
32 }
33 
34 OutputInterface::OutputInterface(const InputParameters & parameters, bool build_list)
35  : _oi_moose_app(*parameters.getCheckedPointerParam<MooseApp *>("_moose_app")),
36  _oi_output_warehouse(_oi_moose_app.getOutputWarehouse()),
37  _oi_outputs(parameters.get<std::vector<OutputName>>("outputs").begin(),
38  parameters.get<std::vector<OutputName>>("outputs").end())
39 {
40 
41  // By default it is assumed that the variable name associated with 'outputs' is the name
42  // of the block, this is the case for Markers, Indicators, VectorPostprocessors, and
43  // Postprocessors.
44  // However, for Materials this is not the case, so the call to buildOutputHideVariableList must be
45  // disabled, the build_list allows for this behavior. The hide lists are handled by
46  // MaterialOutputAction
47  // in this case.
48  //
49  // Variables/AuxVariables also call the buildOutputHideVariableList method later, because when
50  // their actions
51  // are called the Output objects do not exist. This case is handled by the
52  // CheckOutputAction::checkVariableOutput.
53  if (build_list)
54  {
55  std::set<std::string> names_set;
56  names_set.insert(parameters.get<std::string>("_object_name"));
57  buildOutputHideVariableList(names_set);
58  }
59 }
60 
61 void
62 OutputInterface::buildOutputHideVariableList(std::set<std::string> variable_names)
63 {
64  // Set of available names
65  const std::set<OutputName> & avail = _oi_output_warehouse.getOutputNames();
66 
67  // Check for 'none'; hide variables on all outputs
68  if (_oi_outputs.find("none") != _oi_outputs.end())
69  for (const auto & name : avail)
70  _oi_output_warehouse.addInterfaceHideVariables(name, variable_names);
71 
72  // Check for empty and 'all' in 'outputs' parameter; do not perform any variable restrictions in
73  // these cases
74  else if (_oi_outputs.empty() || _oi_outputs.find("all") != _oi_outputs.end())
75  return;
76 
77  // Limit the variable output to Output objects listed
78  else
79  {
80  // Create a list of outputs where the variable should be hidden
81  std::set<OutputName> hide;
82  std::set_difference(avail.begin(),
83  avail.end(),
84  _oi_outputs.begin(),
85  _oi_outputs.end(),
86  std::inserter(hide, hide.begin()));
87 
88  // If 'outputs' is specified add the object name to the list of items to hide
89  for (const auto & name : hide)
90  _oi_output_warehouse.addInterfaceHideVariables(name, variable_names);
91  }
92 }
93 
94 const std::set<OutputName> &
96 {
97  return _oi_outputs;
98 }
OutputWarehouse & _oi_output_warehouse
Reference to the OutputWarehouse for populating the Output object hide lists.
Base class for MOOSE-based applications.
Definition: MooseApp.h:59
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
OutputInterface(const InputParameters &parameters, bool build_list=true)
Handles &#39;outputs&#39; parameter for objects that desire control of variable outputs.
InputParameters emptyInputParameters()
std::set< OutputName > _oi_outputs
The set of Output object names listed in the &#39;outputs&#39; parameter.
void buildOutputHideVariableList(std::set< std::string > variable_names)
Builds hide lists for output objects NOT listed in the &#39;outputs&#39; parameter.
void setReservedValues(const std::string &name, const std::set< std::string > &reserved)
Provide a set of reserved values for a parameter.
const std::set< OutputName > & getOutputNames()
Get a complete set of all output object names.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an option parameter and a documentation string to the InputParameters object...
void addInterfaceHideVariables(const std::string &output_name, const std::set< std::string > &variable_names)
Insert variable names for hiding via the OutoutInterface.
InputParameters validParams< OutputInterface >()
const std::set< OutputName > & getOutputs()
Get the list of output objects that this class is restricted.
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
This method takes a space delimited list of parameter names and adds them to the specified group name...