Инвертируйте лапласиан двумерного массива данных с фиксированной сеткойPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Инвертируйте лапласиан двумерного массива данных с фиксированной сеткой

Сообщение Anonymous »

Я хочу инвертировать лапласиан на 2d фиксированной сетке в Python, а затем взять градиент, первый шаг которого можно было сделать в ncl с помощью функции ilapsf. По сути, это противоположная (обратная функция) этому вопросу, т. е. мне нужна обратная функция scipy.ndimage.laplace.
Я действительно не хочу пытаться сделать это с нуля. и думал, что это будет хлеб с маслом для 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")
На этом этапе я бы принял ответ на любом языке, включая Fortran, C++ или Julia.

Подробнее здесь: https://stackoverflow.com/questions/774 ... data-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Инвертируйте лапласиан двумерного массива данных с фиксированной сеткой
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Поворот и подсчет сгруппированных значений двумерного массива для создания нового двумерного массива со столбцами с нуле
    Anonymous » » в форуме Php
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Лапласиан гауссовского (LoG) детектора BLOB-объектов C++
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Добавьте гибкий div к герою и инвертируйте положение при изменении размера
    Гость » » в форуме CSS
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Инвертируйте файл .obj с помощью Python
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»