#spectra #waves #physics #ocean #math

ndspec

用于海洋波浪和能量谱的包

2个版本

0.1.1 2024年8月4日
0.1.0 2024年8月2日

#773算法

Download history 173/week @ 2024-07-29 50/week @ 2024-08-05

223 每月下载量

MIT 许可证

145KB
3K SLoC

ndspec

一个专注于能量密度谱的海洋波浪crate。


lib.rs:

ndspec

ndspec 是一个专注于海洋波浪、风及相关响应谱的能量密度谱crate。

该crate组织如下模块

  • core - 处理能量密度谱的核心功能。
  • waves - 计算海洋波浪能量密度谱的函数。
  • wind - 计算风能量密度谱的函数。
  • spectrum - 提供一维和二维谱的 Spectrum1 和 'Spectrum2' 类型。

所有波浪和风谱都可以转换为 Spectrum1Spectrum2 类型。这些类型提供了处理和评估能量密度谱的各种特性。

该crate设计用于与 ndarray crate 一起使用。底层数据结构采用 ndarray::Array1ndarray::Array2 类型。

该crate还提供了一个可以单独编译和安装的Python扩展。

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
ndspec = "0.1.0"

用法

以下示例演示了如何计算Bretschneider波浪谱的能量密度谱

use ndspec::prelude::*;

let hs = 1.5;
let tp = 18.0;
let mut bretschneider = Bretschneider::new(hs, tp);
let omega = Array1::linspace(0.1, PI, 100);
let energy = bretschneider.set_omega(omega).energy();

Python扩展

该crate提供了一个可以单独编译和安装的Python扩展。要构建扩展,需要 maturin 并且必须启用 python-extension 功能

maturin build --release --features python-extension

并使用 pip 安装。

示例

仅从Hs和Tp定义Jonswap能量密度谱,转换为 Spectrum1D 类型,然后评估在3小时(10,800秒)时间窗口内的最大可能振幅

import ndspec
S = ndspec.Jonswap(hs=1.5, tp=10.0).to_spec1d()
print(S.Ampm(10_800))

打印出Python中Jonswap类的帮助信息:

import ndspec
help(ndspec.Jonswap)

![能量密度数据结构][label_matrix]

依赖关系

~6–13MB
~156K SLoC