MindSponge分子动力学模拟——自定义控制器(2024.05)

news/2024/9/20 16:48:31

技术背景

分子动力学模拟中的控制器(Controller)可以被用于修改模拟过程中的原子坐标和原子速度等参量,从而达到控制系统特定参量的目的。例如控温器可以用于实现NVT系综,控压器可用于实现NPT系综。而在MindSponge分子动力学模拟框架下,控温控压都可以基于控制器Controller来实现。关于更多的MindSponge分子动力学模拟框架的信息,如安装和基本使用等,可以阅读MindSponge专栏里面的文章。

自定义Controller

Controller位于control路径下,除了已经定义好的一些控温控压算法之外,用户还可以直接继承Controller来实现自己需要的系统控制算法。例如最简单的,这里我们定义一个缩放原子速度的控制器:

class MyController(Controller):def construct(self, coordinate: Tensor,velocity: Tensor,**kwargs):return super().construct(coordinate, velocity/2, **kwargs)

它的功能是保持原子当前位置不变,但是速度减半,简单表述就是:

\[\textbf{v}_{control}=\frac{\textbf{v}}{2} \]

完整的MindSponge用例如下所示:

from mindspore import context, Tensor
# 选择MindSpore图模式,0号GPU硬件
context.set_context(mode=context.GRAPH_MODE, device_target='GPU', device_id=0)
from sponge import set_global_units, Sponge, Molecule, WithEnergyCell, UpdaterMD, ForceField
from sponge.function import VelocityGenerator
from sponge.callback import RunInfo
from sponge.control import Controller
# 自定义控制器
class MyController(Controller):def construct(self, coordinate: Tensor,velocity: Tensor,**kwargs):return super().construct(coordinate, velocity/2, **kwargs)
# 设置全局分子动力学模拟单位
set_global_units('nm', 'kj/mol')
# 根据内置模板生成水分子系统
system = Molecule(template='water.spce.yaml')
# 将分子沿X轴方向复制一份,现在体系有2个水分子
system.reduplicate([0.3, 0, 0])
# 基于前面的分子系统,再复制一份,然后合并到system里面,此时一共是4个水分子
new_sys = system.copy([0, 0, -0.3])
system.append(new_sys)
# 选择SPCE力场
potential = ForceField(system, parameters='SPCE')
# 类似于深度学习中的WithLossCell,绑定了分子系统和力场的信息
withenergy = WithEnergyCell(system, potential)
# 配置MD参数
temp = 300
vgen = VelocityGenerator(temp)
velocity = vgen(system.shape, system.atom_mass)
# 构建迭代器,并且传入我们自定义的控制器
updater = UpdaterMD(system=system,time_step=1e-3,velocity=velocity,integrator='velocity_verlet',temperature=300,controller=MyController(system),
)
# 绑定系统、力场和迭代器三者的内容
mini = Sponge(withenergy, optimizer=updater)
# 使用回调函数,每一步都会打印输出能量、温度等信息
run_info = RunInfo(1)
mini.run(5, callbacks=[run_info])

因为每次控制器被调用都会使得速度减半,而且按照执行的顺序,控制器在常规的控温之后,因此运行过程中体系的温度无法达到我们预期的300K:

[MindSPONGE] Started simulation at 2024-05-15 16:07:54
[MindSPONGE] Step: 1, E_pot: 110.0423, E_kin: 11.559962, E_tot: 121.60226, Temperature: 84.26327
[MindSPONGE] Step: 2, E_pot: 111.15905, E_kin: 11.305634, E_tot: 122.46468, Temperature: 82.40941
[MindSPONGE] Step: 3, E_pot: 121.5491, E_kin: 8.962629, E_tot: 130.51173, Temperature: 65.330696
[MindSPONGE] Step: 4, E_pot: 126.55731, E_kin: 7.8556476, E_tot: 134.41296, Temperature: 57.26165
[MindSPONGE] Step: 5, E_pot: 118.11452, E_kin: 9.807281, E_tot: 127.9218, Temperature: 71.48756
[MindSPONGE] Finished simulation at 2024-05-15 16:07:57
[MindSPONGE] Simulation time: 3.06 seconds.
--------------------------------------------------------------------------------

如果去掉这个降低速度的控制器,那么体系的温度和动能一下子就上去了,并且在稳定之后,温度会逐渐收敛在300K附近:

[MindSPONGE] Started simulation at 2024-05-15 16:09:10
[MindSPONGE] Step: 1, E_pot: 110.0423, E_kin: 64.28456, E_tot: 174.32686, Temperature: 468.5852
[MindSPONGE] Step: 2, E_pot: 116.11336, E_kin: 58.616272, E_tot: 174.72963, Temperature: 427.26773
[MindSPONGE] Step: 3, E_pot: 120.5004, E_kin: 54.469967, E_tot: 174.97037, Temperature: 397.04434
[MindSPONGE] Step: 4, E_pot: 119.11376, E_kin: 55.627754, E_tot: 174.74152, Temperature: 405.48373
[MindSPONGE] Step: 5, E_pot: 114.84599, E_kin: 59.536713, E_tot: 174.3827, Temperature: 433.97702
[MindSPONGE] Finished simulation at 2024-05-15 16:09:12
[MindSPONGE] Simulation time: 2.84 seconds.
--------------------------------------------------------------------------------

总结概要

本文介绍了在MindSponge分子动力学模拟框架先实现自定义Controller控制器的方法,通过调控体系中的原子坐标和原子速度等,来控制系综的参量。MindSponge分子模拟框架基于MindSpore深度学习框架开发而成,对于开发者尤其是深度学习开发者来说,非常的友好。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/controller.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31863.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PixelBook go刷回Chrome OS 小记(无备份BIOS恢复BIOS+刷回chrome os)

参考 主要看这两篇文章即可 文章A:How to Restore a Chromebook’s Original BIOS 文章B:chromebook恢复bios及刷回chrome os教程 特别感谢网站(跪谢):MrChromebox overview 先说现在系统的状态:第三方bios+Win11 接下来需要进行的步骤, 大概分为三步:安装/引导fydeos 恢…

index.js from Terser Error: error:0308010C:digital envelope routines::unsupported

Vue 报错error:0308010C:digital envelope routines::unsupported 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响. 方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回…

原型设计工具介绍

主流原型设计工具介绍在当今的互联网和移动应用开发领域,原型设计工具扮演着至关重要的角色。它们不仅能够帮助设计师和开发人员更高效地传达设计理念和功能需求,还能通过模拟真实用户体验来优化产品设计。 1.sketch Sketch是一款专为设计师打造的矢量图形设计工具,特别适用…

安捷伦34401A原理图研究 24年-5-15

1. 原理图分为9页,如下 第6页的主控使用 80C192,是INTEL 早期出的16位单片机,外接的256K EPROM, 32K SRAM。 第7页有个单片机 87C51, 是51单片机,主要是用来GPIB和RS232通信用 第9页也有个单片机 87C51, 是51单片机,所以据我所知一共3个单片机。 2. ASIC 定制芯片不熟悉…

使用Qt Designer作为原型设计工具

Qt Designer是一个用于创建 Qt 用户界面的图形化界面设计器工具。它专门用于创建基于 Qt 框架的应用程序的用户界面,可以创建 Qt Widgets、Qt Quick Controls 等元素,并通过拖放和属性编辑器来设计界面布局,然后将其与代码集成。Qt Designer 是为了在 Qt 应用程序开发过程中…

DBLP 简单使用

DBLP 简单使用1.访问DBLP网站 https://dblp.org/ 2.在搜索框输入关键词 这里我想搜寻ICML2023中关于小样本的论文 所以输入ICML点击这个超链接进入ICML页面可以看到历年的ICML信息,点击contents展开查看该年的所有内容 在该页面ctrl+f输入 few-shot 即可迅速的找到所有和小样…

2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。

2024-05-15:用go语言,考虑一个整数 k 和一个整数 x。 对于一个数字 num, 在其二进制表示中, 从最低有效位开始, 我们计算在 x,2x,3x 等位置处设定位的数量来确定其价值。 举例说明, 若对于 x=1,num=13,则二进制表示为000001101,对应的价值为3。 又如,当x=2,num=13…

通过大模型完成影视解说视频剪辑1.0

一. 概述 什么是自动化剪辑解说电影的 AI Agent? 自动化剪辑解说电影的 AI Agent 是一种利用大模型技术对电影进行自动化剪辑和解说的系统。这种 AI Agent 能够分析电影中的剧情、人物对话、场景变化等元素,自动生成解说词并进行剪辑,使得观众可以在更短的时间内了解电影的核…