level.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:Fluid2d 作者: pvthinker 项目源码 文件源码
def combine_global(grid,x):
    """ return the global x array living on 'grid' """

    comm = MPI.COMM_WORLD

    nh = grid.nh
    nv = grid.nv
    mv = grid.mv
    N  = nv*mv
    np = grid.np0
    mp = grid.mp0
    n= grid.n
    m= grid.m

    di,dj=n,m
    di,dj=nv+2,mv+2

    nv0 = di*np
    mv0 = dj*mp



    sizes = ones(np*mp)*N
    offsets=arange(np*mp).reshape((mp,np)).ravel()*N

    buff_loc=x.ravel().copy()
    buff_loc[grid.msk.ravel()==0]=NaN
    buff_glo=zeros(N*np*mp)

    comm.Allgatherv(buff_loc,[buff_glo,sizes,offsets,MPI.DOUBLE])

    I,J=meshgrid(arange(nv),arange(mv))

    xglo = zeros((mv0,nv0))
    for j in range(mp):
        for i in range(np):
            k=i+j*np
            xglo[J+j*dj,I+i*di]=buff_glo[k*N:(k+1)*N].reshape((mv,nv))

    return xglo

#----------------------------------------
# to check how the matrix looks like on the various grids
# interesting!
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号