4个版本

0.2.0 2023年4月1日
0.1.0 2022年3月24日
0.1.0-beta.22022年12月1日
0.1.0-beta.12022年10月10日

271图形API

33 每月下载量

MIT 协议

1MB
11K SLoC

大灰

大灰是一个面向通过有限元方法和OpenGL进行实时模拟ODE/PDE的库,提供了一个简单的接口。

要使用它,只需创建一个由三角形组成的 .obj 文件(参见 blenderobj文件),表示一个网格,指定初始和/或边界条件

let naviers_params = StokesParams::static_pressure().
    hydrostatic_pressure(100_f64)
    .density(1_f64)
    .force_function(
        Box::new(|_| -10_f64)
    )
    .build();

构建一个显示要解决的问题的窗口

let window_builder: DzahuiWindowBuilder = DzahuiWindow::builder("./assets/1dbar.obj")
    .solve_static_pressure(naviers_params)
    .with_integration_iteration(350);

let window = window_builder.build();

并运行窗口

window.run();

生成的网格将从蓝色到红色着色,表示速度(或静水压力方程中的压力)。

可用方程

  • 1D时间相关扩散方程
  • 1D时间独立扩散方程
  • 静水压力方程(或简化的1D时间独立Stokes)

目前,仅实现了具有Dirichlet边界的三个方程,但将来还将添加更多,包括Navier-Stokes的二维和三维情况。

如何使用

大灰可在 crates.io 上找到。只需将其作为依赖项添加,并遵循库中提供的许多二进制文件之一来生成模拟。

控件

大灰有几种与GUI交互的方式:在MacOS上

  • 您可以按 esc 退出模拟
  • s 保存当前结果
  • 按住 t 查看网格的三角形
  • 左键单击并移动鼠标或触控板来移动相机

未来实现

  • 模拟与所解决问题的类型相似的各种曲线(如流线、路径线和条纹线)。
  • 通过添加按钮和图表来改进GUI。
  • 改进通过GUI(顶点选择器)和函数定义的边界创建边界条件的方法。
  • 包括Neumann条件。
  • 统一不同操作系统上的控件。
  • 实现二维和三维积分算法。
  • 改进库结构和访问修饰符。
  • 改进矩阵算法(更稳定的算法)。
  • 更改/创建特性,以便用户直接实现。
  • 纠正某些实现以提高性能。
  • 提高多项式次数,用于问题解决。
  • 使用宏将新创建的方程嵌入到可模拟的可能方程中。

Dzahui 是 UNAM Facultad de Ciencias 的 物理系主任 的项目。

许可证

MIT

依赖项

~12–16MB
~266K SLoC