예제 #1
0
def get_gdir_torsion(coords1, coords2, coords3, coords4):
    r_kl = geomcalc.get_r_ij(coords3, coords4)
    r_ij = geomcalc.get_r_ij(coords1, coords2)
    u_ji = geomcalc.get_u_ij(coords2, coords1)
    u_jk = geomcalc.get_u_ij(coords2, coords3)
    u_kj = geomcalc.get_u_ij(coords3, coords2)
    u_kl = geomcalc.get_u_ij(coords3, coords4)
    a_ijk = geomcalc.get_a_ijk(coords1, coords2, coords3)
    a_lkj = geomcalc.get_a_ijk(coords4, coords3, coords2)
    gdir1 = geomcalc.get_ucp(u_ji, u_jk)
    gdir4 = geomcalc.get_ucp(u_kl, u_kj)
    gdir1 /= r_ij * math.sin(geomcalc.deg2rad() * a_ijk)
    gdir4 /= r_kl * math.sin(geomcalc.deg2rad() * a_lkj)
    gdir2 = -0.5 * (gdir1 + gdir4)
    gdir3 = 1.0 * gdir2
    return gdir1, gdir2, gdir3, gdir4
예제 #2
0
def get_gdir_torsion(coords1, coords2, coords3, coords4):
    r_kl = geomcalc.get_r_ij(coords3, coords4)
    r_ij = geomcalc.get_r_ij(coords1, coords2)
    u_ji = geomcalc.get_u_ij(coords2, coords1)
    u_jk = geomcalc.get_u_ij(coords2, coords3)
    u_kj = geomcalc.get_u_ij(coords3, coords2)
    u_kl = geomcalc.get_u_ij(coords3, coords4)
    a_ijk = geomcalc.get_a_ijk(coords1, coords2, coords3)
    a_lkj = geomcalc.get_a_ijk(coords4, coords3, coords2)
    gdir1 = geomcalc.get_ucp(u_ji, u_jk)
    gdir4 = geomcalc.get_ucp(u_kl, u_kj)
    gdir1 /= r_ij * math.sin(geomcalc.deg2rad() * a_ijk)
    gdir4 /= r_kl * math.sin(geomcalc.deg2rad() * a_lkj)
    gdir2 = -0.5 * (gdir1 + gdir4)
    gdir3 = 1.0 * gdir2
    return gdir1, gdir2, gdir3, gdir4
예제 #3
0
def get_e_outofplane(o_ijkl, v_n, gamma, n_fold):
    e_outofplane = v_n * (1 + math.cos(geomcalc.deg2rad() * (n_fold * o_ijkl - gamma)))
    return e_outofplane
예제 #4
0
def get_e_torsion(t_ijkl, v_n, gamma, n_fold, paths):
    e_torsion = v_n * (1 + math.cos(geomcalc.deg2rad() * (n_fold * t_ijkl - gamma))) / paths
    return e_torsion
예제 #5
0
def get_e_angle(a_ijk, a_eq, k_a):
    e_angle = k_a * (geomcalc.deg2rad() * (a_ijk - a_eq) )**2
    return e_angle
예제 #6
0
def get_g_outofplane(o_ijkl, v_n, gamma, n_fold):
    g_outofplane = -v_n * n_fold * math.sin(geomcalc.deg2rad() * (n_fold * o_ijkl - gamma))
    return g_outofplane
예제 #7
0
def get_g_torsion(t_ijkl, v_n, gamma, n_fold, paths):
    g_torsion = -v_n * n_fold * math.sin(geomcalc.deg2rad() * (n_fold * t_ijkl - gamma)) / paths
    return g_torsion
예제 #8
0
def get_g_angle(a_ijk, a_eq, k_a):
    g_angle = 2 * k_a * (geomcalc.deg2rad() * (a_ijk - a_eq) )
    return g_angle
예제 #9
0
def get_g_outofplane(o_ijkl, v_n, gamma, n_fold):
    g_outofplane = -v_n * n_fold * math.sin(geomcalc.deg2rad() *
                                            (n_fold * o_ijkl - gamma))
    return g_outofplane
예제 #10
0
def get_g_torsion(t_ijkl, v_n, gamma, n_fold, paths):
    g_torsion = -v_n * n_fold * math.sin(geomcalc.deg2rad() *
                                         (n_fold * t_ijkl - gamma)) / paths
    return g_torsion
예제 #11
0
def get_g_angle(a_ijk, a_eq, k_a):
    g_angle = 2 * k_a * (geomcalc.deg2rad() * (a_ijk - a_eq))
    return g_angle
def get_e_outofplane(o_ijkl, v_n, gamma, n_fold):
    e_outofplane = v_n * (1 + math.cos(geomcalc.deg2rad() *
                                       (n_fold * o_ijkl - gamma)))
    return e_outofplane
def get_e_torsion(t_ijkl, v_n, gamma, n_fold, paths):
    e_torsion = v_n * (1 + math.cos(geomcalc.deg2rad() *
                                    (n_fold * t_ijkl - gamma))) / paths
    return e_torsion
def get_e_angle(a_ijk, a_eq, k_a):
    e_angle = k_a * (geomcalc.deg2rad() * (a_ijk - a_eq))**2
    return e_angle