
# ==============================
# flash-sim specific
# ==============================
# 注意: 目录/文件忽略规则必须放在下方 !*.* / !*/ 之后才能生效
# （gitignore 后定义优先，!*/ 会覆盖前置的目录忽略规则）

# ==============================
# Ignore all extensionless files
# ==============================
*
!*.*
!*/

# Exception: allow no-extension source files
!.gitignore
!.env.example
!Makefile
!Dockerfile
!LICENSE
!README
!NOTICE
!scripts/git-hooks/*
!scripts/*.sh
# 场景自生成的 FLASH 配置 (ConfigGenerator 产物, 发布包必需)
!**/sim_input*/Config

# ==============================
# 大文件/媒体排除 (必须在 !*.* 之后, 否则被反忽略覆盖)
# ==============================
*.pdf
*.png
*.pptx
*.ppt
*.avi
*.mp4
*.h5
*.hdf5

# ==============================
# 调试 / 运行产物 (根目录, 不提交)
# 必须放在 !*.* / !*/ 之后, 否则被反忽略覆盖
# ==============================
temp_delete/
# 项目专属虚拟环境（start_flash.py 使用；.venv 为 IDE 标准命名，默认）
.venv/
# 按平台区分的 venv（09-10）：Windows 用 .venv-win，Linux/WSL 用 .venv-linux。
# ★ 两平台的 venv 物理上不能共用（PE vs ELF + win_amd64 vs manylinux wheel），
#   故目录名带平台后缀，来回切换时各自保留、互不覆盖。
.venv-win/
.venv-linux/
.venv-mac/
.venv-*/
# 旧命名虚拟环境（历史遗留，一并忽略）
flash_venv/
# 备份核对调试记录
备份核对报告.md
# start_flash.py 生成的测试报告与日志 (2026-10-14 起统一写 test/reports/, 不再落根目录)
INSTALL_TEST_REPORT.txt
pytest_*.log
test/reports/
# flash/test/math_test.py quick_test_1d() 的默认输出 (模块目录, 与 CWD 无关)
flash/test/quick_test_1d.h5
# laserslab1d 场景运行产物（EOS 元数据 / WSL 运行日志）
*.eosmeta.json
wsl_run.log

**/temp
**/tmp

**/*copy*/
**/*Copy*/
**/*COPY*/
**/*副本*/
**/*copy*.*
**/*Copy*.*
**/*COPY*.*
**/*副本*.*

**/*_[0-9][0-9][0-9].py

**/Multi1D*/
**/Multi1D*.rar

*.mod

#
#脚本尽可能控制成py脚本、sh脚本
#文档文件统一使用md，若有必要可以特殊html
*.log
*.html
*.json
*.txt


# ================================================================
# ★ 同步自 flash/input_gen/gen_eos_op/.gitignore (2026-09-16)
# ----------------------------------------------------------------
# 目的: 将 gen_eos_op (eosop_pro 多类型 EOS/不透明度文件处理模块) 的
#       局部忽略策略提升为**仓库级**通用规则 —— 使该子树即使移除本地
#       .gitignore, 也保持完全相同的忽略行为。
# 约定:
#   ① 上游的相对路径规则 (src/… 、ionmix/… 、eosop_pro/…) 统一加 `**/`
#      前缀, 保证在任意层级生效 (实际位置在 flash/input_gen/gen_eos_op/ 下)。
#   ② 已被上方规则覆盖的条目不再重复, 清单见本区块末尾。
#   ③ 本区块刻意置于 SNB / Gen_eos_op_data / SNBtest 等 `!` 白名单**之前**,
#      确保后续反选规则优先生效 (gitignore 后定义者优先)。
# ================================================================

# ---------- 虚拟环境 ----------
# ⚠ 偏差说明: 上游为裸 `env/`。本仓库已跟踪源码包 flash/flash_run/env/
#   (env_manager.py / resource_config.py), 裸 `env/` 会让该包内**新增文件
#   被静默忽略** → 故 ENV/ 与 env/ 一律锚定到仓库根 (/ 前缀)。
venv/
/ENV/
/env/
env.bak/
venv.bak/

# ---------- 测试与覆盖率 ----------
.pytest_cache/
.coverage
.coverage.*
htmlcov/
.tox/
.nox/
.hypothesis/
*.cover

# ---------- 编辑器 / IDE / 操作系统 (补充项) ----------
*.orig
*.rej
.vs/
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
._*

# ---------- 大幅面数据源 ----------
# Multi1D++ 便携包 (≈1.5 GB); 目录与压缩包规则同步
**/src/Multi1D++Portable20241128/
**/src/*.rar
**/src/*.zip
**/src/*.7z

# ---------- IONMIX 大体积绘图输出 / 编译产物 ----------
# implot01 ≈858 MB、implot03 ≈615 MB
**/ionmix/**/implot[0-9]*
**/ionmix/**/ionmxbug
**/ionmix/**/cnrdeos

# ---------- eosop_pro 运行 / 测试产物 ----------
# (产物跟测试走: 各 step 内的 _out/ 与集中 _tmp/)
# 注: output/ 与 *.h5/*.hdf5 已由上方规则覆盖, 此处只补未覆盖项
**/eosop_pro/outputs/
**/eosop_pro/docs/extracted/
**/eosop_pro/test/_tmp/
**/eosop_pro/test/**/_out/

# ---------- IONMIX 参考实现内的运行产物 (CSV; PNG 已全局忽略) ----------
**/ionmix/**/E4data/**/*.csv
**/ionmix/**/test/**/*.csv

# ---------- 二进制 / 编译中间件 / 归档 (通用兜底) ----------
*.exe
*.dll
*.pyd
*.msi
*.cab
*.bin
*.o
*.a
*.lib
*.obj
*.pdb
*.ilk
*.idb
*.sdf
*.opensdf
*.suo
*.rar
*.zip
*.7z
*.tar
*.tar.gz
*.tgz
*.gz
*.bz2
*.xz
*.zst

# ---------- 大体积科学数据格式 (补充项) ----------
# (*.h5 / *.hdf5 / *.pdf / *.pptx 已在文件上方全局忽略)
*.chk
*.plt
*.mat
*.sesame
*.opj
*.silo

# ----------------------------------------------------------------
# 同步时判定"已被覆盖"故未重复的条目 (上游 → 本文件对应规则):
#   Python    : __pycache__/ *.py[cod] *$py.class *.so .Python build/
#               develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib64/ parts/
#               sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg
#   虚拟环境  : .venv/
#   编辑器/IDE: .vscode/ .idea/ *.swp *.swo *~ *.bak
#   操作系统  : Thumbs.db .DS_Store
#   媒体大文件: *.pdf *.png *.pptx *.h5 *.hdf5
#   路径类    : ionmix/**/abjt_03        → 已有 **/abjt_03
#               eosop_pro/**/output/     → 已有 **/output/
#               ionmix/**/test/output/   → 已有 **/output/
#               ionmix/**/test/**/*.png  → 已有 *.png
#               ionmix/**/E4data/**/*.png→ 已有 *.png
#   已知例外  : eosop_pro/requirements.txt 被本文件 `*.txt` 规则排除
#               (文档统一 md 的既有约定), 如需入库用 git add -f。
# ----------------------------------------------------------------

# ================================================================
# My Projects (内部工作区, 不发布)
# ================================================================
.workbuddy/
.codebuddy/
%SystemDrive%

**/collision_compression/
**/plasma_preparation/
**/SNBtest/**
#  白名单: 仅放行场景产出 Test/ 与自写文档 docs/
#  ⚠️ src/SNB 为 FLASH 源码树快照 (License §3 禁止再分发) → 保持忽略
!**/SNBtest/Test/
!**/SNBtest/Test/**/
!**/SNBtest/docs/
!**/SNBtest/docs/*.md
!**/SNBtest/Test/**/*.py
!**/SNBtest/Test/**/*.md
!**/SNBtest/Test/**/*.par
!**/SNBtest/Test/**/Makefile
!**/SNBtest/Test/**/Config
!**/SNBtest/Test/**/*.cn4
!**/SNBtest/Test/**/*.h
!**/SNBtest/Test/**/*.sh
!**/SNBtest/Test/**/*.bat
# ----------------------------------------------------------------
# ★★★ SNB 源码保护 (2026-09-11): SNB 场景**不分享任何 F90 源码** ★★★
# 原作者 SNB 实现包 (diff_advanceTherm / Conductivity / Driver_evolveFlash /
# Grid_advanceDiffusion / hy_uhd_* / mgd_qesh) 及其派生变体一律禁止入库。
# 历史坑: 曾用 `!**/SNBtest/Test/**/*.F90` 反向放行 → 导致
#         Test/t00*/variants/*.F90 被 git add -n 选中 (实测 3 个文件)。
# 教训: 白名单只放行 py/md/par/Config 等**非源码**类型, 绝不放行 *.F90/*.f90。
# 另: `flash/scenarios/**/flash_input/` 已排除生成的 Simulation_*.F90。
# ----------------------------------------------------------------
**/*.F90
**/*.f90
**/Test/t00*/variants/

#**/private/

# ================================================================
# FLASH CENTER — 禁止再分发 (FLASH License Agreement §3)
# ================================================================
# 依据 FLASH License Agreement §3:
# "Users of the FLASH Code are not free to re-distribute the FLASH
#  Code, or any of its components, outside the Center."
#
# ⚠ 此区块必须放在 !*.* 之后，确保目录排除规则覆盖通用反排除。
# ⚠ 以下所有文件/目录均为 FLASH 版权材料、运行产物或内部文件，
#    严禁通过 Git 分发到 Gitee / GitHub 等公开平台。
# ================================================================

# --- FLASH 源码包 & 编译依赖 (任意层级) ---
**/FLASH4.8/
**/FLASH4.8.tar.gz
**/hdf5-1.8.12.tar.gz
**/hypre-2.9.0b.tar.gz
**/mpich-3.2.tar.gz

**/*flash4_ug*.*


# --- FLASH SimulationMain 官方示例源码 ---
**/SimulationMain/

# --- FLASH 官方 LaserSlab 示例 (源码/表格/配置, 含根目录与 scenarios 下) ---
**/flash_demo/LaserSlab/
**/LaserSlabPAR.xlsx

# --- FLASH 分发的 EOS/不透明度表 ---
# IONMIX4 格式 .cn4/.cnr/.imx/.ses 表均来自 FLASH 分发, 禁止再分发。
# 用户自研生成的 Z*.cn4 表由文件末尾例外保留。
*.cn4
*.cnr
*.imx
*.imx.gz
*.ses
*.epsi

# --- FLASH 参考源码 (从 FLASH4.8 源码树复制的 refs/ref_f90s) ---
**/ref_f90s/
**/refs/
**/abjt_03.f
**/abjt_03

# --- IONMIX 源码 / MultiEOS 数据 (FLASH 分发组件) ---
#**/ionmix/
**/MultiEOS/

# --- FLASH 官方文档 (用户手册 4.8 等) ---
docs/flash4_ug_4p8.md
docs/flash4_ug_4p8_temp.txt
**/para_doc/

# --- FLASH 协议文件 (本地参考, 不随包分发; docs/ 下协议文本除外) ---
license_agreement_FLASH.txt

# --- HDF5 输出 (FLASH checkpoint/plot) ---
*_hdf5_chk_*
*_hdf5_plt_cnt_*

# --- Demo / 场景运行产物 (含 FLASH 二进制与 HDF5) ---
**/demo_hpc/demo_task/
**/demo_local/demo_task/
**/demo_task/
**/runs/
**/outputfiles/
**/output/
**/inputfiles/
**/temp/
flash_demo/new_struture/
scenarios/flash_demo/new_struture/

# --- 临时调试目录 (勿提交) ---
**/wsl_tmp/
runs_*/
test/scenarios/runs_*/
**/run_tools/runs_*/
test/temp_delete/
test/grid_rede/
test/grid_rede_backup_v9/
test/grid_rede_copy_main/
test/newpara/flash_input/
test/newpara/flash_profile/
test/newpara/output/
test/hdf5ploter_easy/output/

# --- 旧副本 / 备份目录 ---
scenarios - 副本/
input_gen/gen_eos_op_copy/
output_processors_copy/

# --- 备份/副本文件 ---
*.bak
* (*).F90
Makefile (*)
Config (*)


# ==============================
# Python
# ==============================
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
dist_new/
dist_new2/
dist_wheel_only/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg


# ==============================
# IDEs
# ==============================
.vscode/
.idea/
*.swp
*.swo
*~


# ==============================
# 自研 EOS 表保留 (Z*.cn4 = ionmix 自生成, 发布包必需)
# ==============================
# 全局排除 *.cn4 (默认不发布); 唯一例外: Gen_eos_op_data/ 下以 Z 开头的
# ionmix 自研表 (Z*.cn4, 随包分发, 场景运行必需)。其余 cn4 (含 sim_input*、
# *-imx*、*-BADGER-* 等) 一律不分发。
!**/Gen_eos_op_data/**/Z*.cn4

# ==============================
# 场景生成文件 (不入库, 由 gen_flash_inputs.py 经 input_gen 生成)
# ==============================
# flash_input/ 下的 .par/Makefile/Config/F90/run 脚本/cn4/诊断图/日志
# 均由 ch_center/gen_flash_inputs.py 调用 input_gen 包生成 (同 inputfiles 模式);
# cn4 源文件存放于 flash/input_gen/gen_eos_op/eos_op_data/ (上方案例保留)。
# flash_output/ 为分析输出目录 (plots 等)。
flash/scenarios/**/flash_input/
flash/scenarios/**/flash_output/
flash/scenarios/**/scripts/*
flash/scenarios/**/*.html


# ==============================
# Credentials (never commit)
# ==============================
credentials.enc
.env

# ==============================
# OS files
# ==============================
.DS_Store
Thumbs.db
flash_work/

# Physics docs (本地知识库, 不推送)
physics/

# ================================================================
# PRIVATE — 用户自定义私有库 (不推送到 Gitee)
# ================================================================
# 以下为用户个人自定义的特殊场景/配置, 仅本地使用, 不随包分享。
# 如需分享, 请移除对应条目并重新提交。
# ================================================================

# 私有场景: grad_dens_sandwich (HE-CH-Si-CH-HE 渐变密度 CH)
scenarios/collision_compression/grad_dens_sandwich/

# 私有场景: thin_layer_sandwich (Al/CH/He 与 Si/CH/He 三层靶)
scenarios/collision_compression/thin_layer_sandwich/

# 私有场景: layer_tracer 参考数据已规范迁移至 Gen_eos_op_data (入库) +
# _par_layers.py (物理参数内嵌), tmp/ 参考目录已删除

# ==============================
# FLASH 版权材料 — IONMIX 文档/源 (重组后 flash/ 前缀路径)
# 注: IONMIX用户指南.md 为 PhySimX 自研中文文档, 需纳入版本控制, 故反选保留;
#     abjt_03 二进制/源码与 macfarlane1989.md 属第三方版权材料, 保持忽略。
# ==============================
flash/input_gen/gen_eos_op/ionmix/ionmix/docs/*
!flash/input_gen/gen_eos_op/ionmix/ionmix/docs/IONMIX用户指南.md
flash/input_gen/gen_eos_op/ionmix/ionmix/src/Ionmix/
**/macfarlane1989.md

# ==============================
# 重组后 flash/ 前缀路径 (标准布局)
# ==============================
flash/input_gen/gen_eos_op_copy/
flash/output_processors_copy/
flash/scenarios/collision_compression/grad_dens_sandwich/
flash/scenarios/collision_compression/thin_layer_sandwich/
flash/scenarios/collision_compression/thin_layer_sandwich/sim_input_*/
flash/scenarios/collision_compression/thin_layer_sandwich/sim_input_al/**
flash/scenarios/collision_compression/thin_layer_sandwich/sim_input_si/**
flash/scenarios/collision_compression/thin_layer_sandwich/**/*.cn4

# 临时 Gitee 链接测试工具 (不入库)
scripts/_gitee_link_test/

# 测试运行产物（不入库，由测试自动生成）
**/test_output.txt
flash/output_processors/test/test_output/

# eosop_pro 绘图包 — 测试生成产物（不入库，本地可保留）
# 注: 全局 *.html / *.log 已覆盖前两项, 此处显式列出以明确意图,
#      test_summary.json 为测试汇总(json) 亦属生成产物。
flash/input_gen/gen_eos_op/ionmix/ionmix/eosop_pro/test/report.html
flash/input_gen/gen_eos_op/ionmix/ionmix/eosop_pro/test/test_run_full.log
flash/input_gen/gen_eos_op/ionmix/ionmix/eosop_pro/test/test_summary.json

# 场景生成文件备份/遗留目录（不入库）
**/flash_input_old/

# ================================================================
# sandwich 场景 (收录自 collision_compression): 非 py 输入文件由
# gen_flash_inputs.py 从 sim_input_src.py / tables_imx.py / eos_op_data
# 按需生成, 一律不入库
# ================================================================
flash/scenarios/sandwich/**/sim_input*/
flash/scenarios/sandwich/**/sim_input*/**
flash/scenarios/sandwich/**/wsl_*.log
flash/scenarios/sandwich/**/*.png

# ================================================================
# SNBtest 场景例外 (置于文件尾部, 覆盖 flash_input/、physics/ 等全局规则)
# 仅放行场景运行必需输入; source_patches(F90 补丁) 与 src/(FLASH 源码)
# 属 FLASH 派生内容, License §3 禁止再分发 → 保持忽略 (修改记录见 md 文档)
# ================================================================
!flash/scenarios/private/SNB/SNBtest/Test/t001/flash_input/
!flash/scenarios/private/SNB/SNBtest/Test/t001/flash_input/*.par
!flash/scenarios/private/SNB/SNBtest/Test/t001/hpc_pack/
!flash/scenarios/private/SNB/SNBtest/Test/t001/hpc_pack/Makefile.h.hpc
!**/SNBtest/Test/**/*.hpc

# ================================================================
# ★ SNB 分享排除 (2026-09-11, 用户规则: 不分享 F90 源码)
# ----------------------------------------------------------------
# ① 会**写入/生成 F90 源码**的 py 脚本 —— 严禁分享:
#      scripts/generate/make_therm_variant.py  (写出 SNB 变体 F90)
#      scripts/generate/gen_t00*_inputs.py     (复制 F90 + 内嵌 Fortran 片段)
# ② **引用 F90 源码内容**的诊断文档 (含算法片段):
#      t003/docs/snb_source_diagnosis.md
# ③ variants/ 目录 (存作者 F90 派生物) —— 见上方规则
# ================================================================
**/Test/t00*/scripts/generate/make_therm_variant.py
**/Test/t00*/scripts/generate/gen_t003_inputs.py
**/Test/t00*/scripts/generate/gen_t004_inputs.py
**/Test/t00*/docs/snb_source_diagnosis.md

# ================================================================
# 瞬态产物：备份 / 一次性探针与流水线日志（2026-09-20）
#   *.bak[0-9]*  —— MultiEOSOP 格式说明 .bak2~6 等编辑备份
#   *.bak_*      —— 带时间戳的 .bak_YYYYMMDD 备份
#   gen_eos_op/src **/*.out / pipeline_*.out / _extract_chk_params.out
#                —— 一次性探针/流水线运行日志
# ================================================================
**/*.bak[0-9]*
**/*.bak_*
flash/input_gen/gen_eos_op/src/**/*.out
test/_extract_chk_params.out
**/pipeline_*.out

# ================================================================
# 离线安装包（scripts/08_offline_install/）
#   offline_pkg/  —— build_wheelhouse.py 的产物（wheelhouse + zip）
#   wheelhouse/   —— start_flash.py --offline 的默认查找位置
#   ★ 必须放在 .gitignore 的**末尾**：本文件开头有 `*` + `!*.*` + `!*/`
#     的"忽略一切无扩展名文件"规则，gitignore 后定义的规则才对其生效。
#   ★ 与裸 `env/` 的坑同类（见 gen_eos_op 段）：不要写成不锚定的相对名，
#     否则会误吞已跟踪的同名源码目录。统一锚定为根级路径。
# ================================================================
/offline_pkg/
/wheelhouse/

# ================================================================
# 模块化改造（2026-10-22）: 根目录统一产物区 artifacts/
#   wheel/sdist/dist/wheelhouse/构建日志一律落 artifacts/，不污染根目录。
#   与 pyproject.toml 的 sdist/wheel exclude **成对维护**（铁律见 pyproject 注释）。
# ================================================================
/artifacts/
# 部署链历史产物目录（2026-10-22 起新产物已统一落根目录 artifacts/，
#   此三处为迁移前残留，保留本地但不跟踪）
/flash/flash_run/remote/test/logs/
/flash/flash_run/remote/test/packages/
/flash/flash_run/remote/test/results/
