4个版本
0.2.0 | 2023年4月1日 |
---|---|
0.1.0 | 2022年3月24日 |
0.1.0-beta.2 | 2022年12月1日 |
0.1.0-beta.1 | 2022年10月10日 |
271 在 图形API 中
33 每月下载量
1MB
11K SLoC
大灰
大灰是一个面向通过有限元方法和OpenGL进行实时模拟ODE/PDE的库,提供了一个简单的接口。
要使用它,只需创建一个由三角形组成的 .obj 文件(参见 blender 和 obj文件),表示一个网格,指定初始和/或边界条件
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 的 物理系主任 的项目。
许可证
依赖项
~12–16MB
~266K SLoC