Skip to content

Commit

Permalink
Add a verbose setup option to the Problem
Browse files Browse the repository at this point in the history
  • Loading branch information
GiudGiud authored and pbehne committed Dec 1, 2023
1 parent 49c3152 commit b55d30a
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 5 deletions.
9 changes: 9 additions & 0 deletions framework/include/problems/FEProblemBase.h
Expand Up @@ -590,6 +590,11 @@ class FEProblemBase : public SubProblem, public Restartable
*/
Moose::PetscSupport::PetscOptions & getPetscOptions() { return _petsc_options; }

/**
* Output information about the object just added to the problem
*/
void logAdd(const std::string & system, const std::string & name, const std::string & type) const;

// Function /////
virtual void
addFunction(const std::string & type, const std::string & name, InputParameters & parameters);
Expand Down Expand Up @@ -2421,6 +2426,9 @@ class FEProblemBase : public SubProblem, public Restartable
/// Whether or not information about how many transfers have completed is printed
bool _parallel_barrier_messaging;

/// Whether or not to be verbose during setup
const bool _verbose_setup;

/// Whether or not to be verbose with multiapps
const bool _verbose_multiapps;

Expand Down Expand Up @@ -2630,6 +2638,7 @@ FEProblemBase::addObject(const std::string & type,
{
parallel_object_only();

logAdd(MooseUtils::prettyCppType<T>(), name, type);
// Add the _subproblem and _sys parameters depending on use_displaced_mesh
addObjectParamsHelper(parameters, name, var_param_name);

Expand Down
49 changes: 44 additions & 5 deletions framework/src/problems/FEProblemBase.C
Expand Up @@ -228,6 +228,8 @@ FEProblemBase::validParams()
"or transferring to/from Multiapps "
"(default: false)");

params.addParam<bool>(
"verbose_setup", false, "Set to True to have the problem report on any object created");
params.addParam<bool>("verbose_multiapps",
false,
"Set to True to enable verbose screen printing related to MultiApps");
Expand Down Expand Up @@ -291,7 +293,8 @@ FEProblemBase::validParams()
"Nonlinear system(s)");
params.addParamNamesToGroup(
"restart_file_base force_restart allow_initial_conditions_with_restart", "Restart");
params.addParamNamesToGroup("verbose_multiapps parallel_barrier_messaging", "Verbosity");
params.addParamNamesToGroup("verbose_setup verbose_multiapps parallel_barrier_messaging",
"Verbosity");
params.addParamNamesToGroup(
"null_space_dimension transpose_null_space_dimension near_null_space_dimension",
"Null space removal");
Expand Down Expand Up @@ -374,6 +377,7 @@ FEProblemBase::FEProblemBase(const InputParameters & parameters)
_has_time_integrator(false),
_has_exception(false),
_parallel_barrier_messaging(getParam<bool>("parallel_barrier_messaging")),
_verbose_setup(getParam<bool>("verbose_setup")),
_verbose_multiapps(getParam<bool>("verbose_multiapps")),
_current_execute_on_flag(EXEC_NONE),
_control_warehouse(_app.getExecuteOnEnum(), /*threaded=*/false),
Expand Down Expand Up @@ -2216,6 +2220,7 @@ FEProblemBase::addFunction(const std::string & type,
for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
{
std::shared_ptr<Function> func = _factory.create<Function>(type, name, parameters, tid);
logAdd("Function", type, name);
_functions.addObject(func, tid);

if (auto * const functor = dynamic_cast<Moose::FunctorBase<Real> *>(func.get()))
Expand Down Expand Up @@ -2412,6 +2417,7 @@ FEProblemBase::addVariable(const std::string & var_type,
if (!(ss >> nl_sys_num) || !ss.eof())
nl_sys_num = libmesh_map_find(_nl_sys_name_to_num, nl_sys_name);

logAdd("Variable", var_name, var_type);
_nl[nl_sys_num]->addVariable(var_type, var_name, params);
if (_displaced_problem)
// MooseObjects need to be unique so change the name here
Expand Down Expand Up @@ -2478,6 +2484,7 @@ FEProblemBase::addKernel(const std::string & kernel_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("Kernel", name, kernel_name);
_nl[nl_sys_num]->addKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2511,6 +2518,7 @@ FEProblemBase::addNodalKernel(const std::string & kernel_name,
parameters.set<SubProblem *>("_subproblem") = this;
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}
logAdd("NodalKernel", name, kernel_name);
_nl[nl_sys_num]->addNodalKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2544,6 +2552,7 @@ FEProblemBase::addScalarKernel(const std::string & kernel_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("ScalarKernel", name, kernel_name);
_nl[nl_sys_num]->addScalarKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2578,6 +2587,7 @@ FEProblemBase::addBoundaryCondition(const std::string & bc_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("BoundaryCondition", name, bc_name);
_nl[nl_sys_num]->addBoundaryCondition(bc_name, name, parameters);
}

Expand Down Expand Up @@ -2627,6 +2637,7 @@ FEProblemBase::addConstraint(const std::string & c_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("Constraint", name, c_name);
_nl[nl_sys_num]->addConstraint(c_name, name, parameters);
}

Expand All @@ -2646,6 +2657,7 @@ FEProblemBase::addAuxVariable(const std::string & var_type,
params.set<FEProblemBase *>("_fe_problem_base") = this;
params.set<Moose::VarKindType>("_var_kind") = Moose::VarKindType::VAR_AUXILIARY;

logAdd("AuxVariable", var_name, var_type);
_aux->addVariable(var_type, var_name, params);
if (_displaced_problem)
// MooseObjects need to be unique so change the name here
Expand Down Expand Up @@ -2684,6 +2696,7 @@ FEProblemBase::addAuxVariable(const std::string & var_name,
for (const SubdomainID & id : *active_subdomains)
params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));

logAdd("AuxVariable", var_name, var_type);
_aux->addVariable(var_type, var_name, params);
if (_displaced_problem)
_displaced_problem->addAuxVariable("MooseVariable", var_name, params);
Expand Down Expand Up @@ -2713,6 +2726,7 @@ FEProblemBase::addAuxArrayVariable(const std::string & var_name,
for (const SubdomainID & id : *active_subdomains)
params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));

logAdd("Variable", var_name, "ArrayMooseVariable");
_aux->addVariable("ArrayMooseVariable", var_name, params);
if (_displaced_problem)
_displaced_problem->addAuxVariable("ArrayMooseVariable", var_name, params);
Expand Down Expand Up @@ -2746,6 +2760,7 @@ FEProblemBase::addAuxScalarVariable(const std::string & var_name,
for (const SubdomainID & id : *active_subdomains)
params.set<std::vector<SubdomainName>>("block").push_back(Moose::stringify(id));

logAdd("ScalarVariable", var_name, "MooseVariableScalar");
_aux->addVariable("MooseVariableScalar", var_name, params);
if (_displaced_problem)
_displaced_problem->addAuxVariable("MooseVariableScalar", var_name, params);
Expand Down Expand Up @@ -2785,6 +2800,7 @@ FEProblemBase::addAuxKernel(const std::string & kernel_name,
parameters.set<SystemBase *>("_nl_sys") = _nl[0].get();
}

logAdd("AuxKernel", name, kernel_name);
_aux->addKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2816,6 +2832,7 @@ FEProblemBase::addAuxScalarKernel(const std::string & kernel_name,
parameters.set<SystemBase *>("_sys") = _aux.get();
}

logAdd("AuxScalarKernel", name, kernel_name);
_aux->addScalarKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2850,6 +2867,7 @@ FEProblemBase::addDiracKernel(const std::string & kernel_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("DiracKernel", name, kernel_name);
_nl[nl_sys_num]->addDiracKernel(kernel_name, name, parameters);
}

Expand Down Expand Up @@ -2887,6 +2905,7 @@ FEProblemBase::addDGKernel(const std::string & dg_kernel_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("DGKernel", name, dg_kernel_name);
_nl[nl_sys_num]->addDGKernel(dg_kernel_name, name, parameters);

_has_internal_edge_residual_objects = true;
Expand Down Expand Up @@ -2959,6 +2978,7 @@ FEProblemBase::addInterfaceKernel(const std::string & interface_kernel_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();
}

logAdd("InterfaceKernel", name, interface_kernel_name);
_nl[nl_sys_num]->addInterfaceKernel(interface_kernel_name, name, parameters);

_has_internal_edge_residual_objects = true;
Expand Down Expand Up @@ -3032,6 +3052,7 @@ FEProblemBase::addInitialCondition(const std::string & ic_name,
mooseError("Your FE variable in initial condition ",
name,
" must be either of scalar or vector type");
logAdd("IC", name, ic_name);
_ics.addObject(ic, tid);
}
}
Expand All @@ -3043,6 +3064,7 @@ FEProblemBase::addInitialCondition(const std::string & ic_name,
parameters.set<SystemBase *>("_sys") = &var.sys();
std::shared_ptr<ScalarInitialCondition> ic =
_factory.create<ScalarInitialCondition>(ic_name, name, parameters);
logAdd("ScalarIC", name, ic_name);
_scalar_ics.addObject(ic);
}

Expand Down Expand Up @@ -3274,7 +3296,7 @@ FEProblemBase::addFunctorMaterial(const std::string & functor_material_name,
// Create the general Block/Boundary MaterialBase object
std::shared_ptr<MaterialBase> material =
_factory.create<MaterialBase>(functor_material_name, name, parameters, tid);

logAdd("FunctorMaterial", name, functor_material_name);
_all_materials.addObject(material, tid);
_materials.addObject(material, tid);
}
Expand Down Expand Up @@ -3339,7 +3361,7 @@ FEProblemBase::addMaterialHelper(std::vector<MaterialWarehouse *> warehouses,
// Create the general Block/Boundary MaterialBase object
std::shared_ptr<MaterialBase> material =
_factory.create<MaterialBase>(mat_name, name, parameters, tid);

logAdd("Material", name, mat_name);
bool discrete = !material->getParam<bool>("compute");

// If the object is boundary restricted or if it is a functor material we do not create the
Expand Down Expand Up @@ -3638,6 +3660,15 @@ FEProblemBase::swapBackMaterialsNeighbor(const THREAD_ID tid)
_neighbor_material_props.getMaterialData(tid).swapBack(*neighbor, neighbor_side);
}

void
FEProblemBase::logAdd(const std::string & system,
const std::string & name,
const std::string & type) const
{
if (_verbose_setup)
_console << "[DBG] Adding " << system << " '" << name << "' of type " << type << std::endl;
}

void
FEProblemBase::addObjectParamsHelper(InputParameters & parameters,
const std::string & object_name,
Expand Down Expand Up @@ -3727,6 +3758,7 @@ FEProblemBase::addUserObject(const std::string & user_object_name,
// Create the UserObject
std::shared_ptr<UserObject> user_object =
_factory.create<UserObject>(user_object_name, name, parameters, tid);
logAdd("UserObject", name, user_object_name);
uos.push_back(user_object);

if (tid != 0)
Expand Down Expand Up @@ -4595,6 +4627,7 @@ FEProblemBase::addDamper(const std::string & damper_name,
parameters.set<SystemBase *>("_sys") = _nl[nl_sys_num].get();

_has_dampers = true;
logAdd("Damper", name, damper_name);
_nl[nl_sys_num]->addDamper(damper_name, name, parameters);
}

Expand Down Expand Up @@ -4638,7 +4671,7 @@ FEProblemBase::addIndicator(const std::string & indicator_name,
{
std::shared_ptr<Indicator> indicator =
_factory.create<Indicator>(indicator_name, name, parameters, tid);

logAdd("Indicator", name, indicator_name);
std::shared_ptr<InternalSideIndicator> isi =
std::dynamic_pointer_cast<InternalSideIndicator>(indicator);
if (isi)
Expand Down Expand Up @@ -4680,6 +4713,7 @@ FEProblemBase::addMarker(const std::string & marker_name,
for (THREAD_ID tid = 0; tid < libMesh::n_threads(); tid++)
{
std::shared_ptr<Marker> marker = _factory.create<Marker>(marker_name, name, parameters, tid);
logAdd("Marker", name, marker_name);
_markers.addObject(marker, tid);
}
}
Expand Down Expand Up @@ -4717,7 +4751,7 @@ FEProblemBase::addMultiApp(const std::string & multi_app_name,
}

std::shared_ptr<MultiApp> multi_app = _factory.create<MultiApp>(multi_app_name, name, parameters);

logAdd("MultiApp", name, multi_app_name);
multi_app->setupPositions();

_multi_apps.addObject(multi_app);
Expand Down Expand Up @@ -5083,6 +5117,7 @@ FEProblemBase::addTransfer(const std::string & transfer_name,

// Create the Transfer objects
std::shared_ptr<Transfer> transfer = _factory.create<Transfer>(transfer_name, name, parameters);
logAdd("Transfer", name, transfer_name);

// Add MultiAppTransfer object
std::shared_ptr<MultiAppTransfer> multi_app_transfer =
Expand Down Expand Up @@ -6009,6 +6044,7 @@ FEProblemBase::addTimeIntegrator(const std::string & type,
parallel_object_only();

parameters.set<SubProblem *>("_subproblem") = this;
logAdd("TimeIntegrator", name, type);
_aux->addTimeIntegrator(type, name + ":aux", parameters);
for (auto & nl : _nl)
nl->addTimeIntegrator(type, name + ":" + nl->name(), parameters);
Expand Down Expand Up @@ -6040,6 +6076,8 @@ FEProblemBase::addPredictor(const std::string & type,

parameters.set<SubProblem *>("_subproblem") = this;
std::shared_ptr<Predictor> predictor = _factory.create<Predictor>(type, name, parameters);
logAdd("Predictor", name, type);

for (auto & nl : _nl)
nl->setPredictor(predictor);
}
Expand Down Expand Up @@ -7972,6 +8010,7 @@ FEProblemBase::addOutput(const std::string & object_type,

// Create the object and add it to the warehouse
std::shared_ptr<Output> output = _factory.create<Output>(object_type, object_name, parameters);
logAdd("Output", object_name, object_type);
output_warehouse.addOutput(output);
}

Expand Down

0 comments on commit b55d30a

Please sign in to comment.