Line data Source code
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 : #include "LogConstantDT.h" 11 : 12 : registerMooseObject("MooseApp", LogConstantDT); 13 : 14 : InputParameters 15 14405 : LogConstantDT::validParams() 16 : { 17 14405 : InputParameters params = TimeStepper::validParams(); 18 14405 : params.addClassDescription( 19 : "TimeStepper which imposes a time step constant in the logarithmic space"); 20 14405 : params.addRequiredRangeCheckedParam<Real>("log_dt", "log_dt > 0", "Time step in log10(time)"); 21 14405 : params.addRequiredRangeCheckedParam<Real>( 22 : "first_dt", "first_dt > 0", "Initial time step (in absolute time)"); 23 14405 : params.addRangeCheckedParam<Real>( 24 : "growth_factor", 25 : 2, 26 : "growth_factor>=1", 27 : "Maximum ratio of new to previous timestep sizes following a step that required the time" 28 : " step to be cut due to a failed solve."); 29 14405 : return params; 30 0 : } 31 : 32 70 : LogConstantDT::LogConstantDT(const InputParameters & parameters) 33 : : TimeStepper(parameters), 34 70 : _log_dt(getParam<Real>("log_dt")), 35 70 : _first_dt(getParam<Real>("first_dt")), 36 70 : _dt_factor(std::pow(10.0, _log_dt)), 37 140 : _growth_factor(getParam<Real>("growth_factor")) 38 : { 39 70 : } 40 : 41 : Real 42 126 : LogConstantDT::computeInitialDT() 43 : { 44 126 : return _first_dt; 45 : } 46 : 47 : Real 48 482 : LogConstantDT::computeDT() 49 : { 50 482 : Real next = _time * _dt_factor; 51 482 : return std::min(next - _time, _growth_factor * getCurrentDT()); 52 : }