fix: color_xrange 范围限定 d_max + color_driver + color 范围改为 [0,1] + bug 修复

This commit is contained in:
2026-06-24 16:09:39 +08:00
parent b50c55d0a3
commit e415bf5ba5
87 changed files with 360440 additions and 76 deletions
+92
View File
@@ -0,0 +1,92 @@
"""
为指定案例添加次紧邻键 (k2, k=100, r0=1.41421356)。
用法: python add_k2.py case16
python add_k2.py case16 case17 case18
python add_k2.py --all
"""
import os
import sys
def add_k2(case_dir):
coord_path = os.path.join(case_dir, "input", "coord.txt")
conn_path = os.path.join(case_dir, "input", "connection.txt")
bond_path = os.path.join(case_dir, "input", "bond.txt")
if not os.path.exists(coord_path):
print(f" [跳过] {case_dir}: 找不到 coord.txt")
return False
# 读取 coord.txt 获取网格尺寸
with open(coord_path, "r", encoding="utf-8") as f:
lines = f.readlines()
n_atoms = len(lines) - 1 # 去掉表头
N = int(n_atoms ** 0.5)
if N * N != n_atoms:
print(f" [跳过] {case_dir}: 非正方形网格 (n_atoms={n_atoms})")
return False
print(f" {case_dir}: {N}x{N} 网格")
# 读取现有 connection.txt,检查是否已有 k2
has_k2 = False
if os.path.exists(conn_path):
with open(conn_path, "r") as f:
for line in f:
if "k2" in line:
has_k2 = True
break
if has_k2:
print(f" k2 已存在,跳过 connection.txt")
else:
# 追加 k2 键到 connection.txt
with open(conn_path, "a", encoding="utf-8") as f:
cnt = 0
for row in range(N):
for col in range(N):
id1 = row * N + col + 1
if col + 1 < N and row + 1 < N:
f.write(f"{id1} {(row + 1) * N + (col + 1) + 1} k2\n")
cnt += 1
if col - 1 >= 0 and row + 1 < N:
f.write(f"{id1} {(row + 1) * N + (col - 1) + 1} k2\n")
cnt += 1
print(f" connection.txt: 追加 {cnt} 条 k2 键")
# 检查 bond.txt 是否有 k2
has_bond = False
if os.path.exists(bond_path):
with open(bond_path, "r") as f:
for line in f:
if line.startswith("k2"):
has_bond = True
break
if has_bond:
print(f" bond.txt: k2 已存在")
else:
with open(bond_path, "a", encoding="utf-8") as f:
f.write("k2 100.0 1.41421356\n")
print(f" bond.txt: 追加 k2 定义")
return True
if __name__ == "__main__":
targets = []
if "--all" in sys.argv:
base = os.path.dirname(os.path.abspath(__file__))
for d in sorted(os.listdir(base)):
if d.startswith("case") and os.path.isdir(os.path.join(base, d)):
targets.append(os.path.join(base, d))
else:
for arg in sys.argv[1:]:
if arg.startswith("--"):
continue
p = arg if os.path.isabs(arg) else os.path.join(os.path.dirname(os.path.abspath(__file__)), arg)
targets.append(p)
for t in targets:
add_k2(t)