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/8/7 7:38:24 阅读更多 →
Windows到Linux文件同步方案:Rsync、SFTP与Git的实战对比

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

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

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

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

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

2026/8/7 7:38:24 阅读更多 →

最新新闻

客户一多就忙不过来?很多人用API做自动化了

客户一多就忙不过来?很多人用API做自动化了

把重复的客户操作交给程序处理,人只关注关键环节 能力介绍 当客户数量上来之后,很多操作都会变成重复劳动,比如:加好友、发消息、打标签、跟进记录等。如果全部依赖人工,不仅效率低,还容易遗漏。 通过API结…

2026/8/8 12:09:22 阅读更多 →
完全免费的开源下载利器,带宽拉满无负担——Free Download Manager (FDM)

完全免费的开源下载利器,带宽拉满无负担——Free Download Manager (FDM)

文章目录 完全免费的开源下载利器,带宽拉满无负担——Free Download Manager (FDM)核心定位 FDM vs. IDM:谁才是你的最佳选择?官方安全下载渠道极简安装与基础配置(核心步骤不能省)核心功能全流程实操高频刚需应用场景…

2026/8/8 12:09:22 阅读更多 →
Windows系统-应用问题全面剖析Ⅶ:德承工控机DA-1100在Windows操作系统下[时间同步]设置教程

Windows系统-应用问题全面剖析Ⅶ:德承工控机DA-1100在Windows操作系统下[时间同步]设置教程

在之前的文章中讲解到Windows操作系统的[卡顿/死机]设置教程,可参考往期文章:《Windows系统-应用问题全面剖析Ⅵ:德承工控机MD-3000在Windows操作系统下[卡顿/死机]的排查与解决方法》,而Windows操作系统还有许多应用上会面临的问…

2026/8/8 12:09:22 阅读更多 →
C语言指针与字符串拷贝核心原理及PTA实战

C语言指针与字符串拷贝核心原理及PTA实战

1. PTA指针与字符串拷贝核心原理 在C语言编程中,指针和字符串操作是基础但容易出错的重点内容。PTA(Programming Teaching Assistant)平台常见的字符串拷贝题目,主要考察对指针操作和内存管理的理解深度。我们先看一个典型错误示例…

2026/8/8 12:09:22 阅读更多 →
8个实战验证的商业分析工具提升决策效率

8个实战验证的商业分析工具提升决策效率

1. 项目概述作为一名在商业分析领域深耕多年的从业者,我经常被MBA学员问到同一个问题:"如何在实际工作中快速提升分析效率?"经过多年实践,我发现工具选型是影响分析质量和工作效率的关键因素。本文将分享8个经过实战检验…

2026/8/8 12:09:21 阅读更多 →
逆向工程入门:从CTF基础题babyre学逆向分析

逆向工程入门:从CTF基础题babyre学逆向分析

1. 逆向工程入门:从攻防世界babyre开始 第一次接触逆向工程的新手往往会被各种专业术语和复杂工具吓退,而攻防世界(CTF比赛平台)的babyre题目正是为逆向新手设计的绝佳入门练习。这道题目的名称"babyre"已经暗示了它的定…

2026/8/8 12:08:21 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →