20#include "libmesh/nonlinear_implicit_system.h"
21#include "libmesh/linear_implicit_system.h"
30 "NonlinearSystem and a single AuxiliarySystem object.");
36 :
FEProblemBase(parameters), _use_nonlinear(getParam<bool>(
"use_nonlinear"))
44 nl =
_use_nonlinear ? (std::make_shared<NonlinearSystem>(*
this, sys_name))
45 : (std::make_shared<MooseEigenSystem>(*
this, sys_name));
46 _nl_sys.push_back(std::dynamic_pointer_cast<NonlinearSystem>(nl));
65 solver_system->system().prefix_with_name(
true);
67 _aux = std::make_shared<AuxiliarySystem>(*
this,
"aux0");
90 mooseError(
"Static condensation may not be used with multiple threads");
116 ls_params.
set<
bool>(
"affect_ltol") = affect_ltol;
117 ls_params.
set<
unsigned>(
"allowed_lambda_cuts") =
118 parameters.
get<
unsigned>(
"contact_line_search_allowed_lambda_cuts");
119 ls_params.
set<Real>(
"contact_ltol") = affect_ltol
133 "PetscProjectSolutionOntoBounds",
"project_solution_onto_bounds_line_search", ls_params);
137 mooseError(
"Requested line search ", line_search.operator std::string(),
" is not supported");
registerMooseObject("MooseApp", FEProblem)
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
std::shared_ptr< AuxiliarySystem > _aux
The auxiliary system.
virtual void init() override
void createTagVectors()
Create extra tagged vectors and matrices.
virtual libMesh::EquationSystems & es() override
std::shared_ptr< LineSearch > _line_search
std::vector< std::shared_ptr< LinearSystem > > _linear_systems
The vector of linear systems.
const bool _use_hash_table_matrix_assembly
Whether to assemble matrices using hash tables instead of preallocating matrix memory.
virtual void newAssemblyArray(std::vector< std::shared_ptr< SolverSystem > > &solver_systems)
void setCurrentNonlinearSystem(const unsigned int nl_sys_num)
const std::vector< LinearSystemName > _linear_sys_names
The linear system names.
const std::size_t _num_linear_sys
The number of linear systems.
virtual void initNullSpaceVectors(const InputParameters ¶meters, std::vector< std::shared_ptr< NonlinearSystemBase > > &nl)
const std::size_t _num_nl_sys
The number of nonlinear systems.
virtual void setInputParametersFEProblem(InputParameters ¶meters)
void createTagSolutions()
Create extra tagged solution vectors.
std::vector< std::shared_ptr< SolverSystem > > _solver_systems
Combined container to base pointer of every solver system.
const std::vector< NonlinearSystemName > _nl_sys_names
The nonlinear system names.
static InputParameters validParams()
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
virtual void setInputParametersFEProblem(InputParameters ¶meters) override
static InputParameters validParams()
virtual void init() override
std::vector< std::shared_ptr< NonlinearSystem > > _nl_sys
std::vector< std::shared_ptr< NonlinearSystemBase > > _nl
The nonlinear systems.
FEProblem(const InputParameters ¶meters)
virtual void addLineSearch(const InputParameters ¶meters) override
add a MOOSE line search
std::shared_ptr< MooseObject > create(const std::string &obj_name, const std::string &name, const InputParameters ¶meters, THREAD_ID tid=0, bool print_deprecated=true)
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
const InputParameters & parameters() const
Get the parameters of the object.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Factory & _factory
The Factory for building objects.
T & set(const std::string &)
LineSearchType
Type of the line search.