示例#1
0
                   for k in xrange(numat)) / Mass_total
    MC_vel_Z = sum(symb[k].mass * symb[k].vel.z
                   for k in xrange(numat)) / Mass_total

    angular_vel = my.Inertia_matrix(symb)
    rot_comp = [
        my.cross(angular_vel, [symb[k].cart.x, symb[k].cart.y, symb[k].cart.z])
        for k in range(numat)
    ]

    for i in xrange(numat):
        symb[i].vel.x = symb[i].vel.x - MC_vel_X - rot_comp[i][0]
        symb[i].vel.y = symb[i].vel.y - MC_vel_Y - rot_comp[i][1]
        symb[i].vel.z = symb[i].vel.z - MC_vel_Z - rot_comp[i][2]

    my.nose_hoover_1(symb, dt, thermo, T, numat)

    # Transformation to internal coordinates
    mol.cart = [var.cart for var in symb]
    mol.internas_bonds(bond, nbond)
    mol.internas_ang(ang, nang)
    mol.internas_dihe(dih, ndih)

    # Calculation of the transpose Wilson Matrix
    wilson, transp = my.matrix_transf(symb, bond, ang, dih)

    # force field calculation
    grad, pot = mol.potential(transp, Grad_st1, Hess_st1)
    vect_ext = calc_grad_ext(mod_Fext, symb[anchor1].cart, symb[anchor2].cart)
    grad_ext = flat_points(check_anchor(vect_ext, anchor1, anchor2, numat))
    new_grad = grad + grad_ext