12#include "libmesh/fe_type.h"
21 "u_solver_system",
"nl0",
"Solver system to which the driving variable 'u' is added");
23 "v_solver_system",
"nl0",
"Solver system to which the coupled variable 'v' is added");
25 "Test component that solves two coupled Poisson equations in separate solver systems.");
31 _u_var_name(genSafeName(
name(),
"u")),
32 _v_var_name(genSafeName(
name(),
"v")),
33 _u_solver_system(getParam<SolverSystemName>(
"u_solver_system")),
34 _v_solver_system(getParam<SolverSystemName>(
"v_solver_system"))
42 const FEType fe_type(FIRST, LAGRANGE);
52 const BoundaryName in_boundary =
genName(
name(),
"in");
53 const BoundaryName out_boundary =
genName(
name(),
"out");
57 const std::string class_name =
"Diffusion";
60 pars.
set<std::vector<SubdomainName>>(
"block") = subdomains;
66 const std::string class_name =
"Diffusion";
69 pars.
set<std::vector<SubdomainName>>(
"block") = subdomains;
75 const std::string class_name =
"CoupledForce";
79 pars.
set<std::vector<SubdomainName>>(
"block") = subdomains;
84 auto add_dirichlet_bc =
85 [&](
const VariableName & var,
const BoundaryName & boundary, Real value,
const std::string & suffix)
87 const std::string class_name =
"DirichletBC";
89 pars.
set<NonlinearVariableName>(
"variable") = var;
90 pars.
set<std::vector<BoundaryName>>(
"boundary") = {boundary};
91 pars.
set<Real>(
"value") = value;
95 add_dirichlet_bc(
_u_var_name, in_boundary, 0.0,
"u_in_bc");
96 add_dirichlet_bc(
_u_var_name, out_boundary, 1.0,
"u_out_bc");
97 add_dirichlet_bc(
_v_var_name, in_boundary, 0.0,
"v_in_bc");
98 add_dirichlet_bc(
_v_var_name, out_boundary, 0.0,
"v_out_bc");
registerMooseObject("ThermalHydraulicsTestApp", SegregatedTestComponent)
Base class for 1D components.
static InputParameters validParams()
virtual const std::vector< SubdomainName > & getSubdomainNames() const
Gets the subdomain names for this component.
Factory & _factory
The Factory associated with the MooseApp.
THMProblem & _sim
THM problem this component is part of TODO: make _sim private (applications need to switch to getters...
virtual void addBoundaryCondition(const std::string &bc_name, const std::string &name, InputParameters ¶meters)
virtual void addKernel(const std::string &kernel_name, const std::string &name, InputParameters ¶meters)
InputParameters getValidParams(const std::string &name) const
std::string genName(const std::string &prefix, unsigned int id, const std::string &suffix="") const
Build a name from a prefix, number and possible suffix.
Test component that solves two Poisson equations, each in its own solver system, coupled through a fi...
SegregatedTestComponent(const InputParameters ¶meters)
const VariableName _u_var_name
Name of the driving variable.
virtual void addVariables() override
const SolverSystemName _v_solver_system
Solver system to which the coupled variable is added.
virtual void addMooseObjects() override
const SolverSystemName _u_solver_system
Solver system to which the driving variable is added.
static InputParameters validParams()
const VariableName _v_var_name
Name of the variable coupled to the driving variable.
void addSimVariable(bool nl, const VariableName &name, libMesh::FEType fe_type, Real scaling_factor=1.0, const SolverSystemName &solver_sys="nl0")
Queues a variable of type MooseVariableScalar to be added to the nonlinear or aux system.