https://mooseframework.inl.gov
JacobianTestAction.C
Go to the documentation of this file.
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 "JacobianTestAction.h"
11 #include "MooseObjectAction.h"
12 #include "ActionFactory.h"
13 #include "ActionWarehouse.h"
14 #include "MooseEnum.h"
15 #include "FEProblemBase.h"
16 #include "Conversion.h"
17 
20 {
22 
23  params.addParam<Real>("snes_test_err", 1e-8, "Finite differencing parameter");
24 
25  return params;
26 }
27 
29  : TestAction(params), _snes_test_err(Moose::stringify<Real>(getParam<Real>("snes_test_err")))
30 {
31 }
32 
33 void
35 {
36  const std::string class_name = "SetupPreconditionerAction";
37  InputParameters params = _action_factory.getValidParams(class_name);
38  params.set<std::string>("type") = "SMP";
39 
40  std::shared_ptr<MooseObjectAction> action = std::static_pointer_cast<MooseObjectAction>(
41  _action_factory.create(class_name, "smp", params));
42 
43  action->getObjectParams().set<bool>("full") = true;
44  action->getObjectParams().set<MooseEnum>("solve_type") = "newton";
45 #if PETSC_VERSION_LESS_THAN(3, 9, 0)
46  action->getObjectParams().set<MultiMooseEnum>("petsc_options_iname") =
47  "-snes_type -snes_test_err";
48  action->getObjectParams().set<std::vector<std::string>>("petsc_options_value") = {"test",
50 #else
51  action->getObjectParams().set<MultiMooseEnum>("petsc_options") = "-snes_test_jacobian";
52  action->getObjectParams().set<MultiMooseEnum>("petsc_options_iname") = "-snes_test_err";
53  action->getObjectParams().set<std::vector<std::string>>("petsc_options_value") = {_snes_test_err};
54 #endif
55 
56  _awh.addActionBlock(action);
57 }
JacobianTestAction(const InputParameters &params)
ActionWarehouse & _awh
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
InputParameters getValidParams(const std::string &name)
T & set(const std::string &name, bool quiet_mode=false)
void addActionBlock(std::shared_ptr< Action > blk)
const std::string _snes_test_err
Finite differencing parameter.
std::shared_ptr< Action > create(const std::string &action, const std::string &action_name, InputParameters &parameters)
InputParameters & getObjectParams()
virtual void addPreconditioner() override
Adds the preconditioner.
static InputParameters validParams()
ActionFactory & _action_factory
std::string stringify(const T &t)
static InputParameters validParams()
Definition: TestAction.C:17
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Base class for adding common actions for testing.
Definition: TestAction.h:17