Я хочу инвертировать лапласиан на двухмерной фиксированной сетке в Python, что можно было сделать в ncl с помощью функции ilapsf. Я действительно не хочу пытаться сделать это с нуля, используя свертку, и думал, что это будет хлеб с маслом 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
Мне удалось использовать функцию dv2uv в cdo, но это выдумка века: она включала преобразование в спектральное поле, а затем обманывала его, превращая сходимость потока в поле дивергенции, создание фиктивного поля нулевой завихренности, а затем превращение u и v в потоки энергии... (плюс меридиональный поток делает странные вещи на полюсах, с которыми может справиться решение ncl).
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
Инвертируйте лапласиан двумерного массива данных с фиксированной сеткой ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Инвертируйте лапласиан двумерного массива данных с фиксированной сеткой
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-