void ParameterManager::initialize ( const GetPot& input, const std::string & parameters_varname, MultiphysicsSystem & system, CompositeQoI * qoi) { const unsigned int n_parameters = input.vector_variable_size(parameters_varname); libmesh_assert(n_parameters); this->parameter_name_list.resize(n_parameters); this->parameter_vector.clear(); for (unsigned int i=0; i != n_parameters; ++i) { std::string param_name = input(parameters_varname, std::string(), i); this->parameter_name_list[i] = param_name; libMesh::ParameterMultiAccessor<libMesh::Number> *next_param = new libMesh::ParameterMultiAccessor<libMesh::Number>(); // We always have Physics solving for u system.register_parameter(param_name, *next_param); // We don't always have QoIs when solving for du/dp if (qoi) qoi->register_parameter(param_name, *next_param); if (next_param->size() == 0) { std::cout << "No parameters named " << param_name << " found in active Physics or QoIs" << std::endl; libmesh_error(); } this->parameter_vector.push_back (libMesh::UniquePtr<libMesh::ParameterAccessor<libMesh::Number> > (next_param)); } }