Source code for cgexplore._internal.forcefields.utilities

"""Utilities module."""

from openmm import openmm


[docs] def custom_excluded_volume_force() -> openmm.CustomNonbondedForce: """Define Custom Excluded Volume force.""" energy_expression = "epsilon*((sigma)/(r))^12;" energy_expression += "epsilon = sqrt(epsilon1*epsilon2);" energy_expression += "sigma = 0.5*(sigma1+sigma2);" custom_force = openmm.CustomNonbondedForce(energy_expression) custom_force.addPerParticleParameter("sigma") custom_force.addPerParticleParameter("epsilon") return custom_force
[docs] def custom_lennard_jones_force() -> openmm.CustomNonbondedForce: """Define Custom Lennard Jones force.""" energy_expression = "epsilon*(((sigma)/(r))^12 - ((sigma)/(r))^6);" energy_expression += "epsilon = sqrt(epsilon1*epsilon2);" energy_expression += "sigma = 0.5*(sigma1+sigma2);" custom_force = openmm.CustomNonbondedForce(energy_expression) custom_force.addPerParticleParameter("sigma") custom_force.addPerParticleParameter("epsilon") return custom_force
[docs] def cosine_periodic_angle_force() -> openmm.CustomAngleForce: """Define Custom Angle force.""" energy_expression = "F*C*(1-A*cos(n * theta));" energy_expression += "A = b*(min_n);" energy_expression += "C = (n^2 * k)/2;" energy_expression += "F = (2/(n ^ 2));" custom_force = openmm.CustomAngleForce(energy_expression) custom_force.addPerAngleParameter("k") custom_force.addPerAngleParameter("n") custom_force.addPerAngleParameter("b") custom_force.addPerAngleParameter("min_n") return custom_force