www.mooseframework.org
VariableResidualNormsDebugOutput.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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
12 #include "FEProblem.h"
13 #include "MooseApp.h"
14 #include "Material.h"
15 #include "NonlinearSystemBase.h"
16 
17 // libMesh includes
18 #include "libmesh/transient_system.h"
19 #include "libmesh/enum_norm_type.h"
20 
22 
24 
27 {
29  params.addClassDescription("Reports the residual norm for each variable.");
30 
31  // By default this outputs on every nonlinear iteration
32  params.set<ExecFlagEnum>("execute_on") = EXEC_NONLINEAR;
33  params.suppressParameter<ExecFlagEnum>("execute_on");
34  return params;
35 }
36 
38  const InputParameters & parameters)
39  : PetscOutput(parameters), _sys(_problem_ptr->getNonlinearSystemBase().system())
40 {
41 }
42 
43 void
45 {
46  // Stream for outputting
47  std::ostringstream oss;
48 
49  // Determine the maximum variable name size
50  unsigned int max_name_size = 0;
51  for (unsigned int var_num = 0; var_num < _sys.n_vars(); var_num++)
52  {
53  unsigned int var_name_size = _sys.variable_name(var_num).size();
54  if (var_name_size > max_name_size)
55  max_name_size = var_name_size;
56  }
57 
58  // Perform the output of the variable residuals
59  oss << " |residual|_2 of individual variables:\n";
60  for (unsigned int var_num = 0; var_num < _sys.n_vars(); var_num++)
61  {
62  Real var_res_id =
63  _sys.calculate_norm(_problem_ptr->getNonlinearSystemBase().RHS(), var_num, DISCRETE_L2);
64  oss << std::setw(27 - max_name_size) << " "
65  << std::setw(max_name_size + 2) // match position of overall NL residual
66  << std::left << _sys.variable_name(var_num) + ":" << var_res_id << "\n";
67  }
68 
69  _console << oss.str() << std::flush;
70 }
VariableResidualNormsDebugOutput::_sys
System & _sys
Reference to libMesh system.
Definition: VariableResidualNormsDebugOutput.h:46
NonlinearSystemBase.h
FEProblem.h
Output::_problem_ptr
FEProblemBase * _problem_ptr
Pointer the the FEProblemBase object for output object (use this)
Definition: Output.h:169
registerMooseObject
registerMooseObject("MooseApp", VariableResidualNormsDebugOutput)
VariableResidualNormsDebugOutput.h
EXEC_NONLINEAR
const ExecFlagType EXEC_NONLINEAR
VariableResidualNormsDebugOutput::validParams
static InputParameters validParams()
Definition: VariableResidualNormsDebugOutput.C:26
PetscOutput::validParams
static InputParameters validParams()
Definition: PetscOutput.C:21
ConsoleStreamInterface::_console
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
Definition: ConsoleStreamInterface.h:31
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
InputParameters::set
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Definition: InputParameters.h:987
MooseApp.h
PetscOutput
Adds the ability to output on every nonlinear and/or linear residual.
Definition: PetscOutput.h:24
InputParameters::addClassDescription
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.
Definition: InputParameters.C:70
MooseEnumItem
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:21
defineLegacyParams
defineLegacyParams(VariableResidualNormsDebugOutput)
NonlinearSystemBase::RHS
virtual NumericVector< Number > & RHS()=0
InputParameters::suppressParameter
void suppressParameter(const std::string &name)
This method suppresses an inherited parameter so that it isn't required or valid in the derived class...
Definition: InputParameters.h:1367
VariableResidualNormsDebugOutput::output
virtual void output(const ExecFlagType &type) override
Perform the debugging output.
Definition: VariableResidualNormsDebugOutput.C:44
VariableResidualNormsDebugOutput::VariableResidualNormsDebugOutput
VariableResidualNormsDebugOutput(const InputParameters &parameters)
Class constructor.
Definition: VariableResidualNormsDebugOutput.C:37
system
nl system()
Definition: PetscDMMoose.C:1287
FEProblemBase::getNonlinearSystemBase
NonlinearSystemBase & getNonlinearSystemBase()
Definition: FEProblemBase.h:560
ExecFlagEnum
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:24
VariableResidualNormsDebugOutput
A class for producing various debug related outputs.
Definition: VariableResidualNormsDebugOutput.h:28
Material.h