爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 399|回复: 11

[经验总结] windspharm的一点坑

[复制链接]
发表于 2025-7-31 14:46:50 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一大碗年糕 于 2025-7-31 14:51 编辑

早上在改网上找到一段代码,里面用到了windspharm来计算流函数,但是我用xarray读取的u,v数据导入怎么样都报错
  1. u=xr.open_dataarray("uwnd_DJF_200hPa.nc")
  2. v=xr.open_dataarray("vwnd_DJF_200hPa.nc")
  3. w=VectorWind(u,v)
  4. ValueError: invalid input dimensions
复制代码
折腾了将近两个小时,才发现这个代码导入的是
  1. from  windspharm.standard import VectorWind
复制代码
而xarray数据所需要的是
  1. from windspharm.xarray import VectorWind
复制代码
这两个接口出来的命名都是VectorWind函数,而报错根本看不出来这个问题...开个贴记录下
密码修改失败请联系微信:mofangbao
发表于 2025-7-31 15:41:27 | 显示全部楼层
  确实是个大坑
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-7-31 16:20:53 | 显示全部楼层
网上开源的对非全球的速度势和流函数的算法,还是有偏差没有办法
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-31 17:38:50 | 显示全部楼层
本帖最后由 一大碗年糕 于 2025-7-31 17:41 编辑
tulalang 发表于 2025-7-31 16:20
网上开源的对非全球的速度势和流函数的算法,还是有偏差没有办法

是的之前也用过NCL的uv2sfvpF和windspharm,全球不涉及边界条件有唯一解析解。区域的有边界条件求解根据不同方法似乎结果都不同,而且我印象windspharm好像必须全纬度(经度可以区域),想请教一下还有没有什么可以用来算区域速度势流函数的现成算法?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-7-31 19:04:58 | 显示全部楼层
一大碗年糕 发表于 2025-7-31 17:38
是的之前也用过NCL的uv2sfvpF和windspharm,全球不涉及边界条件有唯一解析解。区域的有边界条件求解根据 ...

之前看过GitHub上别人的现成的库,但是和windspharm对比还是有差别,差得有点大,很难使用。之前看过大气科学里朱老师的论文 DOI: 10.3878/j.issn.1006-9895.2009.04.14   但是没有复现过,没和windspharm比对过。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2025-7-31 19:15:19 | 显示全部楼层
朱宗申, 朱国富, 张林. 2009: 用有限区域风速场准确求解流函数和速度势场的方法. 大气科学, 33(4): 811-824. DOI: 10.3878/j.issn.1006-9895.2009.04.14
这篇
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-31 23:33:48 | 显示全部楼层
tulalang 发表于 2025-7-31 19:15
朱宗申, 朱国富, 张林. 2009: 用有限区域风速场准确求解流函数和速度势场的方法. 大气科学, 33(4): 811-824 ...

好的感谢感谢~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 前天 19:01 | 显示全部楼层
windspharm是基于pyspharm库来实现的,其中pyspharm是 实现球面谐波的计算,之所以要使用全球数据,是为了能够构造成 一个球体,这样才能准确计算,如果存在缺测值,那么会有问题,而且 pyspharm库是使用Fortran代码实现的 需要使用tools里面的 prep_data来转换数据维度,pyspharm库和windpsharm已经被我整合进我自己的库skyborn,同时对这俩个库做了cpu上的加速优化,安装简单,在python3.9到3.12直接pip install skyborn即可,详细使用可以查看skyborn文档:https://skyborn.readthedocs.io/e ... pharm_tutorial.html
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 19:06 | 显示全部楼层
千与千叶 发表于 2025-8-6 19:01
windspharm是基于pyspharm库来实现的,其中pyspharm是 实现球面谐波的计算,之所以要使用全球数据,是为了 ...

给力,想再问下关于有限区域的流函数势函数计算求解有没有一些推荐
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 前天 19:16 | 显示全部楼层
一大碗年糕 发表于 2025-8-6 19:06
给力,想再问下关于有限区域的流函数势函数计算求解有没有一些推荐

可以参考我参与开发的另外一个库 xinvert 这个是使用SOR方法求解泊松方程:https://github.com/miniufo/xinvert
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表