fix: color_xrange 范围限定 d_max + color_driver + color 范围改为 [0,1] + bug 修复
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user