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 "AddTimeStepperAction.h" 11 : #include "TimeStepper.h" 12 : #include "FEProblemBase.h" 13 : #include "TransientBase.h" 14 : 15 : registerMooseAction("MooseApp", AddTimeStepperAction, "add_time_stepper"); 16 : registerMooseAction("MooseApp", AddTimeStepperAction, "add_time_steppers"); 17 : 18 : InputParameters 19 1577 : AddTimeStepperAction::validParams() 20 : { 21 1577 : InputParameters params = MooseObjectAction::validParams(); 22 1577 : params.addClassDescription("Add a TimeStepper object to the simulation."); 23 1577 : return params; 24 0 : } 25 : 26 1170 : AddTimeStepperAction::AddTimeStepperAction(const InputParameters & params) 27 1170 : : MooseObjectAction(params) 28 : { 29 1170 : } 30 : 31 : void 32 1170 : AddTimeStepperAction::act() 33 : { 34 1170 : std::string name; 35 : // Task: add_time_stepper corresponding to [TimeStepper] block 36 1170 : if (_current_task == "add_time_stepper") 37 804 : name = _type; 38 : // Task: add_time_steppers corresponding to [TimeSteppers] block 39 : else 40 366 : name = _name; 41 : 42 1170 : TransientBase * transient = dynamic_cast<TransientBase *>(_app.getExecutioner()); 43 1170 : if (!transient) 44 0 : mooseError("Cannot add TimeSteppers without a Transient executioner"); 45 1170 : _moose_object_pars.set<TransientBase *>("_executioner") = transient; 46 : 47 : auto ts = 48 1170 : _problem->addObject<TimeStepper>(_type, name, _moose_object_pars, /* threaded = */ false)[0]; 49 : 50 1162 : if (name == "TimeStepper" || name == "CompositionDT") 51 0 : ts->mooseError("The user-defined time stepper name '", name, "' is a reserved name"); 52 1162 : }