# 准备数据结构存储结果 slices_mass_energy = [{'mass': 0, 'total_kinetic_energy': 0.0,'velocity': np.zeros(3), 'atom_count': 0,'center_x': 0.0, 'water_molecule_count': 0} for _ in range(20)]
# 切换到最后一帧 u.trajectory[-1]
print('Time', u.trajectory.time)
for i in range(20):
x_start = x_min + i * slice_width
x_end = x_start + slice_width # 计算每个分片的中心点 x 坐标 center_x = (x_start + x_end) / 2
# 输出当前分片范围及其中心点 print(f"Processing slice {i + 1}: x range = [{x_start:.3f}, {x_end:.3f}], center_x = {center_x:.3f}") # 选择x轴在指定范围内的原子 slice_atoms = u.select_atoms(f"prop x >= {x_start} and prop x < {x_end}") # 输出选中原子的数量 print(f"Number of atoms in slice {i + 1}: {len(slice_atoms)}")
# 选择分片中的水分子数量 water_molecules = u.select_atoms(f"resname SOL and prop x >= {x_start} and prop x < {x_end}")
water_molecule_count = len(water_molecules.residues) # 获取水分子的数量(按残基计数) print(f"Water molecule count in slice {i + 1}: {water_molecule_count}")
# 输出每片的总质量(kg)、总动能(J)、原子数目、温度(K)及中心点 x 坐标 print(f"Slice {i + 1}:")
print(f" Center X (Å): {center_x:.3f}")
print(f" Total Mass (kg): {slice_data['mass']:.3e}")
print(f" Total Kinetic Energy (J): {total_kinetic_energy:.3e}")
print(f" Atom Count: {atom_count}")
print(f" Water Molecule Count: {water_molecule_count}")
print(f" Temperature (K): {Temperature:.3f}")我问了几个人别人说代码乍一看没啥问题 但是计算出的结果很小 有没有大佬帮忙看一下!!!感谢!!作者Author: sobereva 时间: 2024-9-3 18:44
如置顶的新社员必读贴、论坛首页的公告栏、版头的红色大字非常明确所示,求助帖必须在帖子标题明确体现出此帖内容是求助或提问,并清楚、准确反映出帖子具体内容,避免有任何歧义和含糊性,仔细看http://bbs.keinsci.com/thread-9348-1-1.html。我已把你的不恰当标题 “Gromacs计算温度分布” 改了,以后务必注意