https://mooseframework.inl.gov
Console.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 "Console.h"
12 #include "ConsoleUtils.h"
13 #include "FEProblem.h"
14 #include "EigenProblem.h"
15 #include "Postprocessor.h"
16 #include "PetscSupport.h"
17 #include "Executioner.h"
18 #include "MooseApp.h"
19 #include "Moose.h"
20 #include "FormattedTable.h"
21 #include "NonlinearSystem.h"
22 #include "CommonOutputAction.h"
23 
24 // libMesh includes
25 #include "libmesh/enum_norm_type.h"
26 
27 using namespace libMesh;
28 
29 registerMooseObject("MooseApp", Console);
30 
33 {
34  // Enum for selecting the fit mode for the table when printed to the screen
36 
37  // Get the parameters from the base class
39  params.addClassDescription("Object for screen output.");
40 
41  params += TableOutput::enableOutputTypes("system_information scalar postprocessor input");
42 
43  addMultiAppFixedPointIterationEndExecFlag(params, "execute_on");
44  addMultiAppFixedPointIterationEndExecFlag(params, "execute_postprocessors_on");
45  addMultiAppFixedPointIterationEndExecFlag(params, "execute_scalars_on");
46 
47  // Screen and file output toggles
48  params.addParam<bool>("output_screen", true, "Output to the screen");
49  params.addParam<bool>("output_file",
50  false,
51  "Output to the file. The default behavior is to write to file only from "
52  "the head processor. If \"--keep-cout\" is passed to the executable, then "
53  "each processor will write to its own file. The same parallel behaviour "
54  "can also be achieved by passing \"--keep-cout --redirect-stdout\" to the "
55  "executable without setting this parameter to true.");
56  params.addParam<bool>(
57  "show_multiapp_name", false, "Indent multiapp output using the multiapp name");
58 
59  // Table fitting options
60  params.addParam<unsigned int>("max_rows",
61  15,
62  "The maximum number of postprocessor/scalar values "
63  "displayed on screen during a timestep (set to 0 "
64  "for unlimited)");
65  params.addParam<MooseEnum>("fit_mode",
66  pps_fit_mode,
67  "Specifies the wrapping mode for post-processor tables that are "
68  "printed to the screen (ENVIRONMENT: Read \"MOOSE_PPS_WIDTH\" for "
69  "desired width (if not set, defaults to AUTO), AUTO: Attempt to "
70  "determine width automatically (serial only), <n>: Desired width");
71 
72  // Verbosity
73  params.addParam<bool>("verbose", false, "Print detailed diagnostics on timestep calculation");
74 
75  // Basic table output controls
76  params.addParam<bool>(
77  "scientific_time", false, "Control the printing of time and dt in scientific notation");
78  params.addParam<unsigned int>(
79  "time_precision",
80  "The number of significant digits that are printed on time related outputs");
81  MooseEnum time_format("plain=0 second=1 minute=2 hour=3 day=4 dtime=5", "plain");
82  params.addParam<MooseEnum>(
83  "time_format",
84  time_format,
85  "The format for the printed times ('dtime' means a format like 1d 01:01:0.1)");
86 
87  // Performance Logging
88  params.addDeprecatedParam<bool>("perf_log",
89  false,
90  "If true, all performance logs will be printed. The "
91  "individual log settings will override this option.",
92  "Use PerfGraphOutput");
93  params.addDeprecatedParam<unsigned int>(
94  "perf_log_interval",
95  0,
96  "If set, the performance log will be printed every n time steps",
97  "Use PerfGraphOutput instead");
98  params.addParam<bool>("solve_log", "Toggles the printing of the 'Moose Test Performance' log");
99  params.addDeprecatedParam<bool>(
100  "perf_header",
101  "Print the libMesh performance log header (requires that 'perf_log = true')",
102  "Use PerfGraphOutput instead");
103 
104  params.addParam<bool>(
105  "libmesh_log",
106  true,
107  "Print the libMesh performance log, requires libMesh to be configured with --enable-perflog");
108 
109  // Toggle printing of mesh information on adaptivity steps
110  params.addParam<bool>("print_mesh_changed_info",
111  false,
112  "When true, each time the mesh is changed the mesh information is printed");
113 
114  // Toggle for printing variable norms
115  params.addParam<bool>("outlier_variable_norms",
116  true,
117  "If true, outlier variable norms will be printed after each solve");
118  params.addParam<bool>(
119  "all_variable_norms", false, "If true, all variable norms will be printed after each solve");
120 
121  // Multipliers for coloring of variable residual norms
122  std::vector<Real> multiplier;
123  multiplier.push_back(0.8);
124  multiplier.push_back(2);
125  params.addParam<std::vector<Real>>("outlier_multiplier",
126  multiplier,
127  "Multiplier utilized to determine if a residual norm is an "
128  "outlier. If the variable residual is less than "
129  "multiplier[0] times the total residual it is colored red. "
130  "If the variable residual is less than multiplier[1] times "
131  "the average residual it is colored yellow.");
132 
133  // System information controls
134  MultiMooseEnum info("framework mesh aux nonlinear linear relationship execution output",
135  "framework mesh aux nonlinear linear execution");
136  params.addParam<MultiMooseEnum>("system_info",
137  info,
138  "List of information types to display "
139  "('framework', 'mesh', 'aux', 'nonlinear', 'relationship', "
140  "'execution', 'output')");
141 
142  // Advanced group
143  params.addParamNamesToGroup("verbose show_multiapp_name system_info", "Advanced");
144 
145  // Performance log group
146  params.addParamNamesToGroup("perf_log solve_log perf_header libmesh_log", "Perf Log");
147 
148  // Variable norms group
149  params.addParamNamesToGroup("outlier_variable_norms all_variable_norms outlier_multiplier",
150  "Variable and Residual Norms");
151 
152  // Number formatting
153  params.addParamNamesToGroup("scientific_time time_precision time_format",
154  "Time output formatting");
155 
156  // Table of postprocessor output formatting
157  params.addParamNamesToGroup("max_rows fit_mode", "Table formatting");
158 
159  /*
160  * The following modifies the default behavior from base class parameters. Notice the extra flag
161  * on
162  * the set method. This enables "quiet mode". This is done to allow for the proper detection
163  * of user-modified parameters
164  */
165  // By default set System Information to output on initial
166  params.set<ExecFlagEnum>("execute_system_information_on", /*quite_mode=*/true) = EXEC_INITIAL;
167 
168  // Change the default behavior of 'execute_on' to included nonlinear iterations and failed
169  // timesteps
170  params.set<ExecFlagEnum>("execute_on", /*quiet_mode=*/true) = {
172 
173  // By default postprocessors and scalar are only output at the end of a timestep
174  params.set<ExecFlagEnum>("execute_postprocessors_on", /*quiet_mode=*/true) = {EXEC_INITIAL,
176  params.set<ExecFlagEnum>("execute_vector_postprocessors_on",
177  /*quiet_mode=*/true) = {EXEC_INITIAL, EXEC_TIMESTEP_END};
178  params.set<ExecFlagEnum>("execute_scalars_on", /*quiet_mode=*/true) = {EXEC_INITIAL,
180  params.set<ExecFlagEnum>("execute_reporters_on", /*quiet_mode=*/true) = {EXEC_INITIAL,
182  return params;
183 }
184 
186  : TableOutput(parameters),
187  _max_rows(getParam<unsigned int>("max_rows")),
188  _fit_mode(getParam<MooseEnum>("fit_mode")),
189  _scientific_time(getParam<bool>("scientific_time")),
190  _write_file(getParam<bool>("output_file")),
191  _write_screen(getParam<bool>("output_screen")),
192  _verbose(getParam<bool>("verbose")),
193  _perf_log(getParam<bool>("perf_log")),
194  _perf_log_interval(getParam<unsigned int>("perf_log_interval")),
195  _solve_log(isParamValid("solve_log") ? getParam<bool>("solve_log") : _perf_log),
196  _libmesh_log(getParam<bool>("libmesh_log")),
197  _perf_header(isParamValid("perf_header") ? getParam<bool>("perf_header") : _perf_log),
198  _all_variable_norms(getParam<bool>("all_variable_norms")),
199  _outlier_variable_norms(getParam<bool>("outlier_variable_norms")),
200  _outlier_multiplier(getParam<std::vector<Real>>("outlier_multiplier")),
201  _precision(isParamValid("time_precision") ? getParam<unsigned int>("time_precision") : 0),
202  _time_format(getParam<MooseEnum>("time_format").getEnum<TimeFormatEnum>()),
203  _write_all_procs_to_files(_app.getParam<bool>("keep_cout")),
204  _console_buffer(_app.getOutputWarehouse().consoleBuffer()),
205  _old_linear_norm(std::numeric_limits<Real>::max()),
206  _old_nonlinear_norm(std::numeric_limits<Real>::max()),
207  _print_mesh_changed_info(getParam<bool>("print_mesh_changed_info")),
208  _system_info_flags(getParam<MultiMooseEnum>("system_info")),
209  _allow_changing_sysinfo_flag(true),
210  _last_message_ended_in_newline(true)
211 {
212  // Apply the special common console flags (print_...)
214  const auto actions = awh.getActions<CommonOutputAction>();
215  mooseAssert(actions.size() <= 1, "Should not be more than one CommonOutputAction");
216  const Action * common = actions.empty() ? nullptr : *actions.begin();
217 
218  if (!parameters.isParamSetByUser("execute_on"))
219  {
220  // Honor the 'print_linear_residuals' option, only if 'linear' has not been set in 'execute_on'
221  // by the user
222  if (common && common->getParam<bool>("print_linear_residuals"))
224  else
225  _execute_on.eraseSetValue("linear");
226  if (common && common->getParam<bool>("print_nonlinear_residuals"))
227  _execute_on.setAdditionalValue("nonlinear");
228  else
229  _execute_on.eraseSetValue("nonlinear");
230  }
231 
232  if (!_pars.isParamSetByUser("perf_log") && common && common->getParam<bool>("print_perf_log"))
233  {
234  _perf_log = true;
235  _solve_log = true;
236  }
237 
238  // Append the common 'execute_on' to the setting for this object
239  // This is unique to the Console object, all other objects inherit from the common options
240  if (common)
241  {
242  const ExecFlagEnum & common_execute_on = common->getParam<ExecFlagEnum>("execute_on");
243  for (auto & mme : common_execute_on)
245  }
246 
247  // If --show-outputs is used, enable it
248  if (_app.getParam<bool>("show_outputs"))
250 }
251 
253 {
254  // Write the libMesh log
255  if (_libmesh_log)
256  write(libMesh::perflog.get_perf_info(), false);
257 
258  // Write the file output stream
260 
261  // Disable logging so that the destructor in libMesh doesn't print
263 }
264 
265 void
267 {
268  // Only allow the main app to change the perf_log settings.
269  if (_app.name() == "main")
270  {
271  // Disable libMesh log
272  if (!_libmesh_log)
274  }
275 
276  // system info flag can be changed only before console initial setup
278 
279  // If execute_on = 'initial' perform the output
280  if (wantOutput("system_information", EXEC_INITIAL))
282 
283  // Call the base class method
285 
286  // If file output is desired, wipe out the existing file if not recovering
287  if (!_app.isRecovering())
288  writeStreamToFile(false);
289 
290  // Enable verbose output if Executioner has it enabled
291  if (_app.getExecutioner()->isParamValid("verbose") &&
292  _app.getExecutioner()->getParam<bool>("verbose"))
293  _verbose = true;
294 
295  // If the user adds "final" to the execute on, append this to the postprocessors, scalars, etc.,
296  // but only
297  // if the parameter (e.g., postprocessor_execute_on) has not been modified by the user.
298  if (_execute_on.isValueSet("final"))
299  {
300  if (!_pars.isParamSetByUser("postprocessor_execute_on"))
301  _advanced_execute_on["postprocessors"].setAdditionalValue("final");
302  if (!_pars.isParamSetByUser("scalars_execute_on"))
303  _advanced_execute_on["scalars"].setAdditionalValue("final");
304  if (!_pars.isParamSetByUser("vector_postprocessor_execute_on"))
305  _advanced_execute_on["vector_postprocessors"].setAdditionalValue("final");
306  }
307 }
308 
309 std::string
311 {
312  std::string file_name;
314  {
315  std::string pid = std::to_string(processor_id());
316  file_name = _file_base + "_" + pid + ".txt";
317  }
318  else
319  file_name = _file_base + ".txt";
320  return file_name;
321 }
322 
323 void
325 {
326  writeTimestepInformation(/*output_dt = */ true);
327 }
328 
329 void
331 {
332  const auto & type = _current_execute_flag;
333 
334  // Return if the current output is not on the desired interval
335  if (type != EXEC_FINAL && !onInterval())
336  return;
337 
338  // Output the system information first; this forces this to be the first item to write by default
339  // However, 'output_system_information_on' still operates correctly, so it may be changed by the
340  // user
341  if (wantOutput("system_information", type) && !(type == EXEC_INITIAL))
343 
344  // Write the input
345  if (wantOutput("input", type))
346  outputInput();
347 
348  // Write the timestep information ("Time Step 0 ..."), this is controlled with "execute_on"
349  // We only write the initial and final here. All of the intermediate outputs will be written
350  // through timestepSetup.
352  writeTimestepInformation(/*output_dt = */ false);
354  {
355  if (wantOutput("postprocessors", type) || wantOutput("scalars", type))
356  _console << "\nFINAL:\n";
357  }
358 
359  // Print Non-linear Residual (control with "execute_on")
361  {
362  if (_nonlinear_iter == 0)
364 
365  _console << std::right << std::setw(2) << _nonlinear_iter
366  << " Nonlinear |R| = " << outputNorm(_old_nonlinear_norm, _norm) << '\n';
367 
369  }
370 
371  // Print Linear Residual (control with "execute_on")
373  {
374  if (_linear_iter == 0)
376 
377  _console << std::right << std::setw(7) << _linear_iter
378  << " Linear |R| = " << outputNorm(_old_linear_norm, _norm) << '\n';
379 
381  }
382 
383  // Write variable norms
384  else if (type == EXEC_TIMESTEP_END)
386 
387  if (wantOutput("postprocessors", type))
389 
390  if (wantOutput("scalars", type))
392 
393  if (wantOutput("reporters", type))
394  outputReporters();
395 
396  // Write the file
398 
399  _console << std::flush;
400 }
401 
402 void
404 {
406  return;
407 
408  // Create the stream
409  std::ofstream output;
410 
411  // Open the file
412  if (append)
413  output.open(filename().c_str(), std::ios::app | std::ios::out);
414  else
415  output.open(filename().c_str(), std::ios::trunc);
416 
417  if (output.fail())
418  mooseError("Unable to open file ", filename());
419 
420  std::string s = _file_output_stream.str();
421  // Write contents of file output stream and close the file
423  output.close();
424 
425  // Clear the file output stream
426  _file_output_stream.str("");
427 }
428 
429 void
431 {
432  // Stream to build the time step information
433  std::stringstream oss;
434 
435  // Write timestep data for transient executioners
436  if (_transient)
437  {
438  // Write time step and time information
439  oss << "\nTime Step " << timeStep();
440  unsigned int time_step_digits = oss.str().length() - 11;
441 
442  // Print the time
443  oss << ", time = " << formatTime(getOutputTime());
444 
445  if (output_dt)
446  {
447  if (!_verbose)
448  // Show the time delta information
449  oss << ", dt = " << std::left << formatTime(dt());
450 
451  // Show old time information, if desired on separate lines
452  else
453  {
454  unsigned int fillsize = 19 + time_step_digits;
455  oss << '\n'
456  << std::right << std::setw(fillsize) << std::setfill(' ') << "old time = " << std::left
457  << formatTime(timeOld()) << '\n';
458 
459  // Show the time delta information
460  oss << std::right << std::setw(fillsize) << std::setfill(' ') << "dt = " << std::left
461  << formatTime(dt()) << '\n';
462 
463  // Show the old time delta information, if desired
464  if (_verbose)
465  oss << std::right << std::setw(fillsize) << std::setfill(' ')
466  << "old dt = " << formatTime(_dt_old) << '\n';
467  }
468  }
469 
470  oss << '\n';
471 
472  // Output to the screen
473  _console << oss.str() << std::flush;
474  }
475 }
476 
477 std::string
478 Console::formatTime(const Real t) const
479 {
480  std::ostringstream oss;
482  {
483  if (_precision > 0)
484  oss << std::setw(_precision) << std::setprecision(_precision) << std::setfill('0')
485  << std::showpoint;
486  if (_scientific_time)
487  oss << std::scientific;
488 
490  oss << t;
492  oss << t << "s";
494  oss << t / 60 << "m";
496  oss << t / 3600 << "h";
497  else if (_time_format == TimeFormatEnum::DAY)
498  oss << t / 86400 << "d";
499  }
500  else
501  {
502  Real abst = t;
503  if (t < 0)
504  {
505  oss << "-";
506  abst = -t;
507  }
508  int days = std::floor(abst / 24 / 3600);
509  int hours = std::floor(abst / 3600 - days * 24);
510  int mins = std::floor(abst / 60 - days * 24 * 60 - hours * 60);
511  Real second = abst - days * 24 * 3600 - hours * 3600 - mins * 60;
512 
513  if (days != 0)
514  oss << days << "d";
515  if (hours != 0 || mins != 0 || second != 0)
516  {
517  if (days != 0)
518  oss << " ";
519  oss << std::setfill('0') << std::setw(2) << hours << ":" << std::setfill('0') << std::setw(2)
520  << mins << ":";
521 
522  if (second < 10)
523  oss << "0";
524  if (_precision > 0)
525  oss << std::setw(_precision) << std::setprecision(_precision) << std::setfill('0')
526  << std::showpoint;
527  if (_scientific_time)
528  oss << std::scientific;
529  oss << second;
530  }
531  else if (days == 0)
532  oss << "0s";
533  }
534  return oss.str();
535 }
536 
537 void
539 {
540  // If all_variable_norms is true, then so should outlier printing
543 
544  // if we are not priting anything, let's not waste time computing the norms below and just exit
545  // this call
546  if ((_all_variable_norms == false) && (_outlier_variable_norms == false))
547  return;
548 
549  // if it is an eigenvalue prolblem, we do not know to define RHS,
550  // and then we do not know how to compute variable norms
551  if (dynamic_cast<EigenProblem *>(_problem_ptr) != nullptr)
552  return;
553 
554  // Flag set when header prints
555  bool header = false;
556 
557  // String stream for variable norm information
558  std::ostringstream oss;
559 
560  for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
561  {
562  // Get a references to the NonlinearSystem and libMesh system
564  System & sys = nl.system();
565 
566  // Storage for norm outputs
567  std::map<std::string, Real> other;
568  std::map<std::string, Real> outlier;
569 
570  // Average norm
571  unsigned int n_vars = sys.n_vars();
572  Real avg_norm = (nl.nonlinearNorm() * nl.nonlinearNorm()) / n_vars;
573 
574  // Compute the norms for each of the variables
575  for (unsigned int i = 0; i < n_vars; i++)
576  {
577  // Compute the norm and extract the variable name
578  Real var_norm = sys.calculate_norm(nl.RHS(), i, DISCRETE_L2);
579  var_norm *= var_norm; // use the norm squared
580  std::string var_name = sys.variable_name(i);
581 
582  // Outlier if the variable norm is greater than twice (default) of the average norm
583  if (_outlier_variable_norms && (var_norm > _outlier_multiplier[1] * avg_norm))
584  {
585  // Print the header
586  if (!header)
587  {
588  oss << "\nOutlier Variable Residual Norms:\n";
589  header = true;
590  }
591 
592  // Set the color, RED if the variable norm is 0.8 (default) of the total norm
593  std::string color = COLOR_YELLOW;
594  if (_outlier_variable_norms && (var_norm > _outlier_multiplier[0] * avg_norm * n_vars))
595  color = COLOR_RED;
596 
597  // Display the residual
598  oss << " " << var_name << ": " << std::scientific << color << std::sqrt(var_norm)
599  << COLOR_DEFAULT << '\n';
600  }
601 
602  // GREEN
603  else if (_all_variable_norms)
604  {
605  // Print the header if it doesn't already exist
606  if (!header)
607  {
608  oss << "\nVariable Residual Norms:\n";
609  header = true;
610  }
611  oss << " " << var_name << ": " << std::scientific << COLOR_GREEN << std::sqrt(var_norm)
612  << COLOR_DEFAULT << '\n';
613  }
614  }
615  }
616 
617  // Update the output streams
618  _console << oss.str() << std::flush;
619 }
620 
621 // Quick helper to output the norm in color
622 std::string
623 Console::outputNorm(const Real & old_norm, const Real & norm, const unsigned int precision)
624 {
625  std::string color = COLOR_GREEN;
626 
627  // Red if the residual went up... or if the norm is nan
628  if (norm != norm || norm > old_norm)
629  color = COLOR_RED;
630  // Yellow if change is less than 5%
631  else if ((old_norm - norm) / old_norm <= 0.05)
632  color = COLOR_YELLOW;
633 
634  std::stringstream oss;
635  oss << std::scientific << std::setprecision(precision) << color << norm << COLOR_DEFAULT;
636 
637  return oss.str();
638 }
639 
640 void
642 {
643  if (!_write_screen && !_write_file)
644  return;
645 
646  std::ostringstream oss;
647  for (const auto & filename : _app.getInputFileNames())
648  oss << "--- " << filename << "\n";
650  _console << oss.str() << std::endl;
651 }
652 
653 void
655 {
657 
659  {
660  std::stringstream oss;
661  oss << "\nPostprocessor Values:\n";
664  _console << oss.str() << std::endl;
665  }
666 }
667 
668 void
670 {
672 
673  if (!_reporter_table.empty())
674  {
675  std::stringstream oss;
676  oss << "\nReporter Values:\n";
679  _console << oss.str() << '\n';
680  }
681 }
682 
683 void
685 {
687 
688  if (!_scalar_table.empty())
689  {
690  std::stringstream oss;
691  oss << "\nScalar Variable Values:\n";
692  if (processor_id() == 0)
693  {
696  }
697  _console << oss.str() << std::endl;
698  }
699 }
700 
701 void
703 {
704  // skip system information output for sub-apps other than the zero-th of a MultiApp
705  // because they are using the same inputs and are most likely having the same information.
706  if (_app.multiAppNumber() > 0)
707  return;
708 
709  if (_system_info_flags.isValueSet("framework"))
711 
712  if (_system_info_flags.isValueSet("mesh"))
714 
715  if (_system_info_flags.isValueSet("nonlinear"))
716  {
717  for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
718  {
720  if (!output.empty())
721  {
722  _console << "Nonlinear System";
724  _console << " [" + _problem_ptr->getNonlinearSystemNames()[i] + "]";
725  _console << ":\n" << output;
726  }
727  }
728  }
729 
730  if (_system_info_flags.isValueSet("linear"))
731  for (const auto i : make_range(_problem_ptr->numLinearSystems()))
732  {
735  if (!output.empty())
736  _console << "Linear System" +
737  (_problem_ptr->numLinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
738  ":\n"
739  << output;
740  }
741 
742  if (_system_info_flags.isValueSet("aux"))
743  {
745  if (!output.empty())
746  _console << "Auxiliary System:\n" << output;
747  }
748 
749  if (_system_info_flags.isValueSet("relationship"))
750  {
752  if (!output.empty())
753  _console << "Relationship Managers:\n" << output;
754  }
755 
756  if (_system_info_flags.isValueSet("execution"))
758 
759  if (_app.getParam<bool>("show_data_paths"))
761 
762  if (_app.getParam<bool>("show_data_params"))
764 
765  if (_system_info_flags.isValueSet("output"))
767 
768  if (!_app.getParam<bool>("use_legacy_initial_residual_evaluation_behavior"))
769  for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
771  {
773  break;
774  }
775 
776  // Output the legacy flags, these cannot be turned off so they become annoying to people.
778 
779  _console << std::flush;
780 }
781 
782 void
784 {
786  {
787  _console << ConsoleUtils::outputMeshInformation(*_problem_ptr, /*verbose = */ false);
788 
789  std::string output;
790  for (const auto i : make_range(_problem_ptr->numNonlinearSystems()))
791  {
793  if (!output.empty())
794  {
795  _console << "Nonlinear System";
797  _console << " [" + _problem_ptr->getNonlinearSystemNames()[i] + "]";
798  _console << ":\n" << output;
799  }
800  }
801 
802  for (const auto i : make_range(_problem_ptr->numLinearSystems()))
803  {
806  if (!output.empty())
807  _console << "Linear System" +
808  (_problem_ptr->numLinearSystems() > 1 ? (" " + std::to_string(i)) : "") +
809  ":\n"
810  << output;
811  }
812 
814  if (!output.empty())
815  _console << "Auxiliary System:\n" << output;
816 
817  _console << std::flush;
818  }
819 }
820 
821 void
822 Console::write(std::string message, bool indent /*=true*/)
823 {
824  // Do nothing if the message is empty, writing empty strings messes with multiapp indenting
825  if (message.empty())
826  return;
827 
828  // Write the message to file
829  if (_write_file)
830  _file_output_stream << message;
831 
832  // The empty case gets the right behavior, even though the boolean is technically wrong
833  bool this_message_ends_in_newline = message.empty() ? true : (message.back() == '\n');
834  bool this_message_starts_with_newline = message.empty() ? true : (message.front() == '\n');
835 
836  // Apply MultiApp indenting
837  if ((this_message_starts_with_newline || _last_message_ended_in_newline) && indent &&
838  _app.multiAppLevel() > 0)
839  MooseUtils::indentMessage(_app.name(), message);
840 
841  // Write message to the screen
842  if (_write_screen)
843  Moose::out << message;
844 
845  _last_message_ended_in_newline = this_message_ends_in_newline;
846 }
847 
848 void
849 Console::mooseConsole(const std::string & message)
850 {
851  // Write the messages
852  write(message);
853 
854  // Flush the stream to the screen
855  Moose::out << std::flush;
856 }
857 
858 void
860 {
861  char c[] = {
862  32, 47, 94, 92, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
863  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
864  32, 32, 32, 32, 32, 32, 32, 47, 94, 92, 13, 10, 124, 32, 32, 32, 92, 95, 47,
865  94, 92, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
866  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 94, 92, 95, 47,
867  32, 32, 32, 124, 13, 10, 124, 32, 32, 32, 32, 32, 32, 32, 32, 92, 95, 47, 94,
868  92, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
869  32, 32, 32, 47, 94, 92, 95, 47, 32, 32, 32, 32, 32, 32, 32, 32, 124, 13, 10,
870  32, 92, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 92, 95, 47, 94, 92,
871  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 94, 92, 95, 47, 32, 32, 32,
872  32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 13, 10, 32, 32, 92, 95, 95, 32, 32,
873  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 92, 95, 95, 95, 45, 45, 45,
874  95, 95, 95, 47, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 95,
875  95, 47, 13, 10, 32, 32, 32, 32, 32, 45, 45, 45, 95, 95, 95, 32, 32, 32, 32,
876  32, 32, 32, 32, 32, 47, 32, 32, 32, 32, 32, 32, 32, 92, 32, 32, 32, 32, 32,
877  32, 32, 32, 32, 95, 95, 95, 45, 45, 45, 13, 10, 32, 32, 32, 32, 32, 32, 32,
878  32, 32, 32, 32, 45, 45, 45, 95, 95, 95, 32, 32, 124, 32, 32, 32, 32, 32, 32,
879  32, 32, 32, 124, 32, 32, 95, 95, 95, 45, 45, 45, 13, 10, 32, 32, 32, 32, 32,
880  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 124, 32, 32, 95, 32,
881  32, 32, 95, 32, 32, 124, 45, 45, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
882  32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 124, 111, 124, 32, 124, 111, 124,
883  32, 32, 124, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
884  32, 32, 32, 47, 32, 32, 32, 32, 45, 32, 32, 32, 45, 32, 32, 32, 32, 92, 13,
885  10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32,
886  32, 32, 32, 32, 32, 95, 95, 95, 32, 32, 32, 32, 32, 32, 124, 13, 10, 32, 32,
887  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 32, 32, 32,
888  45, 45, 32, 32, 32, 45, 45, 32, 32, 32, 32, 32, 92, 13, 10, 32, 32, 32, 32,
889  32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 32, 32, 32, 32, 32, 32, 32,
890  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 92, 13, 10, 32, 32, 32, 32,
891  32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 32, 32, 32, 32, 47, 92, 32,
892  32, 32, 32, 32, 47, 92, 32, 32, 32, 32, 32, 32, 32, 124, 13, 10, 32, 32, 32,
893  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 92, 32, 32, 92, 32, 32, 32, 32, 32,
894  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 47, 13, 10, 32, 32, 32,
895  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 92, 32, 32, 92, 95, 95, 95, 95,
896  95, 95, 95, 95, 95, 95, 95, 95, 32, 47, 32, 32, 47, 92, 13, 10, 32, 32, 32,
897  32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 92, 32, 32, 32, 32, 32, 32,
898  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 92, 13, 10, 32, 32,
899  32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 32, 32, 92, 32, 32, 32, 32,
900  32, 39, 95, 95, 95, 39, 32, 32, 32, 32, 32, 47, 32, 32, 32, 32, 92, 13, 10,
901  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 92, 32, 32, 32, 32, 32, 92, 32,
902  45, 45, 95, 95, 45, 45, 45, 95, 95, 45, 45, 32, 47, 32, 32, 32, 32, 32, 47,
903  92, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 92, 47, 32, 32,
904  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
905  92, 47, 32, 32, 92, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 32,
906  47, 32, 32, 32, 32, 32, 32, 32, 77, 46, 79, 46, 79, 46, 83, 46, 69, 32, 32,
907  32, 32, 32, 32, 32, 92, 32, 32, 32, 92, 13, 10, 32, 32, 32, 32, 32, 32, 32,
908  47, 32, 32, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
909  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 92, 13, 10, 32,
910  32, 32, 32, 32, 32, 124, 32, 32, 32, 32, 124, 45, 45, 45, 45, 45, 45, 45, 45,
911  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 124, 32,
912  32, 32, 32, 124, 13, 10, 32, 32, 32, 32, 32, 32, 32, 92, 32, 32, 32, 32, 92,
913  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
914  32, 32, 32, 32, 47, 32, 32, 32, 32, 47, 13, 10, 32, 32, 32, 32, 32, 32, 32,
915  32, 32, 92, 92, 32, 92, 95, 92, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
916  32, 32, 32, 32, 32, 32, 32, 32, 47, 95, 47, 32, 47, 47, 13, 10, 32, 32, 32,
917  32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 32, 92, 32, 32, 32, 32, 32, 32,
918  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 32, 32, 45, 45, 13, 10, 32,
919  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 45,
920  45, 45, 95, 95, 95, 95, 95, 45, 45, 45, 32, 32, 124, 13, 10, 32, 32, 32, 32,
921  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 32, 32, 124,
922  32, 32, 32, 124, 32, 32, 32, 32, 32, 124, 13, 10, 32, 32, 32, 32, 32, 32, 32,
923  32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 32, 32, 124, 32, 32, 32,
924  124, 32, 32, 32, 32, 32, 124, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
925  32, 32, 32, 32, 32, 47, 32, 86, 32, 32, 32, 32, 32, 92, 32, 47, 32, 32, 32,
926  32, 86, 32, 32, 92, 13, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
927  32, 32, 32, 124, 95, 124, 95, 95, 95, 95, 95, 124, 32, 124, 95, 95, 95, 95, 124,
928  95, 95, 124};
929  Moose::out << std::string(c) << std::endl << std::endl;
930 }
std::string indent(unsigned int spaces)
Create empty string for indenting.
Definition: ConsoleUtils.C:41
std::string formatTime(const Real t) const
A help function to format a time.
Definition: Console.C:478
bool _libmesh_log
Control the display libMesh performance log.
Definition: Console.h:205
const std::vector< NonlinearSystemName > & getNonlinearSystemNames() const
const ExecFlagType EXEC_FAILED
Definition: Moose.C:46
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:21
ExecFlagEnum _execute_on
The common Execution types; this is used as the default execution type for everything except system i...
Definition: Output.h:203
unsigned int _precision
Number of significant digits.
Definition: Console.h:220
void addDeprecatedParam(const std::string &name, const T &value, const std::string &doc_string, const std::string &deprecation_message)
static void petscSetupOutput()
Output string for setting up PETSC output.
Definition: Console.C:859
TimeFormatEnum _time_format
Time format.
Definition: Console.h:223
virtual std::size_t numNonlinearSystems() const override
std::string outputExecutionInformation(const MooseApp &app, FEProblemBase &problem)
Output execution information.
Definition: ConsoleUtils.C:372
MPI_Info info
OutputOnWarehouse _advanced_execute_on
Storage for the individual component execute flags.
Definition: Output.h:280
virtual bool onInterval()
Returns true if the output interval is satisfied.
Definition: Output.C:285
registerMooseObject("MooseApp", Console)
std::string outputAuxiliarySystemInformation(FEProblemBase &problem)
Output the Auxiliary system information.
Definition: ConsoleUtils.C:198
void setAdditionalValue(const std::string &names)
Insert operators Operator to insert (push_back) values into the enum.
virtual Real dt()
Get the current time step size.
Definition: Output.C:371
DISCRETE_L2
Real & _dt_old
Old time step delta.
Definition: Output.h:226
void writeVariableNorms()
Print the L2-norms for each variable.
Definition: Console.C:538
virtual void outputSystemInformation() override
Print system information.
Definition: Console.C:702
MooseEnum _fit_mode
The FormattedTable fit mode.
Definition: Console.h:178
bool _all_variable_norms
Flag for writing all variable norms.
Definition: Console.h:211
An output object for writing to the console (screen)
Definition: Console.h:18
FormattedTable & _postprocessor_table
Table containing postprocessor data.
Definition: TableOutput.h:89
bool _verbose
Flag for writing detailed time step information.
Definition: Console.h:190
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
unsigned int multiAppLevel() const
The MultiApp Level.
Definition: MooseApp.h:835
bool _write_screen
Flag for controlling outputting console information to screen.
Definition: Console.h:187
Storage for action instances.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
std::string _file_base
The base filename from the input paramaters.
Definition: FileOutput.h:89
bool _transient
Transient flag (true = transient)
Definition: Output.h:188
void printInputFile(std::ostream &out)
This method uses the Actions in the warehouse to reproduce the input file.
const ExecFlagType EXEC_TIMESTEP_END
Definition: Moose.C:34
bool empty() const
Returns a boolean value based on whether the FormattedTable contains data or not. ...
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
unsigned int multiAppNumber() const
The MultiApp number.
Definition: MooseApp.h:841
std::string outputOutputInformation(MooseApp &app)
Output the output information.
Definition: ConsoleUtils.C:456
bool _allow_changing_sysinfo_flag
A boolean for protecting _system_info_flags from being changed undesirably.
Definition: Console.h:260
PerfLog perflog("libMesh", #ifdef LIBMESH_ENABLE_PERFORMANCE_LOGGING true #else false #endif)
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
Base class for actions.
Definition: Action.h:33
auto max(const L &left, const R &right)
virtual void output() override
Customizes the order of output for the various components as well as adds additional output such as t...
Definition: Console.C:330
std::string outputMeshInformation(FEProblemBase &problem, bool verbose=true)
Output the mesh information.
Definition: ConsoleUtils.C:97
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
bool _outlier_variable_norms
Flag for writing outlier variable norms.
Definition: Console.h:214
Nonlinear system to be solved.
static MooseEnum getWidthModes()
const bool _write_all_procs_to_files
Whether to write all processors to files.
Definition: Console.h:226
virtual Real timeOld()
Get the old output time.
Definition: Output.C:362
PetscInt _linear_iter
Current linear iteration returned from PETSc.
Definition: PetscOutput.h:87
MultiMooseEnum _system_info_flags
Flags for controlling the what simulations information is shown.
Definition: Console.h:254
virtual std::string filename() override
Creates the output file name Appends the user-supplied &#39;file_base&#39; input parameter with a &#39;...
Definition: Console.C:310
void indentMessage(const std::string &prefix, std::string &message, const char *color=COLOR_CYAN, bool dont_indent_first_line=true, const std::string &post_prefix=": ")
Indents the supplied message given the prefix and color.
Definition: MooseUtils.C:734
virtual void outputPostprocessors() override
Prints the postprocessor table to the screen.
Definition: Console.C:654
unsigned int n_vars
std::string outputDataFilePaths()
Output the registered data paths for searching.
Definition: ConsoleUtils.C:538
bool _solve_log
State for solve performance log.
Definition: Console.h:202
FormattedTable & _scalar_table
Table containing scalar aux variables.
Definition: TableOutput.h:98
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition: Moose.C:35
ExecFlagType _current_execute_flag
Current execute on flag.
Definition: Output.h:211
std::stringstream _file_output_stream
Stream for storing information to be written to a file.
Definition: Console.h:193
void write(std::string message, bool indent=true)
Write message to screen and/or file.
Definition: Console.C:822
virtual void initialSetup() override
Initial setup function Prints the system information, this is done here so that the system informatio...
Definition: Console.C:266
FEProblemBase * _problem_ptr
Pointer the the FEProblemBase object for output object (use this)
Definition: Output.h:185
Real calculate_norm(const NumericVector< Number > &v, unsigned int var, FEMNormType norm_type, std::set< unsigned int > *skip_dimensions=nullptr) const
virtual void timestepSetup() override
Gets called at the beginning of the timestep before this object is asked to do its job...
Definition: Console.C:324
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:33
virtual void outputReporters() override
Populates the tables with Reporter values.
Definition: TableOutput.C:160
ActionWarehouse & actionWarehouse()
Return a writable reference to the ActionWarehouse associated with this app.
Definition: MooseApp.h:240
const std::string & variable_name(const unsigned int i) const
virtual void outputInput() override
Print the input file at the beginning of the simulation.
Definition: Console.C:641
std::string & removeColor(std::string &msg)
remove ANSI escape sequences for terminal color from msg
Definition: MooseUtils.C:718
NonlinearSystemBase & getNonlinearSystemBase(const unsigned int sys_num)
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
bool isValueSet(const std::string &value) const
Methods for seeing if a value is set in the MultiMooseEnum.
virtual void outputScalarVariables() override
Prints the aux scalar variables table to the screen.
Definition: Console.C:684
void mooseConsole(const std::string &message)
Add a message to the output streams.
Definition: Console.C:849
static InputParameters enableOutputTypes(const std::string &names=std::string())
A method for enabling individual output type control.
auto norm(const T &a) -> decltype(std::abs(a))
unsigned int _max_rows
The max number of table rows.
Definition: Console.h:175
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:29
const bool & usePreSMOResidual() const
Whether we are using pre-SMO residual in relative convergence checks.
std::string outputFrameworkInformation(const MooseApp &app)
Outputs framework information.
Definition: ConsoleUtils.C:47
Real _norm
Current norm returned from PETSc.
Definition: PetscOutput.h:81
Real _old_nonlinear_norm
Storage for the old non linear residual (needed for color output and only when used when printing to ...
Definition: Console.h:248
bool _write_file
Flag for controlling outputting console information to a file.
Definition: Console.h:184
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
Definition: MooseApp.C:2127
TimeFormatEnum
Time formatting options.
Definition: Console.h:93
virtual ~Console()
Destructor.
Definition: Console.C:252
virtual void outputPostprocessors() override
Populates the tables with postprocessor values.
Definition: TableOutput.C:109
bool _perf_log
State for all performance logging.
Definition: Console.h:196
bool wantOutput(const std::string &name, const ExecFlagType &type)
Handles logic for determining if a step should be output.
void writeStreamToFile(bool append=true)
Write the file stream to the file.
Definition: Console.C:403
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:31
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
virtual NumericVector< Number > & RHS()=0
std::vector< Real > _outlier_multiplier
Multipliers for coloring variable residual norms (default [2, 0.8])
Definition: Console.h:217
const T & getParam(const std::string &name)
Retrieve a parameter for the object.
Definition: MooseApp.h:1622
void printTable(std::ostream &out, unsigned int last_n_entries=0)
Methods for dumping the table to the stream - either by filename or by stream handle.
virtual void initialSetup()
Call init() method on setup.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static std::string outputNorm(const Real &old_norm, const Real &norm, const unsigned int precision=6)
A helper function for outputting norms in color.
Definition: Console.C:623
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template * sqrt(_arg)) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(tanh
static InputParameters validParams()
Definition: Console.C:32
Real nonlinearNorm() const
Return the last nonlinear norm.
void meshChanged() override
Performs console related printing when the mesh is changed.
Definition: Console.C:783
Real _old_linear_norm
Storage for the old linear residual (needed for color output and only when used when printing to the ...
Definition: Console.h:245
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
Base class for scalar variables and postprocessors output objects.
Definition: TableOutput.h:28
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump...
const InputParameters & parameters() const
Get the parameters of the object.
bool _scientific_time
Toggle for outputting time in time and dt in scientific notation.
Definition: Console.h:181
FormattedTable & _reporter_table
Table containing Real Reporter values.
Definition: TableOutput.h:101
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object...
const std::vector< std::string > & getInputFileNames() const
Definition: MooseApp.C:1665
std::string outputPreSMOResidualInformation()
Output the information about pre-SMO residual evaluation.
Definition: ConsoleUtils.C:485
virtual std::size_t numLinearSystems() const override
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type...
std::string outputDataFileParams(MooseApp &app)
Output the (param path = value) pairs for each DataFileName parameter.
Definition: ConsoleUtils.C:548
void sortColumns()
Sorts columns alphabetically.
std::string outputLegacyInformation(MooseApp &app)
Output the legacy flag information.
Definition: ConsoleUtils.C:502
unsigned int n_vars() const
virtual int timeStep()
Get the current time step.
Definition: Output.C:389
std::vector< const T * > getActions()
Retrieve all actions in a specific type ordered by their names.
processor_id_type processor_id() const
std::string outputRelationshipManagerInformation(const MooseApp &app)
Output action RelationshipManager information.
Definition: ConsoleUtils.C:352
void writeTimestepInformation(bool output_dt)
Prints the time step information for the screen output.
Definition: Console.C:430
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition: MooseApp.C:1811
bool _print_mesh_changed_info
Flag for printing mesh information when the mesh changes.
Definition: Console.h:251
const ExecFlagType EXEC_FINAL
Definition: Moose.C:44
virtual Real getOutputTime()
Get the time that will be used for stream/file outputting.
Definition: PetscOutput.C:273
void ErrorVector unsigned int
bool _last_message_ended_in_newline
Definition: Console.h:262
virtual void outputReporters() override
Prints the Reporter values to the screen.
Definition: Console.C:669
Meta-action for creating common output object parameters This action serves two purpose, first it adds common output object parameters.
void eraseSetValue(const std::string &names)
Un-assign, or unset a value.
virtual void outputScalarVariables() override
Populates the tables with scalar aux variables.
Definition: TableOutput.C:222
void disable_logging()
PetscInt _nonlinear_iter
Current non-linear iteration returned from PETSc.
Definition: PetscOutput.h:84
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...
Console(const InputParameters &parameters)
Class constructor.
Definition: Console.C:185
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28
virtual libMesh::System & system() override
Get the reference to the libMesh system.
std::string outputSolverSystemInformation(FEProblemBase &problem, const unsigned int solver_sys_num)
Output a solver system information.
Definition: ConsoleUtils.C:335
static InputParameters validParams()
Definition: TableOutput.C:26