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 "ConvergenceIterationTypes.h" 11 : #include "MooseUtils.h" 12 : 13 : namespace moose 14 : { 15 : namespace internal 16 : { 17 : 18 : ConvergenceIterationTypeRegistry & 19 550920 : ConvergenceIterationTypeRegistry::getRegistry() 20 : { 21 550920 : static ConvergenceIterationTypeRegistry conv_iter_type_registry; 22 550920 : return conv_iter_type_registry; 23 : } 24 : 25 : const Convergence::IterationType & 26 550920 : ConvergenceIterationTypeRegistry::registerType(const std::string & name) 27 : { 28 550920 : const auto name_upper = MooseUtils::toUpper(name); 29 : 30 550920 : const auto type_iter = _types.find(name_upper); 31 550920 : if (type_iter != _types.items().end()) 32 : { 33 : // Assume that this is not a duplicate name, but a "double registration" due 34 : // to the dynamic load functionality. 35 275460 : return *type_iter; 36 : } 37 : else 38 275460 : return _types.addConvergenceIterationType(name_upper); 39 550920 : } 40 : 41 : } // internal 42 : } // moose 43 : 44 : namespace ConvergenceIterationTypes 45 : { 46 : const Convergence::IterationType & 47 550920 : registerType(const std::string & it_type) 48 : { 49 550920 : return moose::internal::ConvergenceIterationTypeRegistry::getRegistry().registerType(it_type); 50 : } 51 : }