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 : #pragma once 11 : 12 : #include "Convergence.h" 13 : #include "ConvergenceIterationTypeEnum.h" 14 : 15 : namespace moose 16 : { 17 : namespace internal 18 : { 19 : 20 : /** 21 : * Registry for Convergence iteration types. 22 : */ 23 : class ConvergenceIterationTypeRegistry 24 : { 25 : public: 26 : /** 27 : * Registers a Convergence iteration type 28 : * @param name The name of the Convergence iteration type 29 : */ 30 : const Convergence::IterationType & registerType(const std::string & name); 31 : 32 : /// Return Singleton instance 33 : static ConvergenceIterationTypeRegistry & getRegistry(); 34 : 35 : ///@{ Don't allow creation through copy/move construction or assignment 36 : ConvergenceIterationTypeRegistry(ConvergenceIterationTypeRegistry const &) = delete; 37 : ConvergenceIterationTypeRegistry & operator=(ConvergenceIterationTypeRegistry const &) = delete; 38 : 39 : ConvergenceIterationTypeRegistry(ConvergenceIterationTypeRegistry &&) = delete; 40 : ConvergenceIterationTypeRegistry & operator=(ConvergenceIterationTypeRegistry &&) = delete; 41 : ///@} 42 : 43 : private: 44 : // Private constructor for singleton pattern 45 55092 : ConvergenceIterationTypeRegistry() {} 46 : 47 : /// The registered types 48 : ConvergenceIterationTypeEnum _types; 49 : }; 50 : 51 : } // internal 52 : } // moose 53 : 54 : namespace ConvergenceIterationTypes 55 : { 56 : /// Registers a Convergence iteration type to the registry 57 : const Convergence::IterationType & registerType(const std::string & it_type); 58 : 59 : const auto NONLINEAR = registerType("NONLINEAR"); 60 : const auto LINEAR = registerType("LINEAR"); 61 : const auto MULTISYSTEM_FIXED_POINT = registerType("MULTISYSTEM_FIXED_POINT"); 62 : const auto MULTIAPP_FIXED_POINT = registerType("MULTIAPP_FIXED_POINT"); 63 : const auto STEADY_STATE = registerType("STEADY_STATE"); 64 : }