Source code for opstool.pre.pre_utils

from ..utils import get_opensees_module

ops = get_opensees_module()


[docs] def find_void_nodes(remove: bool = False): """ Finds free nodes in the model, i.e. nodes that are not attached to any element. Parameters ---------- remove: bool, default=False If True, the function will remove the free nodes from the model. Returns ------- free_node_tags: list, a list containing all free nodes. """ ele_tags = ops.getEleTags() fixed_node_tags = ops.getFixedNodes() all_node_valid = [] for etag in ele_tags: nodes = ops.eleNodes(etag) all_node_valid.extend(nodes) all_node_valid += fixed_node_tags node_tags = ops.getNodeTags() node_invalid = list(set(node_tags) - set(all_node_valid)) if len(node_invalid) == 0: print("Info:: The model has no free nodes!") else: if remove: for ntag in node_invalid: ops.remove("node", ntag) print(f"Info:: Free nodes with tags {node_invalid} have been removed!") return node_invalid
[docs] def remove_void_nodes(): """ Removes free node from the model, i.e. nodes that are not attached to any element. Returns ------- free_node_tags: list, a list containing all free nodes. """ return find_void_nodes(remove=True)