#tensor #mechanics #mandel #continuum #voigt

russell_tensor

连续介质力学的张量分析、微积分和函数

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 数学

Download history 195/week @ 2024-04-13 339/week @ 2024-04-20 617/week @ 2024-04-27 35/week @ 2024-05-04 275/week @ 2024-05-11 230/week @ 2024-05-18 27/week @ 2024-05-25 3/week @ 2024-06-01 4/week @ 2024-06-29 39/week @ 2024-07-06 111/week @ 2024-07-20 22/week @ 2024-07-27

每月下载量172次
用于 2 crates

MIT许可证

2MB
35K SLoC

Russell Tensor - 连续介质力学的张量分析、微积分和函数

documentation

此crate是Russell - Rust科学库的一部分

内容

简介

此库实现了张量分析和微积分的结构和函数。该库专注于工程和[连续介质力学](连续介质力学)的应用。针对目标应用的基本功能包括二阶和四阶张量、标量“不变量”和导数。

此库实现了关于张量的标量函数的导数、关于张量的张量函数以及其他的导数。该库内部考虑了一个方便的基表示法,称为Mandel基(类似于Voigt记号)。用户也可以使用Mandel基直接执行更简单的矩阵-向量运算。

文档

安装

此crate依赖于一些非Rust高性能库。有关安装这些依赖项的步骤,请参阅主README文件

设置Cargo.toml

Crates.io

👆 检查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(())
}

依赖项