1385 字
7 分钟
地球科学领域计算分析开源Julia软件包

Julia是一种高级通用动态编程语言,最初设计用于满足高性能数值分析和计算科学的需求。它的主要目标用户是数据科学家,统计学习者,和机器学习者。Julia语言的编程范式与其他流行语言(例如Python,C++,MATLAB)有很大不同,它强调的是通用性和性能。

Julia语言的特点包括卓越的性能,强大的基础库,容易上手,用户友好的界面。它可以轻松地集成R或Python等语言编写的库,大大提高工作效率。它的设计兼具 Matlab、Lisp、Mathematica、Ruby、Perl、R、Python 甚至 C 等其他编程语言的优点。Julia可以支持科学计算、机器学习、数据挖掘、大规模线性代数、分布式计算和并行计算等广泛的工作。

Julia软件包集合

Julia的社区和生态已经很完善,本文选取9个用于地球科学领域科学计算、建模、数据分析和可视化相关的开源Julia软件包进行介绍。

  • Oceananigans.jl

主要应用于在CPU和GPU上对非流体静力学和流体静力学Boussinesq方程进行有限体积模拟分析。使用它可以让简单的模拟变得容易,让复杂的、创造性的模拟成为可能。

https://github.com/CliMA/Oceananigans.jl

Deep convection in the ocean

海洋深层对流是一个将不同深度的水层混合在一起的过程。当密度高的水层覆盖在较浅的水层上时,就会发生对流。当海水冷却或海面盐度变高时,这一过程就会发生

Free ocean convection

自由对流又称对流,是浮力作用下的流体运动。当密度相对较大的流体位于密度相对较小的流体上方时,就会发生自由对流

对作用于分层海洋表面的强风应力以及从表面吸走热量的冷却通量进行理想化模拟。视频显示的是温度场,为直观起见,该域被切成两半。线图显示了水平平均温度曲线(右上角)、水平平均湍流动能(右中部)和水平平均浮力通量(或温度通量)。不寻常的周期棱镜色图用于显示表面冷却时的细节,以及受到内波扰动的不同温度层(isopycnals)

涡流通道

  • GeoStats.jl

是一个完全用 Julia 编写的地理空间数据科学和地理统计建模的可扩展框架。它由多个模块组成,用于高级几何处理、最先进的地质统计算法和复杂的地理空间数据可视化。

https://github.com/JuliaEarth/GeoStats.jl

  • SpeedyWeather.jl

支持全球光谱大气模型计算分析:

  • 不同的物理模型(气压涡度、浅水、原始方程干核和湿核)
  • 不同的空间网格(全网格和八面体网格、高斯网格和克伦肖-柯蒂斯网格、HEALPix、OctaHEALPix)
  • 不同的水平分辨率(T31 至 T1023 及更高分辨率,即使用线性、二次或三次截断的 400 公里至 10 公里分辨率)
  • 32 位单精度和 64 位双精度(16 位正在开发中)
  • 多线程,动力学为分层多线程,物理为网格点多线程(多处理正在开发中)
  • 不同的架构(X86 和 arm,GPU 正在开发中)

https://github.com/SpeedyWeather/SpeedyWeather.jl

浅水模型相对涡度

  • GMT.jl

通用制图工具(Generic Mapping Tools,GMT)是一个开放源码工具集合,用于处理地理和笛卡尔数据集(包括过滤、趋势拟合、网格划分、投影等),并制作 PostScript 插图,例如简单的 x-y 图到等值线图,并能转换为最常见的栅格格式(PNG、JPG、GeoTIFF 等)。虽然这是一个更适合地球科学的软件包,但它也可用于绘制二维和三维(透视,非体积)图形。

https://github.com/GenericMappingTools/GMT.jl

  • GeoMakie.jl

一个用于在给定地图投影上绘制地理空间数据的 Julia 软件包。

https://github.com/MakieOrg/GeoMakie.jl

全球海底光缆网络分布

  • ClimateTools.jl

一个气候科学常用工具集,其中包括气候场分析的基础知识,以及一些探索性技术。该工具包旨在简化从 netCDF 文件中分析气候模型输出的典型步骤,该文件遵循气候预测惯例,并可创建气候情景。

https://github.com/JuliaClimate/ClimateTools.jl

  • ShallowWaters.jl

一个类型灵活的 16 位浅水模型,采用能量和能量守恒平流方案以及类似于 Smagorinsky 的双谐扩散算子。示踪平流采用半拉格朗日平流方案。采用不同阶次和阶段的强稳定性 Runge-Kutta 方案,对连续性方程进行半隐式处理。边界条件为周期性(仅在 x 方向)或非周期性超滑移、自由滑移、部分滑移或无滑移。

https://github.com/milankl/ShallowWaters.jl

  • DIVAnd.jl

DIVAnd Variational Analysis in n dimensions. 可以对任意位置的观测数据进行 n 维变异分析/网格划分。观测数据将在 1、2、3 或更多维的曲线网格上进行插值/分析。https://github.com/gher-uliege/DIVAnd.jl

  • ArchGDAL.jl

此软件包旨在成为在 Julia 中使用 GDAL 的完整解决方案,其范围类似于 Python 的 SWIG 绑定以及 Fiona 和 Rasterio。它建立在 GDAL.jl 的基础之上,为 GDAL 提供了高级 API。

https://github.com/yeesian/ArchGDAL.jl


本公众号关于地球科学领域软件包的文章:

地球科学领域计算分析开源Julia软件包
https://blog.scidatalab.net/posts/地球科学领域计算分析开源julia软件包/
作者
Echo
发布于
2024-01-17
许可协议
CC BY-NC-SA 4.0