sgio.validate_node_ids#
- sgio.validate_node_ids(node_ids: List[int] | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes], n_nodes: int | None = None, format: Literal['generic', 'vabs', 'swiftcomp', 'abaqus'] = 'generic') None#
Validate node ID numbering according to format requirements.
Validates that node IDs meet the requirements for the specified format: - generic: No specific requirements (always passes) - vabs/swiftcomp: Must be consecutive integers from 1 to n_nodes, no duplicates - abaqus: Must be positive integers (>= 1), no duplicates, ID=0 forbidden
- Parameters:
node_ids (list of int or array-like) – List or array of node IDs to validate.
n_nodes (int, optional) – Expected number of nodes. If None, uses len(node_ids).
format ({'generic', 'vabs', 'swiftcomp', 'abaqus'}, default 'generic') – Format to validate against: - ‘generic’: No validation (always passes) - ‘vabs’: Requires consecutive integers from 1 - ‘swiftcomp’: Requires consecutive integers from 1 - ‘abaqus’: Requires positive integers, no ID=0
- Raises:
ValueError – If node IDs do not meet format requirements (duplicates, forbidden IDs, or non-consecutive numbering).
Examples
>>> # Valid consecutive numbering for VABS >>> validate_node_ids([1, 2, 3, 4, 5], format='vabs')
>>> # Invalid - missing node 3 >>> validate_node_ids([1, 2, 4, 5], format='vabs') ValueError: Node IDs must be consecutive integers from 1 to 4
>>> # Invalid - duplicate IDs >>> validate_node_ids([1, 2, 2, 3], format='vabs') ValueError: Duplicate Node IDs found: [2]
>>> # Invalid - forbidden ID=0 for Abaqus >>> validate_node_ids([0, 1, 2, 3], format='abaqus') ValueError: Forbidden Node IDs found: [0]
>>> # Generic format always passes >>> validate_node_ids([10, 20, 30], format='generic')