ScalarCoupleable::ScalarCoupleable(const InputParameters & parameters) : _sc_is_implicit(parameters.have_parameter<bool>("implicit") ? parameters.get<bool>("implicit") : true) { SubProblem & problem = *parameters.get<SubProblem *>("_subproblem"); THREAD_ID tid = parameters.have_parameter<THREAD_ID>("_tid") ? parameters.get<THREAD_ID>("_tid") : 0; // Coupling for (std::set<std::string>::const_iterator iter = parameters.coupledVarsBegin(); iter != parameters.coupledVarsEnd(); ++iter) { std::string name = *iter; if (parameters.getVecMooseType(*iter) != std::vector<std::string>()) { std::vector<std::string> vars = parameters.getVecMooseType(*iter); for (unsigned int i = 0; i < vars.size(); i++) { std::string coupled_var_name = vars[i]; if (problem.hasScalarVariable(coupled_var_name)) { MooseVariableScalar * scalar_var = &problem.getScalarVariable(tid, coupled_var_name); _coupled_scalar_vars[name].push_back(scalar_var); _coupled_moose_scalar_vars.push_back(scalar_var); } else if (problem.hasVariable(coupled_var_name)) ; // ignore normal variables else mooseError("Coupled variable '" + coupled_var_name + "' was not found\n"); } } } }
Coupleable::Coupleable(const InputParameters & parameters, bool nodal) : _c_fe_problem(*parameters.getCheckedPointerParam<FEProblem *>("_fe_problem")), _nodal(nodal), _c_is_implicit(parameters.have_parameter<bool>("implicit") ? parameters.get<bool>("implicit") : true), _coupleable_params(parameters) { SubProblem & problem = *parameters.get<SubProblem *>("_subproblem"); _coupleable_max_qps = _c_fe_problem.getMaxQps(); THREAD_ID tid = parameters.get<THREAD_ID>("_tid"); // Coupling for (std::set<std::string>::const_iterator iter = parameters.coupledVarsBegin(); iter != parameters.coupledVarsEnd(); ++iter) { std::string name = *iter; if (parameters.getVecMooseType(name) != std::vector<std::string>()) { std::vector<std::string> vars = parameters.getVecMooseType(*iter); for (unsigned int i = 0; i < vars.size(); i++) { std::string coupled_var_name = vars[i]; if (problem.hasVariable(coupled_var_name)) { MooseVariable * moose_var = &problem.getVariable(tid, coupled_var_name); _coupled_vars[name].push_back(moose_var); _coupled_moose_vars.push_back(moose_var); } else if (problem.hasScalarVariable(coupled_var_name)) ; // ignore scalar variables else mooseError("Coupled variable '" + coupled_var_name + "' was not found\n"); } } else // This means it was optional coupling. Let's assign a unique id to this variable _optional_var_index[name] = std::numeric_limits<unsigned int>::max() - _optional_var_index.size(); } _default_value_zero.resize(_coupleable_max_qps); _default_gradient.resize(_coupleable_max_qps); _default_second.resize(_coupleable_max_qps); }
MooseVariableInterface::MooseVariableInterface(InputParameters & parameters, bool nodal, std::string var_param_name) : _nodal(nodal) { SubProblem & problem = *parameters.get<SubProblem *>("_subproblem"); THREAD_ID tid = parameters.get<THREAD_ID>("_tid"); // Try the scalar version first std::string variable_name = parameters.getMooseType(var_param_name); if (variable_name == "") // When using vector variables, we are only going to use the first one in the list at the interface level... variable_name = parameters.getVecMooseType(var_param_name)[0]; _variable = &problem.getVariable(tid, variable_name); _mvi_assembly = &problem.assembly(tid); }