www.mooseframework.org
LevelSetOlssonTerminator.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 
11 #include "NonlinearSystem.h"
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<GeneralUserObject>();
20  params.addClassDescription("Tool for terminating the reinitialization of the level set equation "
21  "based on the criteria defined by Olsson et. al. (2007).");
22  params.addRequiredParam<Real>(
23  "tol", "The limit at which the reinitialization problem is considered converged.");
24  params.addParam<int>("min_steps", 3, "The minimum number of time steps to consider.");
25  return params;
26 }
27 
29  : GeneralUserObject(params),
30  _solution_diff(_fe_problem.getNonlinearSystem().addVector("solution_diff", false, PARALLEL)),
31  _tol(getParam<Real>("tol")),
32  _min_t_steps(getParam<int>("min_steps"))
33 {
34 }
35 
36 void
38 {
39  _solution_diff = *_fe_problem.getNonlinearSystem().currentSolution();
40  _solution_diff -= _fe_problem.getNonlinearSystem().solutionOld();
41  Real delta = _solution_diff.l2_norm() / _dt;
42  _console << "Computed convergence criteria: " << delta << std::endl;
43 
44  if (_fe_problem.timeStep() < _min_t_steps)
45  return;
46  else if (delta < _tol)
47  _fe_problem.terminateSolve();
48 }
LevelSetOlssonTerminator.h
LevelSetOlssonTerminator
Terminates the solve based on the criteria defined in Olsson et.
Definition: LevelSetOlssonTerminator.h:24
validParams< LevelSetOlssonTerminator >
InputParameters validParams< LevelSetOlssonTerminator >()
Definition: LevelSetOlssonTerminator.C:17
registerMooseObject
registerMooseObject("LevelSetApp", LevelSetOlssonTerminator)
LevelSetOlssonTerminator::execute
virtual void execute() override
Definition: LevelSetOlssonTerminator.C:37
LevelSetOlssonTerminator::_solution_diff
NumericVector< Number > & _solution_diff
The difference of current and old solutions.
Definition: LevelSetOlssonTerminator.h:34
LevelSetOlssonTerminator::_min_t_steps
const int & _min_t_steps
The required minimum number of timesteps.
Definition: LevelSetOlssonTerminator.h:40
LevelSetOlssonTerminator::_tol
const Real & _tol
The steady-state convergence tolerance.
Definition: LevelSetOlssonTerminator.h:37
LevelSetOlssonTerminator::LevelSetOlssonTerminator
LevelSetOlssonTerminator(const InputParameters &parameters)
Definition: LevelSetOlssonTerminator.C:28