Gromacs分子动力学模拟主要可以分为以下几个步骤,不同的体系步骤可能略有不同. 在开始之前,先简单了解一下预平衡: 分子动力学模拟的最终目的是对体系进行抽样,然后计算体系的能量,各种化学键,成分分析等等.打个比方说,我们有一个蛋白质,我们想将它放入一种溶液中(可能是水,也可能不是),然后看看这个体系的能量如何变化,蛋白质的化学键,与水分子形成的氢键等等信息,那么我们需要将蛋白质放入溶液中,映射到现实中就是讲溶剂放入溶剂中,然后等体系稳定后,观察其性质. 在MD中,这一过程不向现实中一样是自然…
技术背景 在分子动力学模拟的过程中,考虑到运动过程实际上是遵守牛顿第二定律的.而牛顿第二定律告诉我们,粒子的动力学过程仅跟受到的力场有关系,但是在模拟的过程中,有一些参量我们是不希望他们被更新或者改变的,比如稳定的OH键的键长就是一个不需要高频更新的参量.这时就需要在一次不加约束的更新迭代之后(如Velocity-Verlet算法等),再施加一次约束算法,重新调整更新的坐标,使得规定的键长不会产生较大幅度的变更. 初始化坐标参数 为了实现LINCS这一算法,我们先初始化一组随机的坐标用于测试,比…
技术背景 在上一篇文章中,我们讨论了在分子动力学里面使用LINCS约束算法及其在具备自动微分能力的Jax框架下的代码实现.约束算法,在分子动力学模拟的过程中时常会使用到,用于固定一些既定的成键关系.例如LINCS算法一般用于固定分子体系中的键长关系,而本文将要提到的SETTLE算法,常用于固定一个构成三角形的体系,最常见的就是水分子体系.对于一个水分子而言,O-H键的键长在模拟的过程中可以固定,H-H的长度,或者我们更常见的作为一个H-O-H的夹角出现的参量,也需要固定.纯粹从计算量来考虑的话,…
技术背景 在分子动力学模拟过程中会遇到一些拓扑结构非常复杂的分子模型,所谓的复杂不仅仅是包含众多的原子,还有各种原子之间的成键关系与成键类型等.这时候就非常能够体现一个好的可视化软件的重要性了,这里我们介绍的VMD是一个业界非常常用.功能也非常强大的一款软件. VMD的安装 首先访问VMD官方网站,找到适合自己本地OS和硬件系统的版本进行下载.这里我们本地是Ubuntu20.04的系统,所以下载了一个Linux通用的版本: 下载到本地之后,找到一个合适的文件夹进行解压: dechin@ubunt…
传送门 题意 给出正n多边形和一个数a,寻找与a最接近的角,输出角编号 分析 找出多边形上所有角,一一比对即可 trick 1.判断的时候注意精度,i.e.x-eps>0 2.double与double相除时不要立刻转化成int,可能会有误差 代码 #include <bits/stdc++.h> using namespace std; #define ll long long #define F(i,a,b) for(int i=a;i<=b;++i) #define R(i,…
continue:继续下一次循环 一.continue 题目: 如果是双数,后面的代码不执行,直接进行下一次循环 要求效果: 答案: public class HelloWorld { public static void main(String[] args) { //打印单数 for (int j = 0; j < 10; j++) { if(0==j%2) continue; //如果是双数,后面的代码不执行,直接进行下一次循环            System.out.println(…
系统环境 Win11 22H2 企业版 开启虚拟化.window subsystem for liunx等虚拟机相关的功能 应用商店中安装WSL2 安装步骤 打开Ubuntu,输入sudo apt full-upgrade,并输入设置好的密码 安装cmake编译器sudo apt install cmake 安装c和c++编译器sudo apt install gcc&g++ 下载gromacs源码sudo wget ftp://ftp.gromacs.org/gromacs/gromacs-2…
这是mdp文件系列的第二篇,介绍nvt平衡中要使用的mdp文件. 先上代码,nvt.mdp 1 title = OPLS Lysozyme NVT equilibration 2 define = -DPOSRES 3 ; Run parameters 4 integrator = md 5 nsteps = 50000 6 dt = 0.002 7 ; Output control 8 nstxout = 500 9 nstvout = 500 10 nstenergy = 500 11 ns…
C#实现PID控制的模拟测试和曲线绘图   本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模拟PID控制,后来计算机成为控制器,由于计算机控制是一种采样控制,需把模拟PID转换成数字PID,就是模拟PID的离散化,两者中间是香浓定理.当然这些和编程是没关系的,我们只需要有个数字模型就能开展后面的工作了. 在编程时,可写成:   绝对式计算公式 Uo(n) = P *e(n) + I*[e(…
程序片段:01.Point.c+02.进程.c+03.内存的栈和堆.c 内容概要:内存32位和64位的区别 ///01.Point.c #include <stdio.h> #include <stdlib.h> //01.指针变量所占用的内存尺寸由编译器进行直接决定 // 指针变量所占用的内存尺寸同时直接或间接与CPU-->操作系统-->编译器平台有关 // 综合决定:CPU-->操作系统-->编译器平台 // 直接决定:编译器平台 //02.指针变量当中…