https://mooseframework.inl.gov
PorousFlowDictatorTest.h
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 #pragma once
11 
12 #include "MooseObjectUnitTest.h"
13 #include "PorousFlowDictator.h"
14 #include "libmesh/string_to_enum.h"
15 
16 class PorousFlowDictator;
17 
19 {
20 public:
22 
23 protected:
24  void buildObjects()
25  {
26  auto var_params_ll = _factory.getValidParams("MooseVariable");
27  var_params_ll.set<MooseEnum>("family") = "LAGRANGE";
28  var_params_ll.set<MooseEnum>("order") = "FIRST";
29 
30  auto var_params_cm = _factory.getValidParams("MooseVariableConstMonomial");
31  var_params_cm.set<MooseEnum>("family") = "MONOMIAL";
32  var_params_cm.set<MooseEnum>("order") = "CONSTANT";
33 
34  _fe_problem->addVariable("MooseVariable", "var0", var_params_ll);
35  _fe_problem->addVariable("MooseVariable", "var1", var_params_ll);
36  _fe_problem->addVariable("MooseVariable", "var2", var_params_ll);
37  _fe_problem->addVariable("MooseVariable", "var3", var_params_ll);
38  _fe_problem->addVariable("MooseVariable", "var4", var_params_ll);
39  _fe_problem->addVariable("MooseVariable", "var5", var_params_ll);
40  _fe_problem->addVariable("MooseVariableConstMonomial", "var_different_fe_type", var_params_cm);
41  _fe_problem->addAuxVariable("MooseVariable", "aux_var", var_params_ll);
42 
43  InputParameters params = _factory.getValidParams("PorousFlowDictator");
44  params.set<std::vector<VariableName>>("porous_flow_vars") =
45  std::vector<VariableName>{"var1", "var4", "var3"};
46  params.set<unsigned>("number_fluid_phases") = 2;
47  params.set<unsigned>("number_fluid_components") = 4;
48  params.set<unsigned int>("number_aqueous_equilibrium") = 5;
49  params.set<unsigned int>("number_aqueous_kinetic") = 6;
50  params.set<unsigned int>("aqueous_phase_number") = 1;
51  _fe_problem->addUserObject("PorousFlowDictator", "dictator_name", params);
52  _dictator = &_fe_problem->getUserObject<PorousFlowDictator>("dictator_name");
53 
54  InputParameters params_no_fetype = _factory.getValidParams("PorousFlowDictator");
55  params_no_fetype.set<std::vector<VariableName>>("porous_flow_vars") =
56  std::vector<VariableName>{"var1", "var_different_fe_type"};
57  params_no_fetype.set<unsigned>("number_fluid_phases") = 1;
58  params_no_fetype.set<unsigned>("number_fluid_components") = 3;
59  _fe_problem->addUserObject("PorousFlowDictator", "dictator_no_fetype", params_no_fetype);
61  &_fe_problem->getUserObject<PorousFlowDictator>("dictator_no_fetype");
62  }
63 
66 };
std::shared_ptr< FEProblem > _fe_problem
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
const PorousFlowDictator * _dictator
const PorousFlowDictator * _dictator_no_fetype