Skip to content
Snippets Groups Projects
Commit b13fb1b3 authored by Anne Poot's avatar Anne Poot
Browse files

Merge branch 'fem-cleanups' into 'main'

Various improvements/bug fixes to myjive/fem

See merge request apoot1/myjive!75
parents 540f6110 54024073
No related branches found
No related tags found
No related merge requests found
......@@ -41,7 +41,7 @@ class ElementSet(GroupSet):
class XElementSet(ElementSet, XGroupSet):
def add_element(self, inodes, elem_id=None):
self.add_group(inodes, elem_id)
return self.add_group(inodes, elem_id)
def erase_element(self, ielem):
self.erase_group(ielem)
......
......@@ -82,15 +82,17 @@ class XGroupSet(GroupSet, XItemSet):
self._data[self._size, :groupsize] = members
self._groupsizes[self._size] = groupsize
self._size = self._size + 1
self._size += 1
self._map.add_item(group_id)
return self._size - 1
def erase_group(self, igroup):
raise NotImplementedError("has not been tested yet")
self._data = np.delete(self._data, igroup, axis=0)
self._groupsizes = np.delete(self._groupsizes, igroup, axis=0)
self._map.erase_item(igroup)
self._size -= 1
def set_group_members(self, igroup, members):
raise NotImplementedError("has not been tested yet")
......
......@@ -95,7 +95,11 @@ class ItemMap:
def add_item(self, item_id=None):
size = len(self._map)
if item_id is None:
item_id = size + 1
if size == 0:
item_id = 1
else:
maxkey = max(self._map, key=self._map.get)
item_id = type(maxkey)(int(maxkey) + 1)
if item_id in self._map.keys():
raise ValueError("item ID already exists in itemset")
self._map[item_id] = size
......@@ -105,4 +109,5 @@ class ItemMap:
if idx > iitem:
self._map[item_id] = idx - 1
elif idx == iitem:
self._map.pop(item_id)
pop_id = item_id
self._map.pop(pop_id)
......@@ -22,7 +22,7 @@ class NodeSet(PointSet):
class XNodeSet(NodeSet, XPointSet):
def add_node(self, coords, node_id=None):
self.add_point(coords, node_id)
return self.add_point(coords, node_id)
def erase_node(self, inode):
self.erase_point(inode)
......
......@@ -57,20 +57,21 @@ class XPointSet(PointSet, XItemSet):
self._data = np.pad(self._data, ((0, self._size), (0, 0)))
self._data[self._size] = coords
self._size = self._size + 1
self._size += 1
self._map.add_item(point_id)
return self._size - 1
def erase_point(self, ipoint):
raise NotImplementedError("has not been tested yet")
self._data = np.delete(self._data, ipoint, axis=0)
self._map.erase_item(ipoint)
self._size -= 1
def set_point_coords(self, ipoint, coords):
self._data[ipoint] = coords
def set_points(self, coords):
raise NotImplementedError("has not been tested yet")
if coords.shape[0] != self.size():
raise ValueError(
"first dimension of coords does not match the number of points"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment