def makeCorrectTree(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')) return (T, b, z)
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], [5, 4, 0]], order='F')) g = CGL.newGridCoordinates(z1, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((5, 7, 5), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, NPY.ones((5, 7, 5), dtype='float64', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, NPY.ones((5, 7, 5), dtype='float64', order='F')) s = NPY.array([[vertexsize, cellsize, 0]], dtype='int32', order='F') z2 = CGU.copyNode(z1, 'Zone2') b[2].append(z2) z = [z1, z2] return (T, b, z)
def genTrees(): tree = CGL.newCGNSTree() b = CGL.newBase(tree, '{Base}', 2, 3) z = CGL.newZone(b, '{Zone}', numpy.array([[5, 4, 0], [7, 6, 0]], order='F')) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, numpy.ones((5, 7), dtype='d', order='F')) d = CGL.newDataArray(g, CGK.CoordinateY_s, numpy.ones((5, 7), dtype='d', order='F')) d = CGL.newDataArray(g, CGK.CoordinateZ_s, numpy.ones((5, 7), dtype='d', order='F')) return (tree, )
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)
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)
def makeStTree(vertexsize, cellsize): T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base}', 3, 3) z = CGL.newZone( b, '{Zone}', NPY.array( [[vertexsize[0], cellsize[0], 0], [vertexsize[1], cellsize[1], 0], [vertexsize[2], cellsize[2], 0]], order='F')) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray( g, CGK.CoordinateX_s, NPY.ones(tuple(vertexsize), dtype='float64', order='F')) d = CGL.newDataArray( g, CGK.CoordinateY_s, NPY.ones(tuple(vertexsize), dtype='float64', order='F')) d = CGL.newDataArray( g, CGK.CoordinateZ_s, NPY.ones(tuple(vertexsize), dtype='float64', order='F')) return (T, b, z)
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)
# pyCGNS - Python package for CFD General Notation System - # See license.txt file in the root directory of this Python module source # ------------------------------------------------------------------------- # import CGNS.PAT.cgnslib as CGL import CGNS.PAT.cgnsutils as CGU import CGNS.PAT.cgnskeywords as CGK import numpy as NPY TESTS = [] # ------------------------------------------------------------------------- tag = 'flow equation set' diag = True T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base#001}', 3, 3) f = CGL.newFlowEquationSet(b) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'governing equations' diag = True T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base#001}', 3, 3) f = CGL.newFlowEquationSet(b) g = CGL.newGoverningEquations(f) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'diffusion model' diag = True
#!/usr/bin/env python # ------------------------------------------------------------------------- # pyCGNS.PAT - CFD General Notation System - # See license.txt file in the root directory of this Python module source # ------------------------------------------------------------------------- # from __future__ import print_function import CGNS.PAT.cgnslib as CGL import CGNS.PAT.cgnsutils as CGU T = CGL.newCGNSTree() B = CGL.newBase(T, 'Base', 3, 3) Z = CGL.newZone(B, 'Zone1') Z = CGL.newZone(B, 'Zone2') Z = CGL.newZone(B, 'Zone3') Z = CGL.newZone(B, 'Zone4') l1 = CGU.getAllNodesByTypeList(T, ['CGNSTree_t', 'CGNSBase_t', 'Zone_t']) l2 = CGU.getAllNodesByTypeSet(T, ['Zone_t', 'IndexArray_t']) print(l1) print(l2) print(CGU.getNodeByPath(l1[0], T)) l3 = CGU.getAllNodesByTypeList(B, ['CGNSBase_t', 'Zone_t']) l4 = CGU.getAllNodesByTypeSet(B, ['Zone_t']) print(l3) print(l4)
# See license.txt file in the root directory of this Python module source # ------------------------------------------------------------------------- # import CGNS.PAT.cgnslib as CGL import CGNS.PAT.cgnsutils as CGU import CGNS.PAT.cgnskeywords as CGK import numpy as NPY TESTS = [] # ------------------------------------------------------------------------- tag = 'multi bases' diag = True T = CGL.newCGNSTree() for i in range(10): CGL.newBase(T, '{Base#%.2d}' % i, 3, 3) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad base dims #1' diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base}', 3, 3) b[1] = None TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad base dims #2' diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base#1}', 3, 3)
v[1] = NPY.array([6.8], dtype='float32') TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad version #2' diag = False T = CGL.newCGNSTree() v = CGU.hasChildName(T, CGK.CGNSLibraryVersion_s) v[1] = NPY.array([3]) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad struct #1' diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base#1}', 3, 3) b.append(None) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad struct #2' diag = False T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base#1}', 3, 3) b[2] = {} TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'bad name #1' diag = False T = CGL.newCGNSTree()
# --------------------------------------------------------------------------- # pyCGNS - Python package for CFD General Notation System - # See license.txt file in the root directory of this Python module source # --------------------------------------------------------------------------- # import CGNS.PAT.cgnslib as C import CGNS.PAT.cgnserrors as E import CGNS.PAT.cgnskeywords as K import numpy as N data = C.newBase(None, '{Base}', 3, 3) C.newZone(data, '{Zone}', N.array([[5, 4, 0], [7, 6, 0], [9, 8, 0]], order='F')) C.newSimulationType(data) C.newIntegralData(data, '{IntegralData}') C.newBaseIterativeData(data, '{BaseIterativeData}') C.newConvergenceHistory(data) C.newFamily(data, '{Family}') C.newFlowEquationSet(data) C.newReferenceState(data) C.newAxisymmetry(data) C.newRotatingCoordinates(data) C.newGravity(data) C.newDataClass(data) C.newDimensionalUnits(data) C.newUserDefinedData(data, '{UserDefinedData}') C.newDescriptor(data, '{Descriptor}') status = '6.2' comment = 'Full SIDS with all optionals children' pattern = [data, status, comment]
# pyCGNS - Python package for CFD General Notation System - # See license.txt file in the root directory of this Python module source # ------------------------------------------------------------------------- # import CGNS.PAT.cgnslib as CGL import CGNS.PAT.cgnsutils as CGU import CGNS.PAT.cgnskeywords as CGK import numpy as NPY TESTS = [] # ------------------------------------------------------------------------- tag = 'grid 1D' diag = True T = CGL.newCGNSTree() b = CGL.newBase(T, '{Base}', 1, 1) z = CGL.newZone(b, '{Zone}', NPY.array([[5, 4, 0]], order='F')) g = CGL.newGridCoordinates(z, 'GridCoordinates') d = CGL.newDataArray(g, CGK.CoordinateX_s, NPY.ones((5, ), dtype='float64', order='F')) g = CGL.newGridCoordinates(z, '{Grid#002}') d = CGL.newDataArray(g, CGK.CoordinateR_s, NPY.ones((5, ), dtype='float64', order='F')) g = CGL.newGridCoordinates(z, '{Grid#003}') d = CGL.newDataArray(g, CGK.CoordinateXi_s, NPY.ones((5, ), dtype='float64', order='F')) TESTS.append((tag, T, diag)) # ------------------------------------------------------------------------- tag = 'grid 2D' diag = True
def makeStTree(): 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')) z2 = CGU.copyNode(z1, '{Zone2}') b[2].append(z2) zgc = CGL.newZoneGridConnectivity(z1) gc = CGL.newGridConnectivity1to1(zgc, 'join1_2', '{Zone2}', NPY.array([[1, 1], [1, 4], [1, 9]]), NPY.array([[5, 5], [3, 7], [1, 9]]), NPY.array([-1, +2, +3])) zgc = CGL.newZoneGridConnectivity(z2) gc = CGL.newGridConnectivity1to1(zgc, 'join2_1', '{Zone1}', NPY.array([[5, 5], [3, 7], [1, 9]]), NPY.array([[1, 1], [1, 4], [1, 9]]), NPY.array([-1, +2, +3])) zbc = CGL.newZoneBC(z1) n = CGL.newBoundary(zbc, '{BC1_1}', [[5, 5], [1, 7], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC1_2}', [[1, 5], [1, 1], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC1_3}', [[1, 5], [7, 7], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC1_4}', [[1, 5], [1, 7], [1, 1]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC1_5}', [[1, 5], [1, 7], [9, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC1_6}', [[1, 1], [4, 7], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) zbc = CGL.newZoneBC(z2) n = CGL.newBoundary(zbc, '{BC2_1}', [[1, 1], [1, 7], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC2_2}', [[1, 5], [1, 1], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC2_3}', [[1, 5], [7, 7], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC2_4}', [[1, 5], [1, 7], [1, 1]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC2_5}', [[1, 5], [1, 7], [9, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) n = CGL.newBoundary(zbc, '{BC2_6}', [[5, 5], [1, 3], [1, 9]], btype=CGK.Null_s, family=None, pttype=CGK.PointRange_s) g = CGL.newGridLocation(n, value=CGK.FaceCenter_s) z = [z1, z2] return (T, b, z)
u_arr = var_mat[:,6] v_arr = var_mat[:,7] p_arr = var_mat[:,8] # For now, skip the elem connectivity section. Because I do not need it. ############################## # Write to CGNS file ############################## import CGNS.PAT.cgnsutils as CGU import CGNS.PAT.cgnslib as CGL import CGNS.PAT.cgnskeywords as CK import CGNS.MAP as CGM T=CGL.newCGNSTree() B=CGL.newBase(T,'hpMusic_base',2,2) # The shape (3,1) is critical zone_size = np.array([[n_node, n_elem, 0]]) Z=CGL.newZone(B,'Solution',zone_size,CK.Unstructured_s,'') GC=CGL.newGridCoordinates(Z,name='GridCoordinates') FS=CGL.newFlowSolution(Z,name='FlowSolution',gridlocation='Vertex') GL=CGU.getNodeByPath(FS,'GridLocation') CGU.nodeDelete(FS,GL) coordinatex_node = CGL.newDataArray(GC,'CoordinateX',value=x_arr) coordinatey_node = CGL.newDataArray(GC,'CoordinateY',value=y_arr) density_node = CGL.newDataArray(FS,'Density',value=rho_arr) velocityx_node = CGL.newDataArray(FS,'VelocityX',value=u_arr) velocityy_node = CGL.newDataArray(FS,'VelocityY',value=v_arr) p_node = CGL.newDataArray(FS,'Pressure',value=p_arr)