16 个版本
0.0.15 | 2024 年 1 月 21 日 |
---|---|
0.0.14 | 2023 年 9 月 10 日 |
0.0.13 | 2022 年 12 月 13 日 |
0.0.12 | 2022 年 8 月 14 日 |
0.0.1 | 2020 年 5 月 9 日 |
#67 在 模拟 中
每月 71 次下载
31KB
329 行
rems
(Rust 电磁模拟器) 是用 Rust 编写的 有限差分时域 (FDTD) 模拟器。
它能够生成您模拟的动画图表,例如这样
安装
rems
在 crates.io 上可用。您可以通过首先安装 ffmpeg
,然后 安装 Rust,然后使用 Rust 的 rustup
工具安装 Rust nightly,然后您可以使用 cargo
安装 rems
$ rustup install nightly
$ rustup override set nightly
# Be sure to read the output of this command and adjust your PATH as instructed.
$ cargo install rems
快速入门
要开始快速模拟,请查看 examples/ 文件夹。您将找到那里的两个文件。 1d_simulation.yml
文件是模拟参数文件,而 1d_signal.py
是一个 Python 脚本,用于生成 rems 期望的格式的信号。安装 Python 的 bson 库,运行信号生成器文件,然后运行模拟
$ pip install bson
$ python3 examples/1d_signal.py
$ rems examples/1d_simulation.yml
这将生成一个名为 simulation.mp4
的视频文件,显示信号在空间中的传播。做得好!
模拟参数配置
REMS 需要您通过提供描述所有参数的 YAML 文件来定义模拟。以下是一个示例配置,显示所有可用选项,以及带有注释的默认选项
---
# How many dimensions we have in space. Right now, only 1 is supported.
dimensions: 1
# Define a list of signals
signals:
# This signal is at location 600 in space
- location: 600
# Read this path to get the signal. See below for a description of this file.
path: examples/1d_signal.bson
# Define how large the universe should be, in cells
size: 1920
# Define how many time steps the simulation should run for
time: 32768
# This is a list of oscilloscopes, or outputs for your simulation. Right now, only the movie
# type is supported, but one could imagine other types added in the future.
oscilloscopes:
- type: movie
# How large of a magnitude to use for the y-axis on the graphs
# range: 1.0
# The path to write the movie to
path: examples/1d_simulation.mp4
# The framerate of the resulting movie, in Hz
# framerate: 60
# How often to generate a graph in simulation time steps
# graph_period: 16
# The resolution you desire for the resulting video, expressed as an array of two integers
# resolution:
# - 1920
# - 1080
# How many snapshots to buffer in memory before handing them off to a Python subprocess to
# generate graphs out of them.
# snapshot_buffer_len: 47
信号 BSON 文件
信号应定义在 BSON 文件中,包含三个字段:ex
、_version
和 dimensions
。 _version
应设置为 0,dimensions
应设置为 1,而 ex
应为一个浮点数数组,表示模拟的每个时间步长信号应具有的值。以下是一个与该模式精神相符的 YAML 示例
---
_version: 0
dimensions: 1
ex:
- 0.0
- 0.1
- 0.2
- 0.3
链接
贡献
如果您想为 rems 贡献,请给我发送补丁!
如果您系统上有 podman,则有一个方便的 Makefile 用于开发。它的默认目标是帮助显示可用的各种目标。
# Note that root is not required.
$ make check
祝您愉快地黑客攻击!
依赖项
~12–22MB
~342K SLoC