24个版本 (13个稳定版)
1.6.2 | 2024年7月23日 |
---|---|
1.4.0 | 2024年4月30日 |
1.0.0 | 2024年3月30日 |
0.8.0 | 2024年2月12日 |
0.1.3 | 2021年10月23日 |
#72 in 数学
每月下载量172次
用于 2 crates
2MB
35K SLoC
Russell Tensor - 连续介质力学的张量分析、微积分和函数
此crate是Russell - Rust科学库的一部分
内容
简介
此库实现了张量分析和微积分的结构和函数。该库专注于工程和[连续介质力学](连续介质力学)的应用。针对目标应用的基本功能包括二阶和四阶张量、标量“不变量”和导数。
此库实现了关于张量的标量函数的导数、关于张量的张量函数以及其他的导数。该库内部考虑了一个方便的基表示法,称为Mandel基(类似于Voigt记号)。用户也可以使用Mandel基直接执行更简单的矩阵-向量运算。
文档
安装
此crate依赖于一些非Rust高性能库。有关安装这些依赖项的步骤,请参阅主README文件。
设置Cargo.toml
👆 检查crate版本并更新Cargo.toml
[dependencies]
russell_tensor = "*"
可选功能
以下(Rust)功能可用
intel_mkl
:使用Intel MKL代替OpenBLAS
请注意,主README文件介绍了根据每个功能编译所需库的步骤。
🌟 示例
本节说明了如何使用russell_tensor
。另请参阅
分配二阶张量
use russell_tensor::{Mandel, StrError, Tensor2, SQRT_2};
fn main() -> Result<(), StrError> {
// general
let a = Tensor2::from_matrix(
&[
[1.0, SQRT_2 * 2.0, SQRT_2 * 3.0],
[SQRT_2 * 4.0, 5.0, SQRT_2 * 6.0],
[SQRT_2 * 7.0, SQRT_2 * 8.0, 9.0],
],
Mandel::General,
)?;
assert_eq!(
format!("{:.1}", a.vector()),
"┌ ┐\n\
│ 1.0 │\n\
│ 5.0 │\n\
│ 9.0 │\n\
│ 6.0 │\n\
│ 14.0 │\n\
│ 10.0 │\n\
│ -2.0 │\n\
│ -2.0 │\n\
│ -4.0 │\n\
└ ┘"
);
// symmetric-3D
let b = Tensor2::from_matrix(
&[
[1.0, 4.0 / SQRT_2, 6.0 / SQRT_2],
[4.0 / SQRT_2, 2.0, 5.0 / SQRT_2],
[6.0 / SQRT_2, 5.0 / SQRT_2, 3.0],
],
Mandel::Symmetric,
)?;
assert_eq!(
format!("{:.1}", b.vector()),
"┌ ┐\n\
│ 1.0 │\n\
│ 2.0 │\n\
│ 3.0 │\n\
│ 4.0 │\n\
│ 5.0 │\n\
│ 6.0 │\n\
└ ┘"
);
// symmetric-2D
let c = Tensor2::from_matrix(
&[[1.0, 4.0 / SQRT_2, 0.0], [4.0 / SQRT_2, 2.0, 0.0], [0.0, 0.0, 3.0]],
Mandel::Symmetric2D,
)?;
assert_eq!(
format!("{:.1}", c.vector()),
"┌ ┐\n\
│ 1.0 │\n\
│ 2.0 │\n\
│ 3.0 │\n\
│ 4.0 │\n\
└ ┘"
);
Ok(())
}