Beispiel #1
0
def test_load_ugrid_data():
    # a single cell
    # 3....>2....2
    # :          :
    # v          ^
    # 1          0
    # :          :
    # 0....<3....1
    xyz = numpy.array([(0., 0., 0.), (1., 0., 0.), (1., 1., 0.), (0., 1., 0.)],
                      dtype=numpy.float64)
    face2nodes = numpy.array([
        (0, 1, 2, 3),
    ], dtype=numpy.uintp)
    edge2nodes = numpy.array(
        [
            (1, 2),  # edge 0
            (3, 0),  # edge 1
            (3, 2),  # edge 2
            (1, 0)
        ],  # edge 3
        dtype=numpy.uintp)

    gr = Grid()
    gr.setFlags(0, 0)
    gr.loadFromUgrid2DData(xyz, face2nodes, edge2nodes)

    n0, n1 = gr.getNodeIds(cellId=0, edgeIndex=0)
    assert (n0 == 0)
    assert (n1 == 1)

    n0, n1 = gr.getNodeIds(cellId=0, edgeIndex=1)
    assert (n0 == 1)
    assert (n1 == 2)

    n0, n1 = gr.getNodeIds(cellId=0, edgeIndex=2)
    assert (n0 == 3)
    assert (n1 == 2)

    n0, n1 = gr.getNodeIds(cellId=0, edgeIndex=3)
    assert (n0 == 0)
    assert (n1 == 3)

    gr.dump('singleCell.vtk')
Beispiel #2
0
def test_loadFromUgrid2DData():

    # src grid
    sg = Grid()
    sg.setFlags(0, 0)  # lon-lat
    filename = str(DATA_DIR / Path('lonlatzt_100x50x3x2.nc'))
    sg.loadFromUgrid2DFile(f'{filename}$mesh2d')

    # dst grid
    dg = Grid()
    dg.setFlags(0, 0)

    # 2 cells/faces
    #
    # 3..1<...2...>5..5
    # :       :       :
    # v       v       ^
    # 6   0   3   1   4
    # :       :       :
    # 0..>2...1...>0..4
    xyz = numpy.array([
        (0., 0., 0.),
        (1., 0., 0.),
        (1., 1., 0.),
        (0., 1., 0.),
        (2., 0., 0.),
        (2., 1., 0.),
    ])
    face2nodes = numpy.array([(0, 1, 2, 3), (2, 1, 4, 5)], numpy.uint64)
    edge2nodes = numpy.array([(1, 4), (2, 3), (0, 1), (2, 1), (4, 5), (2, 5),
                              (3, 0)], numpy.uint64)
    dg.loadFromUgrid2DData(xyz, face2nodes, edge2nodes)

    # create a regridder
    rg = RegridEdges()
    rg.setSrcGrid(sg)
    rg.setDstGrid(dg)
    rg.buildLocator(numCellsPerBucket=128, periodX=0., enableFolding=False)
    rg.computeWeights()