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 "TimePeriodBase.h" 11 : #include "Function.h" 12 : #include "Transient.h" 13 : #include "MooseUtils.h" 14 : #include "FEProblemBase.h" 15 : 16 : InputParameters 17 14969 : TimePeriodBase::validParams() 18 : { 19 14969 : InputParameters params = ConditionalEnableControl::validParams(); 20 14969 : params.addClassDescription( 21 : "Base class for controlling the enabled/disabled state of objects with time."); 22 14969 : return params; 23 0 : } 24 : 25 360 : TimePeriodBase::TimePeriodBase(const InputParameters & parameters) 26 360 : : ConditionalEnableControl(parameters) 27 : { 28 : // Error if not a transient problem 29 356 : if (!_fe_problem.isTransient()) 30 4 : mooseError("TimePeriodBase objects only operate on transient problems."); 31 352 : } 32 : 33 : void 34 352 : TimePeriodBase::setupTimes() 35 : { 36 : // Check that start/end time are the same length 37 352 : if (_end_time.size() != _start_time.size()) 38 4 : mooseError("The end time and start time vectors must be the same length."); 39 : 40 : // Resize the start/end times if only a single value given 41 348 : if (_end_time.size() == 1 && (_disable.size() > 1 || _enable.size() > 1)) 42 : { 43 52 : unsigned int size = std::max(_disable.size(), _enable.size()); 44 52 : _end_time = std::vector<Real>(size, _end_time[0]); 45 52 : _start_time = std::vector<Real>(size, _start_time[0]); 46 : } 47 296 : else if (_end_time.size() != _disable.size() && _end_time.size() != _enable.size()) 48 4 : mooseError("The start/end time input must be a scalar or the same length as the enable/disable " 49 : "lists."); 50 : 51 : // Test that start and end times are in proper order 52 808 : for (unsigned int i = 0; i < _start_time.size(); ++i) 53 468 : if (_start_time[i] >= _end_time[i]) 54 4 : mooseError("The start time(s) must be less than the end time(s)."); 55 340 : }