pymatgen真实输出后处理：Si EOS、介电光学与水分子NMR

在解压目录运行：
  bash run.sh
  ls analysis
  ls figures

使用现有pymatgen/2026.9.24环境，1个CPU核心；不启动新的VASP。
原始7个计算案例包含5个Si体积点、1个Si光学和1个水NMR。
完整原始INCAR/POSCAR/KPOINTS/CONTCAR/OUTCAR/vasprun.xml随包保留，
没有POTCAR、WAVECAR或VASP程序。CASES.json与MANIFEST.sha256提供文件哈希。

单独运行：
  module load pymatgen/2026.9.24
  python response.py
  python plot.py

1. EOS
   5个Si计算各8原子，读取本轮E0和CONTCAR体积，按每原子归一化。
   EOS('birch_murnaghan')给出V0约20.44396 Å^3/atom、B0约88.565GPa。
   与独立SciPy方程拟合核对；这不是有限温度自由能，也不是收敛材料数据库。
   analysis/si-eos-native.csv为5个真实DFT点，si-eos-fit.csv为拟合曲线。

2. 光学
   读取同一次Si XML中density-density介电响应，保留全部2001个频点。
   导出epsilon1/epsilon2、n/k、Fresnel反射率、能量损失函数和吸收系数。
   吸收系数用alpha=2*(E/hbar)*k/c并转换到cm^-1，另与solar.slme接口核对。
   这里使用Si的各向同性/对角响应，不把非对角张量分量当独立折射率。
   E=0时波长趋于无穷，波长CSV只包含正能量，不能伪造有限值。
   DielectricAnalysis的L实际是-Imag(1/epsilon)，不是吸收率；
   T=1-R-L没有厚度/界面传播模型，不能用来预测实际样品透射率。
   analysis/si-optical.csv和si-positive-wavelength.csv保留可画图数据。

3. NMR
   水分子3个原子，实际输出3x3 CSA张量，含各向同性芯层贡献。
   脚本匹配本例VASP6.6.1的新CSA格式，直接读取左右两个完整矩阵。
   不含G=0的分子参照：H1/H2约30.6804ppm，O约318.7559ppm。
   含G=0的静态晶体口径保留作对照：H约30.7335ppm，O约318.8090ppm。
   每个原子两种G=0约定，所以CSV有6行，实际仍然是3个原子。
   所有值都是绝对屏蔽；实验化学位移还需要相同方法的参照物。

   本例VASP skew=3*(sigma_iso-sigma22)/span；本安装版pymatgen Maryland
   kappa=3*(sigma22-sigma_iso)/span，符号相反。脚本先从完整张量生成主值，
   再输出各表示，不能把VASP的三元组不加转换地填入from_maryland_notation。
   Haeberlen/Mehring/Maryland数值和原始BDIR矩阵均保存在RESULTS.json。
   主值使用对称化张量；这里没有分析主轴方向或模拟完整NMR谱线。

   当前Outcar通用构造器对这份新版NMR输出的旧标题匹配不兼容，
   本例使用附件读取程序，不修改安装环境，也不必重新计算原始数据。
   不要为适配读取程序随意改变LNMRLEG，新旧输出的屏蔽/位移符号需核对。

response.py的目录、体系和响应标签对应这套案例。换自己的输出前先核对
计算方法、原子数、能量/体积归一化、介电响应类型和NMR格式/G=0约定。
