26 if (
name.find(
"::") != std::string::npos)
27 mooseError(
"The object name may not contain '::' in the name: ",
name);
30 std::shared_ptr<InputParameters> ptr = std::make_shared<InputParameters>(parameters);
32 auto base = ptr->get<std::string>(
"_moose_base");
47 base !=
"MooseVariableBase" && base !=
"Action")
50 "' object already exists with the name '",
56 std::pair<
MooseObjectName, std::shared_ptr<InputParameters>>(unique_name, ptr));
59 std::vector<MooseObjectName> object_names;
60 object_names.push_back(unique_name);
63 if (ptr->isParamValid(
"control_tags"))
65 const std::vector<std::string> & tags = ptr->get<std::vector<std::string>>(
"control_tags");
66 for (
const auto & tag : tags)
73 object_names.emplace_back(tag, short_name);
81 const std::string & pname = map_iter->first;
84 if (ptr->isControllable(pname))
85 for (
const auto & object_name : object_names)
89 param_name,
value, ptr->getControllableExecuteOnTypes(pname)));
94 std::stringstream oss;
97 ptr->addPrivateParam<std::string>(
"_unique_name", oss.str());
98 ptr->addPrivateParam<std::string>(
"_object_name",
name);
99 ptr->addPrivateParam<
THREAD_ID>(
"_tid", tid);
102 ptr->allowCopy(
false);
113 auto moose_object_name_string = moose_object.
parameters().
get<std::string>(
"_unique_name");
126 const std::string & name,
147 const std::string & name,
160 mooseError(
"Unknown InputParameters object ", object_name);
163 return *(iter->second.get());
166 const std::multimap<MooseObjectName, std::shared_ptr<InputParameters>> &
176 bool error_on_empty )
181 if (primaries.empty() && error_on_empty && tid == 0)
182 mooseError(
"Unable to locate primary parameter with name ", primary);
183 else if (primaries.empty())
193 if (secondaries.empty() && error_on_empty && tid == 0)
194 mooseError(
"Unable to locate secondary parameter with name ", secondary);
195 else if (secondaries.empty())
198 for (
auto primary_ptr : primaries)
199 for (
auto secondary_ptr : secondaries)
200 if (primary_ptr != secondary_ptr)
201 primary_ptr->connect(secondary_ptr);
211 std::vector<ControllableItem *> secondaries =
213 for (
auto secondary_ptr : secondaries)
229 if (secondaries.empty() && tid == 0)
230 mooseError(
"Unable to locate secondary parameter with name ", secondary);
232 for (
auto secondary_ptr : secondaries)
234 std::make_unique<ControllableAlias>(alias, secondary_ptr));
238 std::vector<ControllableItem *>
242 std::vector<ControllableItem *> output;
244 if (ptr->name() == input)
245 output.push_back(ptr.get());
255 if ((*it)->name() == input)
256 cparam.
add(it->get());
263 std::stringstream oss;
267 if (item->isChanged())
269 oss << item->dump(4);
271 item->resetChanged();
276 std::vector<MooseObjectParameterName>
279 std::vector<MooseObjectParameterName> names;
282 if ((*it)->name() == input)
283 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