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 "ReferenceResidualProblem.h" 11 : #include "ReferenceResidualConvergence.h" 12 : 13 : using namespace libMesh; 14 : 15 : registerMooseObject("MooseApp", ReferenceResidualProblem); 16 : 17 : InputParameters 18 14713 : ReferenceResidualProblem::validParams() 19 : { 20 14713 : InputParameters params = FEProblem::validParams(); 21 14713 : params += ReferenceResidualInterface::validParams(); 22 : 23 14713 : params.addClassDescription("Problem that checks for convergence relative to " 24 : "a user-supplied reference quantity rather than " 25 : "the initial residual"); 26 : 27 14713 : return params; 28 0 : } 29 : 30 224 : ReferenceResidualProblem::ReferenceResidualProblem(const InputParameters & params) 31 224 : : FEProblem(params), ReferenceResidualInterface(this) 32 : { 33 224 : } 34 : 35 : void 36 224 : ReferenceResidualProblem::addDefaultNonlinearConvergence(const InputParameters & params_to_apply) 37 : { 38 224 : const std::string class_name = "ReferenceResidualConvergence"; 39 224 : InputParameters params = _factory.getValidParams(class_name); 40 224 : params.applyParameters(params_to_apply); 41 224 : params.applyParameters(parameters()); 42 224 : params.set<bool>("added_as_default") = true; 43 440 : for (const auto & conv_name : getNonlinearConvergenceNames()) 44 224 : addConvergence(class_name, conv_name, params); 45 216 : }