- // ElementConnectivity = Nnodes1, Node11, Node21, ... NodeN1,
- // Nnodes2, Node12, Node22, ... NodeN2,
- // ...
- // NnodesM, Node1M, Node2M, ... NodeNM
- const int nbNodes = elemData[ pos ];
- zone.ReplaceNodes( &elemData[pos+1], nbNodes, zone._nodeIdShift );
- newElem = add_NGON( &elemData[pos ], myMesh, elemID );
- pos += nbNodes + 1;
+ int nbNodes;
+ if ( polyOffset.empty() )
+ // ElementConnectivity = Nnodes1, Node11, Node21, ... NodeN1,
+ // Nnodes2, Node12, Node22, ... NodeN2,
+ // ...
+ // NnodesM, Node1M, Node2M, ... NodeNM
+ nbNodes = elemData[ pos ];
+ else // CGNS_VERSION >= 4000
+ // ElementConnectivity = Node11, Node21, ... NodeN1,
+ // Node12, Node22, ... NodeN2,
+ // ...
+ // Node1M, Node2M, ... NodeNM
+ nbNodes = polyOffset[ iElem + 1 ] - polyOffset[ iElem ];
+
+ zone.ReplaceNodes( &elemData[ pos + polyOffset.empty()], nbNodes, zone._nodeIdShift );
+ newElem = add_NGON( &elemData[ pos ], nbNodes, myMesh, elemID );
+ pos += nbNodes + polyOffset.empty();