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')