def makeCorrectTree(vertexsize, cellsize, ntris): T = CGL.newCGNSTree() b = CGL.newBase(T, 'Base', 3, 3) s = NPY.array([[vertexsize, cellsize, 0]], dtype='int32', order='F') z = CGL.newZone(b, 'Zone', s, CGK.Unstructured_s) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((vertexsize), dtype='float64', order='F')) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) tris = CGL.newElements( z, 'TRIS', CGK.TRI_3_s, NPY.ones((ntris * 3), dtype='int32'), NPY.array([[cellsize + 1, cellsize + ntris]], 'i', order='F')) zbc = CGL.newZoneBC(z) n = CGL.newBoundary(zbc, 'BC', [range(cellsize + 1, cellsize + ntris + 1)], btype=CGK.Null_s, family=None, pttype=CGK.PointList_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) return (T, b, z, zbc, n, g)
def makeCorrectTree(): T = CGL.newCGNSTree() b = CGL.newBase(T, 'Base', 3, 3) z1 = CGL.newZone(b, 'Zone1', NPY.array([[5, 4, 0], [7, 6, 0], [9, 8, 0]], order='F')) g = CGL.newGridCoordinates(z1, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((5, 7, 9), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((5, 7, 9), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((5, 7, 9), dtype='float64', order='F')) s = NPY.array([[vertexsize, cellsize, 0]], dtype='int32', order='F') z2 = CGL.newZone(b, 'Zone2', s, CGK.Unstructured_s) g = CGL.newGridCoordinates(z2, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((vertexsize), dtype='float64', order='F')) tetras = CGL.newElements(z2, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) tris = CGL.newElements( z2, 'TRIS', CGK.TRI_3_s, NPY.ones((ntris * 3), dtype='int32'), NPY.array([[cellsize + 1, cellsize + ntris]], 'i', order='F')) z3 = CGU.copyNode(z1, 'Zone3') b[2].append(z3) z4 = CGU.copyNode(z2, 'Zone4') b[2].append(z4) z = [z1, z2, z3, z4] return (T, b, z)
def makeUnstTree(vertexsize, cellsize): T = CGL.newCGNSTree() b = CGL.newBase(T, 'Base', 3, 3) s = NPY.array([[vertexsize, cellsize, 0]], dtype='int32', order='F') z = CGL.newZone(b, 'Zone', s, CGK.Unstructured_s) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((vertexsize), dtype='float64', order='F')) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) return (T, b, z)
z = CGL.newZone(b, 'Zone', s, CGK.Unstructured_s) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((vertexsize), dtype='float64', order='F')) return (T, b, z) vertexsize = 20 cellsize = 7 (T, b, z) = makeCorrectTree(vertexsize, cellsize) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'indexrange index bad ordered' # this raises a warning, not an error diag = True (T, b, z) = makeCorrectTree(vertexsize, cellsize) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[cellsize, 1]], 'i', order='F')) # element range not ordered TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'indexrange bad node shape'
(T, b, z, zbc) = makeCorrectTree(vertexsize, cellsize) n = CGL.newBoundary(zbc, 'BC', [[1, 2, 0, 4, vertexsize + 1]], btype=CGK.Null_s, family=None, pttype=CGK.PointList_s) # element index out of range g = CGL.newGridLocation(n, value=CGK.Vertex_s) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'indexarray gridlocation face' diag = True (T, b, z, zbc) = makeCorrectTree(vertexsize, cellsize) ntris = 12 tris = CGL.newElements( z, 'TRIS', CGK.TRI_3_s, NPY.ones((ntris * 3), dtype='int32'), NPY.array([[cellsize + 1, cellsize + ntris]], 'i', order='F')) n = CGL.newBoundary(zbc, 'BC', [range(cellsize + 1, cellsize + ntris + 1)], btype=CGK.Null_s, family=None, pttype=CGK.PointList_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'indexarray gridlocation face index out of range #1' diag = False (T, b, z, zbc) = makeCorrectTree(vertexsize, cellsize) ntris = 12 tris = CGL.newElements(
# --------------------------------------------------------------------------- # pyCGNS - Python package for CFD General Notation System - # See license.txt file in the root directory of this Python module source # --------------------------------------------------------------------------- # from __future__ import unicode_literals import CGNS.PAT.cgnslib as C import CGNS.PAT.cgnserrors as E import CGNS.PAT.cgnskeywords as K import numpy as N # data = C.newElements(None, '{Elements_t}') C.newDataArray(data, K.ParentData_s) C.newRind(data, N.array([0, 0, 0, 0, 1, 1])) C.newUserDefinedData(data, '{UserDefinedData}') C.newDescriptor(data, '{Descriptor}') # status = '7.3' comment = 'Full SIDS with all optionals' pattern = [data, status, comment] #
z = CGL.newZone(b, 'Zone', s, CGK.Unstructured_s) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((vertexsize), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((vertexsize), dtype='float64', order='F')) return (T, b, z) vertexsize = 20 cellsize = 7 (T, b, z) = makeCorrectTree(vertexsize, cellsize) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'elements bad elementsizeboundary' diag = False (T, b, z) = makeCorrectTree(vertexsize, cellsize) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((cellsize * 4), dtype='int32'), NPY.array([[1, cellsize]], 'i', order='F')) tetras[1][1] = cellsize zbc = CGL.newZoneBC(z) n = CGL.newBoundary(zbc, 'BC', [range(1, cellsize + 1)], btype=CGK.Null_s,
diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base}', 3, 3) z = CGL.newZone(b, '{Zone}', NPY.array([[5, 4, 0], [7, 6, 0], [9, 8, 0]], order='F')) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones(5, dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones(5, dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones(5, dtype='float64', order='F')) zt = CGU.hasChildName(z, CGK.ZoneType_s) zt[1] = CGU.setStringAsArray(CGK.Unstructured_s) tetras = CGL.newElements(z, 'TETRAS', CGK.TETRA_4_s, NPY.ones((4 * 4), dtype='int32'), NPY.array([[1, 4]], 'i', order='F')) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'zone unstructured bad dims' diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base}', 3, 3) z = CGL.newZone(b, '{Zone}', NPY.array([[4, 5, 0]], order='F')) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones(4, dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones(4, dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s,