www.mooseframework.org
MaxIncrement.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 #include "MaxIncrement.h"
11 
13 
16 {
19  "max_increment", "max_increment > 0", "The maximum newton increment for the variable.");
20  MooseEnum increment_type("absolute fractional", "absolute");
21  params.addParam<MooseEnum>(
22  "increment_type",
23  increment_type,
24  "Type of increment to compare against max_increment. 'absolute': use variable increment. "
25  "'fractional': use variable increment divided by the variable value.");
26 
27  params.addClassDescription("Limits a variable's update by some max fraction");
28 
29  return params;
30 }
31 
33  : ElementDamper(parameters),
34  _max_increment(parameters.get<Real>("max_increment")),
35  _increment_type(getParam<MooseEnum>("increment_type").getEnum<IncrementTypeEnum>())
36 {
37 }
38 
39 Real
41 {
42  Real inc = std::abs(_u_increment[_qp]);
44  inc /= std::abs(_u[_qp]);
45 
46  if (inc > _max_increment)
47  return _max_increment / inc;
48 
49  return 1.0;
50 }
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
These methods add an range checked parameters.
static InputParameters validParams()
Definition: ElementDamper.C:22
const VariableValue & _u
Holds the current solution at the current quadrature point.
Definition: ElementDamper.h:78
unsigned int _qp
Quadrature point index.
Definition: ElementDamper.h:67
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
Definition: MooseUtils.h:1147
const VariableValue & _u_increment
The current Newton increment.
Definition: ElementDamper.h:76
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
Real _max_increment
The maximum Newton increment for the variable.
Definition: MaxIncrement.h:29
static InputParameters validParams()
Definition: MaxIncrement.C:15
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
MaxIncrement(const InputParameters &parameters)
Definition: MaxIncrement.C:32
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:31
virtual Real computeQpDamping() override
This MUST be overridden by a child damper.
Definition: MaxIncrement.C:40
Base class for deriving element dampers.
Definition: ElementDamper.h:28
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("MooseApp", MaxIncrement)
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...
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an option parameter and a documentation string to the InputParameters object...
enum MaxIncrement::IncrementTypeEnum _increment_type