25 if (
name.find(
"::") != std::string::npos)
26 mooseError(
"The object name may not contain '::' in the name: ",
name);
29 std::shared_ptr<InputParameters> ptr = std::make_shared<InputParameters>(parameters);
31 auto base = ptr->get<std::string>(
"_moose_base");
46 base !=
"MooseVariableBase" && base !=
"Action")
49 "' object already exists with the name '",
55 std::pair<
MooseObjectName, std::shared_ptr<InputParameters>>(unique_name, ptr));
58 std::vector<MooseObjectName> object_names;
59 object_names.push_back(unique_name);
62 if (ptr->isParamValid(
"control_tags"))
64 const std::vector<std::string> & tags = ptr->get<std::vector<std::string>>(
"control_tags");
65 for (
const auto & tag : tags)
72 object_names.emplace_back(tag, short_name);
80 const std::string & pname = map_iter->first;
83 if (ptr->isControllable(pname))
84 for (
const auto & object_name : object_names)
88 param_name,
value, ptr->getControllableExecuteOnTypes(pname)));
93 std::stringstream oss;
96 ptr->addPrivateParam<std::string>(
"_unique_name", oss.str());
97 ptr->addPrivateParam<std::string>(
"_object_name",
name);
98 ptr->addPrivateParam<
THREAD_ID>(
"_tid", tid);
101 ptr->allowCopy(
false);
110 auto moose_object_name_string = moose_object.
parameters().
get<std::string>(
"_unique_name");
123 const std::string & name,
144 const std::string & name,
157 mooseError(
"Unknown InputParameters object ", object_name);
160 return *(iter->second.get());
163 const std::multimap<MooseObjectName, std::shared_ptr<InputParameters>> &
173 bool error_on_empty )
178 if (primaries.empty() && error_on_empty && tid == 0)
179 mooseError(
"Unable to locate primary parameter with name ", primary);
180 else if (primaries.empty())
190 if (secondaries.empty() && error_on_empty && tid == 0)
191 mooseError(
"Unable to locate secondary parameter with name ", secondary);
192 else if (secondaries.empty())
195 for (
auto primary_ptr : primaries)
196 for (
auto secondary_ptr : secondaries)
197 if (primary_ptr != secondary_ptr)
198 primary_ptr->connect(secondary_ptr);
208 std::vector<ControllableItem *> secondaries =
210 for (
auto secondary_ptr : secondaries)
226 if (secondaries.empty() && tid == 0)
227 mooseError(
"Unable to locate secondary parameter with name ", secondary);
229 for (
auto secondary_ptr : secondaries)
231 std::make_unique<ControllableAlias>(alias, secondary_ptr));
235 std::vector<ControllableItem *>
239 std::vector<ControllableItem *> output;
241 if (ptr->name() == input)
242 output.push_back(ptr.get());
252 if ((*it)->name() == input)
253 cparam.
add(it->get());
260 std::stringstream oss;
264 if (item->isChanged())
266 oss << item->dump(4);
268 item->resetChanged();
273 std::vector<MooseObjectParameterName>
276 std::vector<MooseObjectParameterName> names;
279 if ((*it)->name() == input)
280 names.push_back((*it)->name());
std::string name(const ElemQuality q)
const std::string & name() const
Return the name.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
The ControllableParameter class is simply a set of ControllableItem objects.
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
std::string shortName(const std::string &name)
Function for stripping name after the file / in parser block.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
Every object that can be built by the factory should be derived from this class.
void add(ControllableItem *item)
Adds the supplied item with the other items within this object.
const InputParameters & parameters() const
Get the parameters of the object.
A class for storing an input parameter name.
A class for storing the names of MooseObject by tag and object name.
map_type::iterator iterator