moonbit-nlse-ssfm

    Nonlinear Fiber Optics and Optical Pulse Propagation Split-Step Fourier Simulator in MoonBit

    nlse
    ssfm
    fiber-optics
    fft
    soliton
    ultrafast-laser
    Download zip
    Author
    Version
    0.1.0
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    32

    No dependencies

    #MoonBit 非线性光纤光学与光脉冲传输仿真器

    CI License MoonBit Tests

    moonbit-nlse-ssfm 是一个纯 MoonBit 数值仿真库和 CLI 示例,用于研究非线性光纤中的超短光脉冲传播。项目围绕广义非线性薛定谔方程(GNLSE)实现快速傅里叶变换、分步傅里叶积分、脉冲建模、光纤参数化、时频分析和 SVG 可视化。

    #Overview

    项目面向光纤通信、超快激光、非线性光学教学和数值方法验证场景。库代码按领域包组织,CLI 入口通过一组固定参数演示孤子传播、掺杂光纤放大、超连续谱、矢量 NLSE 和 SVG 输出。

    当前本地统计包含 219 个 .mbt 文件、9,362 行原始 MoonBit 源码;其中 209 个非测试实现文件共 8,451 行,约 6,378 行去除空行和注释后的实现代码。统计不包含 _build、C/wasm 产物或生成接口文件。

    #Features

    • 原生复数、向量、矩阵和张量运算,以及单位换算与插值工具。
    • Radix-2、Radix-4、Bluestein、Chirp-Z、二维 FFT、DCT、Hilbert 变换和常用窗函数。
    • Gaussian、Sech、Super-Gaussian、Airy、Hermite、双脉冲、脉冲列和噪声模型。
    • Standard SSFM、Symmetric SSFM、RK4IP、RK4FD、Forest–Ruth 高阶积分和自适应步长控制。
    • 高阶色散、Sellmeier 材料模型、Kerr/Raman 响应、光纤损耗、弯曲损耗和微结构光纤参数。
    • Er/Yb/Tm 掺杂光纤放大、增益饱和、ASE 与相似子脉冲分析。
    • Manakov 矢量 NLSE、XPM、PMD、Jones/Stokes 偏振分析和超连续谱诊断。
    • FWHM、RMS、OSNR、STFT、FROG、SPIDER、相干性和频谱分析。
    • 不依赖第三方绘图库的 1D 脉冲、频谱、谱图和时空热力图 SVG 输出。

    #Scope and limitations

    项目提供可组合的数值算法和研究型示例,不替代经过实验标定的光学仿真软件。数值稳定性取决于时间网格、传播步长、边界条件和物理参数;使用者应根据问题规模收敛性检查结果。当前 CLI 使用固定演示配置,面向自定义仿真时应直接调用各包 API。

    #Quick start

    安装 MoonBit stable 工具链后,在仓库根目录运行:

    moon version --all moon fmt --check moon check --target all --deny-warn moon test --target all --deny-warn moon run src/main

    moon info 可生成并检查各包的公开接口描述:

    moon info

    #CLI demonstration

    moon run src/main

    CLI 会依次运行以下示例:

    1. 基本孤子传播稳定性检查。
    2. 掺杂光纤放大与输出能量计算。
    3. 光子晶体光纤超连续谱传播。
    4. Manakov 矢量 NLSE 与偏振耦合步骤。
    5. 纯 MoonBit SVG 可视化输出。
    6. FFT 和 RK4IP 固定工作负载基准。

    基准的输入规模、确定性操作数、单调时钟测量值和运行环境记录在 docs/benchmarks.md。墙钟时间会随机器、后端和负载变化。

    #Package layout

    src/ ├── types/ # 复数、矩阵、张量、物理模型与单位 ├── fft/ # FFT、DCT、STFT 基础算子与窗函数 ├── pulse/ # 脉冲生成、变换、噪声和脉冲列 ├── fiber/ # 色散、材料、损耗、Raman 和光纤模型 ├── ssfm/ # SSFM、RK4IP、高阶和自适应求解器 ├── amplifier/ # 掺杂光纤、增益和 ASE 模型 ├── vector_nlse/ # 矢量 NLSE、PMD、XPM 和 Stokes 分析 ├── supercontinuum/ # 超连续谱传播、相干性和带宽分析 ├── analyzer/ # 脉冲、频谱、时频和相干性诊断 ├── viz/ # 纯 MoonBit SVG 渲染器 └── main/ # 可执行 CLI 和固定基准入口

    各目录通过 moon.pkg 声明包边界;包 API 可通过对应的 pkg.generated.mbti 文件检查。

    #Validation and CI

    GitHub Actions 在 Ubuntu、macOS 和 Windows 上执行:

    • moon version --all 与 moon update。
    • moon fmt --check。
    • moon check --target all --deny-warn。
    • moon build --target all。
    • moon test --target all --deny-warn。
    • moon info 后检查公开接口文件没有未提交差异。
    • Ubuntu 上运行 moon run src/main。

    本地验证当前为 72 项测试,wasm、wasm-gc、js 和 native 四个 stable 后端均通过。

    #Reproducing benchmarks

    在与记录环境相近的机器上运行:

    moon version --all moon run src/main

    请只比较相同输入规模下的确定性操作数和求解步数;微秒计时用于描述当前环境性能,不作为跨机器的绝对承诺。详细记录见 docs/benchmarks.md。

    #License

    本项目以 Apache License 2.0 发布。

    #Contributing

    提交修改前请在仓库根目录运行:

    moon fmt moon check --target all --deny-warn moon test --target all --deny-warn moon info

    新增数值模型时,请同时补充物理不变量、边界输入、收敛性或能量守恒相关测试,并在文档中说明适用范围与参数单位。