#simulator #field #fdtd #electromagnetism #maxwell

nightly app rems

有限差分时域(FDTD)电磁模拟器

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模拟

Download history

每月 71 次下载

GPL-3.0 许可证

31KB
329

Audit CI Release

rems (Rust 电磁模拟器) 是用 Rust 编写的 有限差分时域 (FDTD) 模拟器。

它能够生成您模拟的动画图表,例如这样

1D example simulation

安装

remscrates.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_versiondimensions_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