Я действительно не хочу пытаться сделать это с нуля. и думал, что это будет хлеб с маслом для pyngl, metview или metpy, но похоже, что ilapsf не выполнил переход на python, а metpy выполняет только более простые лапласовские вычисления, а не решает обратное Лапласиан. Я также ничего не нашел в scipy или numpy.
Старый код в ncl был таким простым:
Код: Выделить всё
chi = ilapsF_Wrap(nei,0) # inverse laplace
gradchi = grad_latlon_cfd(chi, chi&latitude, chi&longitude, True, False) # calculate the gradient
Код: Выделить всё
from cdo import Cdo
cdo=Cdo()
# convert flux divergence into GG and the spectral G:
cdo.gp2sp(input="-remapcon,T511grid -selvar,nei nei.nc",output="neisp.nc")
# fudge CDO into thinking this is pure divergence (code=155)
cdo.chname("nei,sd",input="neisp.nc",output="tmp_vd.nc")
# make up a zero field for vorticity
cdo.chname("nei,svo",input="-gec,1e36 neisp.nc",output="tmp_vo.nc")
# the result is energy flux, not winds, so we will need to change the output names (and eventually metadata):
cdo.dv2uv(input="-merge tmp_vo.nc tmp_vd.nc",output="tmp_fluxes.nc")
cdo.chname("v,vflux",input="-chname,u,uflux tmp_fluxes.nc",output="fluxes.nc")
Подробнее здесь: https://stackoverflow.com/questions/774 ... data-array