@@ -95,7 +95,7 @@ def coarse_cell_to_fine_node_map(Vc, Vf):
9595 if levelc + increment != levelf :
9696 raise ValueError ("Can't map between level %s and level %s" % (levelc , levelf ))
9797
98- key = _cache_key (Vc , Vf )
98+ key = _cache_key (Vc , Vf , needs_fine_entity_dofs = False )
9999 cache = mesh ._shared_data_cache ["hierarchy_coarse_cell_to_fine_node_map" ]
100100 try :
101101 return cache [key ]
@@ -168,10 +168,14 @@ def has_level(obj):
168168 return hasattr (obj .topological , "__level_info__" )
169169
170170
171- def _cache_key (Vc , Vf ):
171+ def _cache_key (Vc , Vf , needs_fine_entity_dofs = True ):
172+ """Construct a cache key for node maps"""
172173 _ , levelf = get_level (Vf .mesh ())
173174 _ , levelc = get_level (Vc .mesh ())
174- return (entity_dofs_key (Vc .finat_element .entity_dofs ())
175- + entity_dofs_key (Vf .finat_element .entity_dofs ())
176- + (levelc , levelf )
177- + (Vc .boundary_set , Vf .boundary_set ))
175+
176+ key = entity_dofs_key (Vc .finat_element .entity_dofs ())
177+ if needs_fine_entity_dofs :
178+ key += entity_dofs_key (Vf .finat_element .entity_dofs ())
179+ key += (levelc , levelf )
180+ key += (Vc .boundary_set , Vf .boundary_set )
181+ return key
0 commit comments