Loading [MathJax]/extensions/tex2jax.js
www.mooseframework.org
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
ValueRangeMarker.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 "ValueRangeMarker.h"
11 #include "FEProblem.h"
12 #include "MooseEnum.h"
13 
15 
17 
20 {
22 
23  params.addRequiredParam<Real>("lower_bound", "The lower bound value for the range.");
24  params.addRequiredParam<Real>("upper_bound", "The upper bound value for the range.");
25  params.addParam<Real>("buffer_size",
26  0.0,
27  "A buffer zone value added to both ends of the range "
28  "where a third_state marker can be returned.");
29 
30  params.addClassDescription("Mark elements for adaptivity based on the supplied upper and lower "
31  "bounds and the specified variable.");
32  return params;
33 }
34 
36  : QuadraturePointMarker(parameters),
37  _lower_bound(parameters.get<Real>("lower_bound")),
38  _upper_bound(parameters.get<Real>("upper_bound")),
39  _buffer_size(parameters.get<Real>("buffer_size")),
40  _inside(getParam<bool>("invert") ? COARSEN : REFINE),
41  _outside(getParam<bool>("invert") ? REFINE : COARSEN)
42 {
44  mooseError("Invalid bounds specified (upper_bound < lower_bound)");
45 
46  if (_buffer_size < 0.0)
47  mooseError("Buffer size must be non-negative: ", _buffer_size);
48 }
49 
52 {
53  // Is the variable value inside the range?
54  if (_u[_qp] >= _lower_bound && _u[_qp] <= _upper_bound)
55  return _inside;
56 
57  // How about the buffer zone?
59  return _third_state;
60 
61  // Must be outside the range
62  return _outside;
63 }
QuadraturePointMarker
Definition: QuadraturePointMarker.h:21
ValueRangeMarker::_lower_bound
Real _lower_bound
Definition: ValueRangeMarker.h:29
FEProblem.h
ValueRangeMarker::_buffer_size
Real _buffer_size
Definition: ValueRangeMarker.h:31
ValueRangeMarker::ValueRangeMarker
ValueRangeMarker(const InputParameters &parameters)
Definition: ValueRangeMarker.C:35
defineLegacyParams
defineLegacyParams(ValueRangeMarker)
MooseObject::mooseError
void mooseError(Args &&... args) const
Definition: MooseObject.h:141
QuadraturePointMarker::_qp
unsigned int _qp
The current quadrature point.
Definition: QuadraturePointMarker.h:53
ValueRangeMarker
Definition: ValueRangeMarker.h:19
InputParameters::addParam
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.
Definition: InputParameters.h:1198
QuadraturePointMarker::_u
const VariableValue & _u
Holds the solution at current quadrature points.
Definition: QuadraturePointMarker.h:44
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
Marker::MarkerValue
MarkerValue
This mirrors the main refinement flag values in libMesh in Elem::RefinementState but adds "dont_mark"...
Definition: Marker.h:57
ValueRangeMarker::_outside
MarkerValue _outside
Definition: ValueRangeMarker.h:34
QuadraturePointMarker::validParams
static InputParameters validParams()
Definition: QuadraturePointMarker.C:20
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
ValueRangeMarker.h
ValueRangeMarker::_inside
MarkerValue _inside
Definition: ValueRangeMarker.h:33
MooseEnum.h
ValueRangeMarker::_upper_bound
Real _upper_bound
Definition: ValueRangeMarker.h:30
ValueRangeMarker::validParams
static InputParameters validParams()
Definition: ValueRangeMarker.C:19
registerMooseObject
registerMooseObject("MooseApp", ValueRangeMarker)
ValueRangeMarker::computeQpMarker
virtual MarkerValue computeQpMarker() override
Override this to compute a marker value at each quadrature point.
Definition: ValueRangeMarker.C:51
InputParameters::addRequiredParam
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
Definition: InputParameters.h:1176
QuadraturePointMarker::_third_state
MarkerValue _third_state
The behavior to use when "in-between" other states (what to do on the fringe)
Definition: QuadraturePointMarker.h:56