radiation

    Radiation transport, shielding analysis, dosimetry, and uncertainty tools in MoonBit.

    radiation
    monte-carlo
    shielding
    physics
    Download zip
    Author
    Version
    0.2.2
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    43

    No dependencies

    #moonbit-radiation

    MoonBit CI License

    MoonBit 实现的辐射输运、屏蔽分析与剂量估算库。项目面向可复现的工程估算、算法验证和教学实验,提供解析模型与蒙特卡洛输运两条计算路径,并配套统计、不确定度、审计和报告工具。

    #项目定位

    moonbit-radiation 将屏蔽体抽象为沿 z 轴排列的一维平板层,同时保留三维粒子位置和方向,用于以下类型的工作:

    • 预估多层屏蔽体的窄束透射和散射积累影响;
    • 运行可复现的光子输运实验,观察相互作用、能量沉积和边界穿越;
    • 扫描能量、厚度、材料和源项,比较候选工程方案;
    • 生成剂量、深度剂量、统计置信区间和机器可读报告。

    它不是法规认证软件,也不替代经过验证的屏蔽设计程序、实验测量或安全审查。材料数据库和模型参数应在实际工程使用前用目标标准与实验数据复核。

    #核心能力

    • 解析计算:指数衰减、HVL/TVL、线性与质量衰减系数、Broder/Taylor 风格积累、多层屏蔽和反平方缩放。
    • 蒙特卡洛输运:Woodcock/delta tracking、光电效应、Compton 散射、对生成、能量截止、批次 SEM 和可选历史记录。
    • 源与几何:单能和离散能谱、Co-60/Cs-137 预设、铅/铁/混凝土/水/空气材料、平板层、孔径、圆柱和射线盒相交。
    • 工程后处理:层内能量沉积、剂量换算、深度剂量曲线、网格计分、设计搜索、敏感性和不确定度传播。
    • 统计与质量:在线统计量、95% 置信区间、直方图、方差缩减辅助、能量平衡、概率守恒和输入审计。
    • 生产工作流:确定性任务分片、检查点恢复、独立重复实验、资源预算、校准、质量门禁和发布清单。
    • 三维场与仪器:网格梯度/拉普拉斯/剖面分析、检测器响应与死时间修正、ROI、峰值和 MDA 估算。
    • 输出:文本、Markdown、CSV 报告,以及可序列化的结构化结果。

    #快速开始

    #环境

    使用 MoonBit 官方安装器获取稳定版工具链,然后在仓库根目录运行:

    moon version --all moon update moon check --target all --deny-warn moon test --target native --deny-warn

    CI 会在 Linux、macOS 和 Windows 上运行全目标检查与测试。若本机没有 JavaScript 运行时,优先使用 --target native 进行本地回归;完整的 --target all 验证由 CI 执行。

    #使用库

    moon add Zjfzjf666/radiation@0.2.2

    在 MoonBit 包中引入 Zjfzjf666/radiation/src/lib 后,可以从预设场景开始:

    let source = @lib.cobalt_60_pencil_source()
    let layers = @lib.lead_concrete_wall(5.0, 20.0)
    let options = @lib.TransportOptions::defaults(source, layers)
    options.histories = 10000
    options.batches = 20
    let result = @lib.run_transport(options)
    let report = @lib.audit_transport(result)

    TransportOptions、TransportResult 和审计报告都是公开结构,适合在应用程序中继续累积、比较或序列化。

    #CLI

    命令行演示使用 5 cm 铅 + 20 cm 混凝土的复合平板、Co-60 离散能谱和 5,000 条粒子历史,同时输出:

    moon run src/main --target native

    • 窄束解析透射率与积累修正后的透射率;
    • Monte Carlo 透射率、SEM 和终止状态计数;
    • 平均沉积能量、质量门禁结果和 3 条示例历史。

    CLI 是可重复的诊断入口,不接受外部输入参数;生产程序应直接调用库 API 并自行管理输入校验、随机种子和报告元数据。

    #架构

    src/lib/ ├── types, database, prng, physics, mc 基础数据、材料数据、随机数与传统 MC API ├── geometry, geometry_shapes, spectrum 平板层、几何相交、源项和能谱 ├── advanced_physics, transport 截面分解、Compton 与扩展输运核心 ├── statistics, validation, audit 统计量、输入校验与质量审计 ├── mesh, scoring, field_dose, engineering 计分、能量平衡、剂量和设计分析 ├── energy_analysis, sensitivity 能量响应、敏感性和参数扫描 ├── variance_reduction, sampling_tools 抽样与方差缩减辅助 ├── reporting, result_analysis, event_statistics 结果、事件和报告后处理 ├── production_types, numerical_methods 生产数据模型与数值算法 ├── source_library, detector_response 源项调度、谱响应、ROI 与死时间 ├── job_orchestration, workload_planning 分片、检查点、重复实验与资源规划 ├── field_analysis, field_metrics 三维网格投影、梯度、阈值和体积统计 ├── calibration_pipeline, quality_validation 校准诊断、验证用例与质量门禁 ├── reporting_extended, data_exports CSV、Markdown 和运行清单导出 ├── presets, workflows, material_tools 可复现预设与工程工作流 └── compatibility, uncertainty_models 旧 API 适配与不确定度模型 src/main/ CLI 演示程序

    库的核心计算不依赖平台 FFI。moon.pkg 为库与 CLI 分别声明包边界,公开接口由 moon info 生成并在 CI 中检查差异。

    #基准

    以下是本地 Windows 工作区的实际一次测量,不是预估值:

    场景工具链历史数终端透射SEM墙钟时间处理速率
    CLI native,5 cm Pb + 20 cm concrete,Co-60moon 0.1.20260819 / moonc v0.10.95,0001.6000%0.1422%4,435.02 ms1,127.39 histories/s

    测量命令为 moon run src/main --target native,墙钟时间包含 CLI 启动和增量构建,结果会随 CPU、缓存和工具链版本变化。该次运行的终端计数为 transmitted=80、absorbed=4,830、backscattered=90、cutoff=0;解析窄束值为 0.22519%,积累修正值为 1.24162%。

    #测试与边界覆盖

    当前原生回归为 133 个测试,结果为 133 passed / 0 failed。测试覆盖:

    • 空层、零厚度、负厚度、越界定位、平行射线和退化几何;
    • 空谱、重复谱线、零概率、极端能量、能量截止和非整除批次;
    • Compton 能量守恒、概率归一化、输运终止计数和虚拟碰撞计分;
    • 能量平衡、层内沉积、深度剂量、统计置信区间和不确定度传播;
    • CSV/Markdown 输出、旧 API 兼容转换、材料排序和响应曲线单调性;
    • 三维网格边界、谱 ROI、能量标定、时间窗口、任务分片、检查点和质量门禁。

    本地建议执行:

    moon fmt --check moon check --deny-warn moon test --target native --deny-warn

    #CI 与发布

    .github/workflows/test.yml 使用 MoonBit 官方稳定版安装器,在三种主流操作系统上执行:

    moon version --all moonc -v # CI 拒绝低于 v0.10.9 的编译器 moon update moon check --target all --deny-warn moon build --target all --deny-warn moon test --target all --deny-warn moon fmt --check moon info

    CI 同时检查格式和生成的 .mbti 接口文件,避免本地接口变更未提交。.github/workflows/publish.yml 为手动触发,仅在仓库配置 MOONCAKES_MOONBIT_COMMUNITY_TOKEN secret 后执行验证和 moon publish。

    #许可证

    本项目使用 Apache License 2.0。