gen_Grid_markRefineDerefine — 网格细化约束生成器
gen_Grid_markRefineDerefine — 网格细化约束生成器FLASH AMR 网格细化/粗化自定义约束逐材料区域层级约束的一站式生成与说明文档。自动生成器 手写参考实现来自thin_layer_sandwich场景双轨并存。flash-sim是 FLASH 高能量密度物理 (HEDP) 仿真代码的全功能 Python 封装。提供场景系统即插即用仿真入口、参数文件生成、多环境运行管理、HDF5 输出分析与自适应可视化的一站式工作流。仓库地址 (Repository)本项目托管于 Gitee (码云), 支持 HTTPS 克隆与在线浏览:https://gitee.com/physimx/flash操作命令HTTPS 克隆git clone https://gitee.com/physimx/flash.git在线浏览https://gitee.com/physimx/flash (Code/Issues/Releases 页签)版本标签0.0.000(首次发布) —git tag -l查看全部问题反馈通过 Gitee Issues 提交 (登录后新建 Issue)发布包已通过全局测试 (233 passed / 3 skipped) 与 FLASH 版权合规检查, (详见 许可 与 NOTICE)。概述gen_Grid_markRefineDerefine子包用于生成 FLASH AMR自适应网格细化的Grid_markRefineDerefine.F90文件 —— 这是一个可选的FLASH 自定义组件定义「何时细化 / 何时粗化」网格。本子包提供两种工作方式互为补充自动生成器推荐——generator.py中的GridMarkRefineDerefineGenerator按参数生成基于**模式 C3边界框重叠法**的约束代码。手写参考实现—— 来自scenarios/collision_compression/thin_layer_sandwich/场景的sim_input_al/Grid_markRefineDerefine.F90与sim_input_si/Grid_markRefineDerefine.F90是已在实际仿真中验证通过的成品模板。⚠️文档修订说明早期GEN_GRID_GUIDE.md中「暂无自动生成器需手动编写或从 refs/ 复制」的描述已过时——生成器generator.py现已存在。本 README 已将其合并并纠正原GEN_GRID_GUIDE.md中的「复制/手动编写」步骤仅作为手写参考保留。它能做什么对 FLASH 仿真中不同材料区域施加不同的网格细化层级约束例如Al 靶区需要lref ∈ [lrefine_max-2, lrefine_max]CH 泡沫区lref ≤ lrefine_max/2He 填充区lref ≤ lrefine_min使用边界框重叠法模式 C3确保超薄层区域如 0.2µm Al也能被正确检测和细化它不做什么❌ 不修改物理求解器逻辑❌ 不生成.par文件或Config文件❌ 不替换 FLASH 的标准二阶梯度加密机制——它只是一个附加约束层适用场景与参考实现方式位置用途自动生成器input_gen/gen_Grid_markRefineDerefine/generator.py参数化生成模式 C3 约束代码手写模板al变体scenarios/collision_compression/thin_layer_sandwich/sim_input_al/Grid_markRefineDerefine.F90三层靶Al/CH/He1D 实测模板手写模板si变体scenarios/collision_compression/thin_layer_sandwich/sim_input_si/Grid_markRefineDerefine.F90同结构、不同材料表的变体thin_layer_sandwich场景的物理背景1D 笛卡尔坐标、激光烧蚀多层靶域范围x ∈ [-200, 200] µm实际.par中xmin-0.045, xmax0.045cm材料对称布局位置 |x| (µm)材料目标细化≤ 0.2Al 靶材高精度 (如 6~8 级)(0.2, 4]CH 泡沫中精度 (如 1~4 级) 4He 填充不强制低精度Grid_markRefineDerefine.F90 用途这个 Fortran 子程序定义 AMR 网格细化和粗化条件。FLASH 根据用户输入的refine_var_*参数标准二阶梯度加密再叠加本文件定义的材料区域约束调用此子程序判断是否细化或粗化特定区域的网格。本文件是 FLASH 自定义组件必须随仿真算例一起编译放在SimulationMain/算例/目录下而非独立的 Python 运行步骤。关键技术要点已为用户核心规范1. AMR 细化变量配置规则在.par文件中配置标准二阶梯度加密变量数字越大优先级越靠后lrefine_max8# 最大细化等级lrefine_min1# 最小细化等级refine_var_1dens# 细化变量1密度refine_var_2tele# 细化变量2电子温度thin_layer_sandwich/sim_input_al/grid_rede.par中的实测配置即为此形式refine_var_1dens、refine_var_2tele。2. 1D / 2D / 3D 坐标获取差异维度坐标获取循环结构1D只需xcent(i)/ 边界框boundBox(*, IAXIS)do i ...2D需要xcent(i),ycent(j)do j ...; do i ...3D需要xcent(i),ycent(j),zcent(k)do k ...; do j ...; do i ...当前生成器与thin_layer_sandwich模板均为1DIAXIS实现2D/3D 需相应扩展坐标判断。3. 典型细化逻辑LaserSlab 1D! 在靶区域 (x sim_targetRadius) 细化到最高等级 if (xcent(i) sim_targetRadius) then need_refine .true. endif ! 在密度梯度大的区域细化 if (abs(dens(i1) - dens(i)) / dx threshold) then need_refine .true. endif4. 边界框重叠法核心设计来自 thin_layer_sandwich 模板thin_layer_sandwich的 F90 注释2026-07-02明确指出旧「块中心法」的缺陷当目标区域宽度 最小块尺寸时完全失效。例如 Al 区仅 0.2µm远小于lref1时的块尺寸 50µm —— 没有任何块的中心落在 Al 或 CH 范围内所有块都会被误判为 He →lref ≤ 1→永远达不到高分辨率。新「边界框重叠法」检查块的[LOW, HIGH]区间是否与目标区域重叠boundBox(HIGH,IAXIS) -var .and. boundBox(LOW,IAXIS) var即使块远大于目标区域只要覆盖即触发约束。! 判断块是否与 Al 靶材区重叠: Al 区范围 x ∈ [-sim_targHeight, sim_targHeight] if (boundBox(HIGH, IAXIS) -sim_targHeight .and. boundBox(LOW, IAXIS) sim_targHeight) then ! ═══ Al 靶材区 ═══ 约束: lref ∈ [lrefine_max-2, lrefine_max] if (lrefine(lb) al_lower_lref) then refine(lb) .true. derefine(lb) .false. else if (lrefine(lb) al_target_lref) then refine(lb) .false. derefine(lb) .true. end if else if (boundBox(HIGH, IAXIS) -sim_polyHeight .and. boundBox(LOW, IAXIS) sim_polyHeight) then ! ═══ CH 泡沫区 ═══ 约束: lref ≤ lrefine_max/2 ... else ! ═══ He 填充区 ═══ 约束: lref ≤ lrefine_min仅 derefine 方向 ... end if分层约束由lrefine_max自适应不硬编码区域上限下限说明Al 靶材lrefine_maxlrefine_max - 2确保亚微米层有足够分辨率CH 泡沫lrefine_max / 2不低于 2不设下限避免界面梯度引起的非物理过度细化He 填充lrefine_min不设下限自然退粗到最粗网格过渡机制PARAMESH 要求相邻块细化层级差|Δlref| ≤ 1即使 CH 区标记为退粗到 4Al 边界附近的块也会被 PARAMESH 维持在高一级被动产生平滑过渡带。5. FLASH 版权合规头手写模板必备thin_layer_sandwich的 F90 文件头部包含 FLASHCenter 合规声明任何修改版 FLASH 源文件都应保留!! MODIFIED BY: PhySimX Contributors — derivative of the FLASH Centers !! source/Simulation/SimulationMain/LaserSlab_Custom/Grid_markRefineDerefine !! (modified for a new physics setup; original FLASH header preserved !! intact per FLASH License Agreement §4(c); modification declared per §4(a)).⚠️注意自动生成器_header()当前未自动插入上述MODIFIED BY合规头。通过生成器产出的 F90 在正式提交前应手动补回该段声明以满足 FLASH License Agreement §4(a)。6. 依赖的 Simulation_data 半宽变量区域判断依赖Simulation_data.F90中的半宽变量来自thin_layer_sandwich/sim_input_al/Simulation_data.F90变量含义.par实测值sim_targHeightAl 靶材层半高 (µm / cm)2e-5sim_polyHeightCH 泡沫层半高 (µm / cm)4e-4这些变量必须在Simulation_data.F90中声明、并在Simulation_init中从.par读取后本约束文件才能编译运行。使用方法自动生成器 GridMarkRefineDerefineGenerator重要生成顺序本生成器应在.par文件生成之后调用因为lrefine_max/lrefine_min需从.par文件中读取以保证 F90 注释中的理论分辨率与实际仿真参数一致。frominput_gen.gen_Grid_markRefineDerefineimport(GridMarkRefineDerefineGenerator,ZoneConfig)# 创建生成器simulation_name 仅用于注释路径; sim_src_subdir 默认读 credentialsgenGridMarkRefineDerefineGenerator(my_simulation)# 所有参数均无默认值必须逐项传入# 这些值来自setup 命令nxb, nblockx、.par 文件xmin, xmax, lrefine_max/mingen.set_domain(xmin-0.02,xmax0.02,nxb16,nblockx8)gen.set_refinement(lrefine_max8,lrefine_min1)# 添加区域约束按优先级从高到低 → 对应 if / else if / elsegen.add_zone(ZoneConfig(Al,# 区域名称sim_targHeight,# Simulation_data 中的半宽变量lref_lower_ratio0.75,# 下限: lrefine_max × 0.756当 lrefine_max8lref_upper_ratio1.0# 上限: lrefine_max8))gen.add_zone(ZoneConfig(CH,sim_polyHeight,lref_lower_ratioNone,# 不设下限不主动 refinelref_upper_ratio0.5# 上限: lrefine_max × 0.54))gen.add_zone(ZoneConfig(He,None,None,None# Fallback: 无约束))# 生成并保存强制 LF 换行gen.save(sim_input/Grid_markRefineDerefine.F90)ZoneConfig 参数说明参数类型说明示例namestr区域名称仅用于注释Alsim_var_namestr/NoneSimulation_data 中的半宽变量名。Nonefallbacksim_targHeightlref_lower_ratiofloat/None下限比例因子。相对lrefine_max。None不设下限0.75,0.5,Nonelref_upper_ratiofloat/None上限比例因子同上。None不设上限1.0,0.5,Noneuse_bounding_boxbool使用边界框重叠法默认 True推荐Truezone_marginfloat缓冲区扩展系数1.0 时区域判断边界向两侧扩展减少界面数值不稳定性默认 1.01.0,1.2ratio 值的含义比例因子所有 ratio 值均为比例因子相对于lrefine_max值含义F90 表达式lrefine_max8 时None无约束—1.0lrefine_maxlrefine_max→ 80.75lrefine_max × 0.75lrefine_max * 3 / 4→ 60.5lrefine_max × 0.5lrefine_max / 2→ 40.25lrefine_max × 0.25lrefine_max / 4→ 2薄层材料陷阱ZoneConfig文档指出厚度 ≤ 几倍res_min的薄层材料如 Al 靶lref_lower_ratio必须设为1.0否则初始化阶段可能达不到lrefine_max导致薄层分辨率不足。生成的 F90 结构5 段生成器产出的Grid_markRefineDerefine()子程序依次包含USE 语句—— 导入 FLASH 模块与Simulation_data半宽变量变量声明—— 含zone_margin 1.0时为区域生成的*_zone_half缓冲变量标准二阶梯度加密流程——gr_markDerefineByTime/gr_setMaxRefineByTime/Grid_fillGuardCells/gr_markRefineDerefine区域约束边界框重叠——Grid_getListOfBlocksGrid_getBlkBoundBox逐叶块if / else if / else标记refine/derefine标准后处理收尾—— PARAMESH2 兼容、粒子计数加密、最大精度强制、gr_unmarkRefineByLogRadius、Sink 粒子加密、非叶块标志清理where (nodetype(:) / LEAF)必须清零否则 PARAMESH 崩溃分辨率核算来自 thin_layer_sandwich F90 注释公式res_min |xmax - xmin| / (NXB * nblockx * 2^(lrefine_max-1)) res_max |xmax - xmin| / (NXB * nblockx * 2^(lrefine_min-1))单位换算若xmin/xmax以 cm 传入需 ×1e4 换算为 µm生成器_calc_resolution已内置此换算。1D 示例域 400µmNXB8nblockx1lrefine_maxres_min (µm)是否满足 Al 0.03µm12400/(8×1×2¹¹) ≈0.0244✅11400/(8×1×2¹⁰) ≈ 0.0488❌10400/(8×1×2⁹) ≈ 0.0977❌8400/(8×1×2⁷) ≈ 0.391❌lrefine_minres_max (µm)4400/(8×1×2³) ≈ 6.253400/(8×1×2²) ≈ 12.5结论满足 Al 分辨率 0.03µm 的最小lrefine_max 12推荐lrefine_max12, lrefine_min4, nblockx1高分辨率需求场景常规演示可用thin_layer_sandwich的lrefine_max8, lrefine_min1, nblockx8。⚠️ 重要必须人工核查本生成器生成的代码是自定义 AMR 细化约束器实际细化结果受以下因素影响refine_var梯度判据——.par文件中的refine_var_*设置PARAMESH 邻接限制—— 相邻块|Δlref| ≤ 1lrefine_max/lrefine_min—— 全局限制建议进行小批量 flash 仿真进行人工核查后再正式使用。参考文件与实现位置类型路径自动生成器input_gen/gen_Grid_markRefineDerefine/generator.py手写al模板scenarios/collision_compression/thin_layer_sandwich/sim_input_al/Grid_markRefineDerefine.F90手写si模板scenarios/collision_compression/thin_layer_sandwich/sim_input_si/Grid_markRefineDerefine.F90配套半宽变量声明scenarios/collision_compression/thin_layer_sandwich/sim_input_al/Simulation_data.F90配套参数文件scenarios/collision_compression/thin_layer_sandwich/sim_input_al/grid_rede.par⚠️废弃引用早期文档提到的refs/Grid_markRefineDerefine.F90、refs/Al_CH_He_laser_cart1D/、refs/Grid_markRefineDerefine_编写指南.md等refs/目录当前不存在。请以本仓库内thin_layer_sandwich的 F90 文件作为权威手写模板。致谢与商用说明本生成器产出的Grid_markRefineDerefine.F90属于 flash-simflash 仿真辅助 Python 包的一部分相关署名与商用条款如下出版物致谢使用 flash-sim 产生的任何出版物请感谢绵阳市的 PhySimX 团队开发了该仿真辅助 Python 包。建议文案“We acknowledge the PhySimX team (Mianyang, China) for developing the flash-sim auxiliary Python package used in this work.”商用说明flash-sim 的 Python 代码以 Apache 2.0 许可其商用须遵守所有适用许可含 FLASH 仿真引擎的 FLASH License Agreement §5商用场景下的授权与责任以届时适用的许可及书面约定为准。完整条款见根目录 README.md 许可章节、LICENSE 与 NOTICE。文档版本: 2.0合并README.mdGEN_GRID_GUIDE.md并补充thin_layer_sandwichF90 参考实现最后更新: 2026-08-03维护: PhySimX Team

相关新闻

Wheeltec智能车ROS实战(一):VMware虚拟机搭建Ubuntu 18.04与ROS Melodic环境

Wheeltec智能车ROS实战(一):VMware虚拟机搭建Ubuntu 18.04与ROS Melodic环境

1. 引言 这一章,我详细记录了Wheeltec智能车ROS开发环境的完整搭建过程。整个环境基于VMware Workstation Pro虚拟机平台,在Ubuntu 18.04操作系统上部署ROS Melodic机器人操作系统,并完成Wheeltec官方功能包的获取与编译。 对于刚接触ROS实…

2026/10/18 1:49:07 阅读更多 →
Windows到Linux文件同步方案:Rsync、SFTP与Git的实战对比

Windows到Linux文件同步方案:Rsync、SFTP与Git的实战对比

1. 从“手动拖拽”到“自动同步”:一个运维老兵的效率革命 我见过太多开发者和运维工程师,每天还在重复着同一个动作:在Windows上改完代码,打开一个SFTP客户端,找到对应的文件夹,把文件拖进去,然…

2026/10/18 17:16:38 阅读更多 →
开源桌面应用部署指南:从环境配置到功能验证的完整避坑手册

开源桌面应用部署指南:从环境配置到功能验证的完整避坑手册

这次我们来看一个名为 VibeCoding 的开源项目。从网络热词来看,它似乎与《明日方舟》手机桌宠有关,但“VibeCoding”这个名字本身更像是一个编程或创意编码工具。对于新手来说,面对一个开源项目,最常见的错误往往集中在环境配置、…

2026/10/18 1:49:32 阅读更多 →

最新新闻

scrcpy 免费安卓投屏完整教程:1分钟把手机画面搬上电脑,用键盘鼠标直接操控

scrcpy 免费安卓投屏完整教程:1分钟把手机画面搬上电脑,用键盘鼠标直接操控

scrcpy 免费安卓投屏完整教程:1分钟把手机画面搬上电脑,用键盘鼠标直接操控 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy scrcpy 是一款免费开源的安卓投屏工具&a…

2026/10/19 1:36:20 阅读更多 →
RocooFix攻克ART崩溃难题:scanref引用扫描机制源码级解读

RocooFix攻克ART崩溃难题:scanref引用扫描机制源码级解读

【免费下载链接】RocooFix another hotfix framework 项目地址: https://gitcode.com/gh_mirrors/ro/RocooFix 点击查看 免费下载 RocooFix 是一款 Android 热修复框架,支持 Dalvik 与 ART 双虚拟机。然而在 ART 环境下,直接替换 ArtMethod …

2026/10/19 1:36:20 阅读更多 →
【RHCA+】rpm2cpio命令(提取RPM包文件)

【RHCA+】rpm2cpio命令(提取RPM包文件)

“ 目录:RHCA -> 6 软件仓库 -> 24 rpm2cpio命令(提取RPM包文件) ”如果系统文件被误修改或误删除,使用cpio可以逐个提取需要的文件,来完成修复;语法格式为:rpm2cpio 包全名|cpio -idv 文…

2026/10/19 1:36:20 阅读更多 →
【RHCA+】源码包编译(SRPM转RPM)

【RHCA+】源码包编译(SRPM转RPM)

“ 目录:RHCA -> 6 软件仓库 -> 25 源码包编译(SRPM转RPM) ”SRPM包,Source的首字母,以源码形式发布的RPM包,安装时要先编译再安装;命名格式:包名-版本号-发布次数-发行商-src…

2026/10/19 1:36:20 阅读更多 →
NVFP4量化原理深度剖析:DeepSeek-V4.1-Flash-NVFP4如何用W4A4压缩552B MoE权重

NVFP4量化原理深度剖析:DeepSeek-V4.1-Flash-NVFP4如何用W4A4压缩552B MoE权重

大模型基础模型多模态模型量化DeepSeek 【免费下载链接】DeepSeek-V4.1-Flash-NVFP4 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/DeepSeek-V4.1-Flash-NVFP4 点击查看 免费下载 DeepSeek-V4.1-Flash-NVFP4 是 NVIDIA 基于 Model Optimizer 发布的 NVFP4 …

2026/10/19 1:36:20 阅读更多 →
free-claude-code 开源项目拆解:AI 编程助手的可控性设计与工程实践

free-claude-code 开源项目拆解:AI 编程助手的可控性设计与工程实践

1. 这个项目到底在解决什么问题第一次看到 "free-claude-code" 这个标题,我脑子里蹦出来的第一个念头是:这又是一个想给 AI 编程助手做"平替"或者"增强层"的东西。事实也确实如此。这个项目的核心定位,是围绕 …

2026/10/19 1:35:19 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →