bp::dict get_couple_groupset(int group, const std::string &groupset_id) const { auto groupset = impl.couples().get_couple_groupset(group, groupset_id); bp::dict result; result["free_effective_space"] = groupset.free_effective_space(); result["free_reserved_space"] = groupset.free_reserved_space(); result["type"] = groupset.type(); result["status"] = groupset.status(); result["id"] = groupset.id(); bp::list group_ids; for (int g : groupset.group_ids()) { group_ids.append(g); } result["group_ids"] = group_ids; gil_guard_t gil_guard; result["hosts"] = detail::convert(groupset.hosts(), gil_guard); result["settings"] = detail::convert(groupset.settings(), gil_guard); return result; }
TEST(ProcessLib_Parameter, GroupBasedParameterNode) { const char xml[] = "<parameter>" "<type>Group</type>" "<group_id_property>PointGroupIDs</group_id_property>" "<index_values><index>0</index><value>0</value></index_values>" "<index_values><index>1</index><value>100</value></index_values>" "<index_values><index>3</index><value>300</value></index_values>" "</parameter>"; auto const ptree = readXml(xml); std::unique_ptr<MeshLib::Mesh> mesh( MeshLib::MeshGenerator::generateLineMesh(4u, 1.0)); std::vector<int> group_ids({0, 1, 2, 3, 4}); MeshLib::addPropertyToMesh(*mesh, "PointGroupIDs", MeshLib::MeshItemType::Node, 1, group_ids); BaseLib::ConfigTree conf(ptree, "", BaseLib::ConfigTree::onerror, BaseLib::ConfigTree::onwarning); std::unique_ptr<ProcessLib::ParameterBase> parameter_base = ProcessLib::createGroupBasedParameter( "", conf.getConfigSubtree("parameter"), *mesh); auto parameter = dynamic_cast<ProcessLib::Parameter<double>*>(parameter_base.get()); double t = 0; ProcessLib::SpatialPosition x; x.setNodeID(0); ASSERT_EQ(0.0, (*parameter)(t, x)[0]); x.setNodeID(1); ASSERT_EQ(100.0, (*parameter)(t, x)[0]); x.setNodeID(2); ASSERT_ANY_THROW((*parameter)(t, x)); x.setNodeID(3); ASSERT_EQ(300.0, (*parameter)(t, x)[0]); x.setNodeID(4); ASSERT_ANY_THROW((*parameter)(t, x)); }