Skip to content

Commit

Permalink
Add linear system summary output to header and mesh-changed console o…
Browse files Browse the repository at this point in the history
…utput

closes idaholab#29790
  • Loading branch information
GiudGiud committed Feb 1, 2025
1 parent ed9535a commit 493ed5d
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 9 deletions.
6 changes: 3 additions & 3 deletions framework/include/outputs/ConsoleUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ std::string outputMeshInformation(FEProblemBase & problem, bool verbose = true);
std::string outputAuxiliarySystemInformation(FEProblemBase & problem);

/**
* Output the Nonlinear system information
* Output a solver system information
*/
std::string outputNonlinearSystemInformation(FEProblemBase & problem,
const unsigned int nl_sys_num);
std::string outputSolverSystemInformation(FEProblemBase & problem,
const unsigned int solver_sys_num);

/**
* Output action RelationshipManager information
Expand Down
33 changes: 29 additions & 4 deletions framework/src/outputs/Console.C
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ Console::validParams()
"the average residual it is colored yellow.");

// System information controls
MultiMooseEnum info("framework mesh aux nonlinear relationship execution output",
"framework mesh aux nonlinear execution");
MultiMooseEnum info("framework mesh aux nonlinear linear relationship execution output",
"framework mesh aux nonlinear linear execution");
params.addParam<MultiMooseEnum>("system_info",
info,
"List of information types to display "
Expand Down Expand Up @@ -712,7 +712,7 @@ Console::outputSystemInformation()
{
for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
{
std::string output = ConsoleUtils::outputNonlinearSystemInformation(*_problem_ptr, i);
std::string output = ConsoleUtils::outputSolverSystemInformation(*_problem_ptr, i);
if (!output.empty())
_console << "Nonlinear System" +
(_problem_ptr->numNonlinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
Expand All @@ -721,6 +721,20 @@ Console::outputSystemInformation()
}
}

if (_system_info_flags.isValueSet("linear"))
{
for (const auto i : make_range(_problem_ptr->numLinearSystems()))
{
std::string output = ConsoleUtils::outputSolverSystemInformation(
*_problem_ptr, _problem_ptr->numNonlinearSystems() + i);
if (!output.empty())
_console << "Linear System" +
(_problem_ptr->numLinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
":\n"
<< output;
}
}

if (_system_info_flags.isValueSet("aux"))
{
std::string output = ConsoleUtils::outputAuxiliarySystemInformation(*_problem_ptr);
Expand Down Expand Up @@ -771,14 +785,25 @@ Console::meshChanged()
std::string output;
for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
{
output = ConsoleUtils::outputNonlinearSystemInformation(*_problem_ptr, i);
output = ConsoleUtils::outputSolverSystemInformation(*_problem_ptr, i);
if (!output.empty())
_console << "Nonlinear System" +
(_problem_ptr->numNonlinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
":\n"
<< output;
}

for (const auto i : make_range(_problem_ptr->numLinearSystems()))
{
output = ConsoleUtils::outputSolverSystemInformation(*_problem_ptr,
_problem_ptr->numNonlinearSystems() + i);
if (!output.empty())
_console << "Linear System" +
(_problem_ptr->numLinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
":\n"
<< output;
}

output = ConsoleUtils::outputAuxiliarySystemInformation(*_problem_ptr);
if (!output.empty())
_console << "Auxiliary System:\n" << output;
Expand Down
4 changes: 2 additions & 2 deletions framework/src/outputs/ConsoleUtils.C
Original file line number Diff line number Diff line change
Expand Up @@ -317,12 +317,12 @@ outputSystemInformationHelper(std::stringstream & oss, System & system)
}

std::string
outputNonlinearSystemInformation(FEProblemBase & problem, const unsigned int nl_sys_num)
outputSolverSystemInformation(FEProblemBase & problem, const unsigned int sys_num)
{
std::stringstream oss;
oss << std::left;

return outputSystemInformationHelper(oss, problem.getNonlinearSystemBase(nl_sys_num).system());
return outputSystemInformationHelper(oss, problem.getSolverSystem(sys_num).system());
}

std::string
Expand Down

0 comments on commit 493ed5d

Please sign in to comment.