The first line is the name of the md tast
#本文本文件通过命令行中加入"-mdin 本文本文件名"读入，如果该文件名为"mdin.txt"且在当前命令行的工作路径中，可不在命令行中显式输入
#本文本文件内的所有参数指令均可通过加"-"前缀在命令行里输入，例如 -cutoff 8.0 -skin 2.0

#分子模拟最基本相关设置
mode = NPT #可选Rerun, Minimization, NVE, NVT, NPT

dt = 2e-3 #模拟步长，单位ps
step_limit = 5000 #模拟总步数
write_information_interval = 1000 #保存中间信息的间隔
write_restart_file_interval = 2500  #保存重启坐标和速度的间隔
molecule_map_output = 1 #保存的坐标按分子整体进行周期性映射
velocity_max = 20. #迭代时速度的最大值，单位为22.45埃每皮秒

#最小化设置相关
##minimization
{
    max_move = 0.1 #每步最小化原子最远更新的距离，单位埃
    dynamic_dt = 1 #使用自动更新步长
    dt_factor = 1e-4 #自动更新步长的参数，策略越大越能够逃脱局部最小，但更不容易收敛
    dt_increasing_rate = 1.01 #步长增加的比例
    dt_decreasing_rate = 0.01 #步长减小的比例
    momentum_keep = 0 #动量梯度下降法，可以保存部分速度，保存的速度比例
}

#近邻表相关设置
cutoff = 8.0   #近程力的截断半径
skin = 2.0   #截断半径的外延半径
neighbor_list
{
    refresh_interval = 0 #更新间隔，0表示有原子距上次更新近邻表移动超过skin_permit * skin后自动更新，其他整数则每隔对应步数更新
    skin_permit = 0.5 #自动更新时的参数
    max_atom_in_grid_numbers = 128 #近邻表中每个空间格点中存储的最大原子数
    max_neighbor_numbers = 1200 #每个原子的最大近邻数
}

#热浴相关
target_temperature = 300.0 #模拟的目标平衡温度，单位为开
thermostat = berendsen_thermostat #可选热浴见下

##middle_langevin #居中图示的langevin算法
{
    seed = 1  #随机数种子，不填随机生成
    gamma = 1 #摩擦系数（碰撞频率），单位为ps^-1
}


##nose_hoover_chain
{
    length = 10  #NH链的长度（为了增加遍历性，拓展的维度可以不止一维）
    tau = 1.0   #弛豫时间常数
    #restart_input = xxx.txt  #如果需要满足时间反演对称性，restart的时候需要坐标和速度连续，不给默认均为0
    #restart_output = xxx.txt #如果需要满足时间反演对称性，restart的时候需要坐标和速度连续，不给不会打印
    #crd = xxx.txt  #如果需要nose_hoover_chain的粒子坐标轨迹
    #vel = xxx.txt   #如果需要nose_hoover_chain的粒子速度轨迹
}

##andersen_thermostat
{
    update_interval = 500 #更新间隔，update_interval * dt 就类似于其他热浴的时间常数
    #seed = 0 #随机数种子
}  

##berendsen_thermostat
{
    tau = 1.0 #弛豫时间常数
    stochastic_term = 1 #选1加入随机修正（又叫bussi控温），使得最后的分布能满足正确的温度分布，选0就是原本的berendsen控温，只能保证温度控到平衡温度
    #seed = 0 #随机数种子
}

#压浴相关
barostat =  andersen_barostat #可选monte_carlo_barostat, berendsen_barostat和andersen_barostat
target_pressure = 1.0 #模拟的目标平衡温度，单位为巴
##berendsen_barostat  #两个##可以直接注释掉整个大括号内的内容
{
    tau = 1.0 #弛豫时间，单位为ps
    compressibility = 4.5e-5 #压缩系数，单位为bar^-1
    update_interval = 1 #压浴更新间隔
    stochastic_term = 1
}
##monte_carlo_barostat 
{
    update_interval = 100 #压浴更新间隔
    initial_ratio = 0.001 #初始体积最大变化百分数
    check_interval = 20 #每尝试check_interval次后更新体积最大变化率
    molecule_scale = 1 #按照分子内相对坐标不变控压
    accept_rate_low = 30 #改变体积的接受概率百分比最低值
    accept_rate_high = 40 #改变体积的接受概率百分比最高值
    couple_dimension = NO
}

##andersen_barostat 
{
    tau = 1.0 #弛豫时间，单位为ps
    compressibility = 4.5e-5 #压缩系数，单位为bar^-1
    dV/dt = 0 #初始体积变化速度，单位为A^3/(1/20.455 fs)
}

#限制参数
##restrain
{
    atom_id = covid-tip4p/covid-tip4p_restrain.txt   #需要限制的原子编号表
    #weight = 500 #限制势的力常数，单位为千卡每摩每埃，过大可能会导致体系崩溃
    #coordinate_in_file = covid-tip4p/npt_coordinate.txt  #SPONGE格式的参考坐标，不填默认初始坐标
    #amber_rst7 = temp.rst7 #AMBER格式的参考坐标，不填默认初始坐标
}
#约束参数
constrain
{
    mode = SHAKE #目前支持simple_constrain和shake
    mass = 3.3  #约束原子质量小于该值的原子的键
    angle = 0 #是否约束键角
    #in_file = xxx.txt #用文件指定需要约束的键长
}
#settle_disable = 1
##simple_constrain
{
    iteration_numbers = 25 #迭代次数
    step_length = 1 #迭代步长
}
##shake
{
    iteration_numbers = 25 #迭代次数
    step_length = 1 #迭代步长
}
#PME参数
PME
{
    #Direct_Tolerance = 1e-6 #直接部分计算精度接受的相对误差
    #fftx = 4  #傅里叶变化时的x方向划分的格点数
    #ffty = 4  #傅里叶变化时的y方向划分的格点数
    #fftz = 4  #傅里叶变化时的z方向划分的格点数
}

#LJ参数
LJ
{
    in_file = covid-tip4p/covid-tip4p_lj.txt   #LJ输入文件
}

#输入输出参数
    #输入
        #坐标和速度
        coordinate_in_file = covid-tip4p/npt_coordinate.txt
        velocity_in_file = covid-tip4p/npt_velocity.txt
        #amber_rst7 = xxx.rst7 #AMBER格式
        
        #拓扑信息
        
       #amber_parm7 = xxx.parm7 #AMBER格式
       #default_in_file_prefix = covid-tip4p/covid-tip4p
       #会默认去找对应的in_file，例如如果存在covid-tip4p/covid-tip4p_bond.txt
       #则default_in_file_prefix会运行bond_in_file = covid-tip4p/covid-tip4p_bond.txt
        mass_in_file = covid-tip4p/covid-tip4p_mass.txt
        charge_in_file = covid-tip4p/covid-tip4p_charge.txt
        bond_in_file = covid-tip4p/covid-tip4p_bond.txt
        angle_in_file = covid-tip4p/covid-tip4p_angle.txt
        dihedral_in_file = covid-tip4p/covid-tip4p_dihedral.txt
        nb14_in_file = covid-tip4p/covid-tip4p_nb14.txt
        exclude_in_file = covid-tip4p/covid-tip4p_exclude.txt
        residue_in_file = covid-tip4p/covid-tip4p_residue.txt
        virtual_atom_in_file = covid-tip4p/covid-tip4p_vatom.txt
        #CV控制信息
        cv_in_file = cv.txt
    #输出
        mdout = mdout.txt   #记录能量轨迹的文件
        mdinfo = mdinfo.txt #记录参数相关的文件
        box = mdbox.txt       #记录盒子轨迹的文件
        crd = mdcrd.dat        #记录坐标轨迹的文件
        rst = restart               #记录重启坐标和速度的文件

#选择性温度增强抽样
##SITS
{
# 下面只是常用的一些命令，更全的请参考源码文件中的SITS文件夹中的README.md
# 注意目前不支持NPT系综的SITS
   mode = 0  #启用sits固定语句
   k_numbers = 40  #温度划分的数量
   T_low = 250   #最低温度
   T_high = 600  #最高温度
   protein_numbers = 22  #需要增强的原子数量（前22个原子）
   record_interval = 1    #每隔1步记录一次能量
   update_interval = 100  #每隔100步更新一次SITS系数
   nk_rest = 0               # sits的nk参数重开与否，0表示初始化为0，1表示是重开的，需要读入
   #nk_in_file = SITS_nk_rest_ala.txt   #读入的参数文件
   nk_rest_file = SITS_nk_rest_ala.txt  #保存的参数文件
   nk_fix = 0                 # sits系数保持不变
   pe_b = -20                # sits系数中的能量的偏移量
}


#其他参数
#dont_check_input = 1 #是否检查运行参数
end_pause = 1 #程序运行结束后是否需要输入任意键退出
device = 0 #使用的GPU设备
