mod_nonbonded Module


Uses

  • module~~mod_nonbonded~~UsesGraph module~mod_nonbonded mod_nonbonded module~mod_topology mod_topology module~mod_nonbonded->module~mod_topology module~mod_adjacency_mat mod_adjacency_mat module~mod_nonbonded->module~mod_adjacency_mat module~mod_memory mod_memory module~mod_nonbonded->module~mod_memory module~mod_constants mod_constants module~mod_nonbonded->module~mod_constants module~mod_neighbor_list mod_neighbor_list module~mod_nonbonded->module~mod_neighbor_list module~mod_topology->module~mod_adjacency_mat module~mod_topology->module~mod_memory module~mod_adjacency_mat->module~mod_memory module~mod_memory->module~mod_constants module~mod_io mod_io module~mod_memory->module~mod_io iso_c_binding iso_c_binding module~mod_memory->iso_c_binding module~mod_constants->iso_c_binding module~mod_neighbor_list->module~mod_adjacency_mat module~mod_neighbor_list->module~mod_memory module~mod_neighbor_list->module~mod_io module~mod_io->module~mod_constants

Used by

  • module~~mod_nonbonded~~UsedByGraph module~mod_nonbonded mod_nonbonded proc~qm_helper_vdw_geomgrad qm_helper_vdw_geomgrad proc~qm_helper_vdw_geomgrad->module~mod_nonbonded module~mod_mmpol mod_mmpol proc~qm_helper_vdw_geomgrad->module~mod_mmpol module~mod_link_atom mod_link_atom proc~qm_helper_vdw_geomgrad->module~mod_link_atom proc~ommp_get_vdw_energy ommp_get_vdw_energy proc~ommp_get_vdw_energy->module~mod_nonbonded proc~ommp_vdw_geomgrad ommp_vdw_geomgrad proc~ommp_vdw_geomgrad->module~mod_nonbonded proc~ommp_create_link_atom ommp_create_link_atom proc~ommp_create_link_atom->module~mod_nonbonded proc~ommp_create_link_atom->module~mod_mmpol proc~ommp_create_link_atom->module~mod_link_atom module~mod_qm_helper mod_qm_helper proc~ommp_create_link_atom->module~mod_qm_helper proc~ommp_full_geomgrad ommp_full_geomgrad proc~ommp_full_geomgrad->module~mod_nonbonded module~mod_geomgrad mod_geomgrad proc~ommp_full_geomgrad->module~mod_geomgrad proc~mmpol_terminate mmpol_terminate proc~mmpol_terminate->module~mod_nonbonded proc~ommp_set_vdw_cutoff ommp_set_vdw_cutoff proc~ommp_set_vdw_cutoff->module~mod_nonbonded proc~qm_helper_init_vdw qm_helper_init_vdw proc~qm_helper_init_vdw->module~mod_nonbonded proc~assign_vdw assign_vdw proc~assign_vdw->module~mod_nonbonded module~mod_mmpol->module~mod_nonbonded module~mod_mmpol->module~mod_link_atom module~mod_link_atom->module~mod_nonbonded proc~qm_helper_vdw_energy qm_helper_vdw_energy proc~qm_helper_vdw_energy->module~mod_nonbonded proc~qm_helper_vdw_energy->module~mod_mmpol proc~qm_helper_vdw_energy->module~mod_link_atom proc~qm_helper_terminate qm_helper_terminate proc~qm_helper_terminate->module~mod_nonbonded module~mod_qm_helper->module~mod_nonbonded module~mod_qm_helper->module~mod_mmpol proc~c_ommp_qm_helper_get_e_p2n C_ommp_qm_helper_get_E_p2n proc~c_ommp_qm_helper_get_e_p2n->module~mod_qm_helper proc~ommp_get_torsion_energy ommp_get_torsion_energy proc~ommp_get_torsion_energy->module~mod_link_atom proc~c_ommp_qm_helper_get_g_n2p C_ommp_qm_helper_get_G_n2p proc~c_ommp_qm_helper_get_g_n2p->module~mod_qm_helper proc~ommp_init_qm_helper ommp_init_qm_helper proc~ommp_init_qm_helper->module~mod_qm_helper proc~c_ommp_qm_helper_get_e_n2m C_ommp_qm_helper_get_E_n2m proc~c_ommp_qm_helper_get_e_n2m->module~mod_qm_helper proc~ommp_torsion_geomgrad ommp_torsion_geomgrad proc~ommp_torsion_geomgrad->module~mod_link_atom proc~ommp_full_bnd_geomgrad ommp_full_bnd_geomgrad proc~ommp_full_bnd_geomgrad->module~mod_link_atom proc~ommp_update_link_atoms_position ommp_update_link_atoms_position proc~ommp_update_link_atoms_position->module~mod_link_atom proc~ommp_update_link_atoms_position->module~mod_qm_helper proc~ommp_angle_geomgrad ommp_angle_geomgrad proc~ommp_angle_geomgrad->module~mod_link_atom proc~ommp_get_bond_energy ommp_get_bond_energy proc~ommp_get_bond_energy->module~mod_link_atom module~ommp_interface ommp_interface module~ommp_interface->module~mod_mmpol module~ommp_interface->module~mod_qm_helper proc~ommp_system_from_qm_helper ommp_system_from_qm_helper proc~ommp_system_from_qm_helper->module~mod_mmpol module~mod_inputloader mod_inputloader module~mod_inputloader->module~mod_mmpol proc~mmpol_init_from_mmp mmpol_init_from_mmp proc~mmpol_init_from_mmp->module~mod_mmpol proc~ommp_terminate ommp_terminate proc~ommp_terminate->module~mod_mmpol proc~c_ommp_update_coordinates C_ommp_update_coordinates proc~c_ommp_update_coordinates->module~mod_mmpol proc~c_ommp_qm_helper_use_frozen C_ommp_qm_helper_use_frozen proc~c_ommp_qm_helper_use_frozen->module~mod_qm_helper proc~c_ommp_terminate_qm_helper C_ommp_terminate_qm_helper proc~c_ommp_terminate_qm_helper->module~mod_qm_helper proc~c_ommp_qm_helper_get_g_n2m C_ommp_qm_helper_get_G_n2m proc~c_ommp_qm_helper_get_g_n2m->module~mod_qm_helper proc~c_ommp_qm_helper_get_v_m2n C_ommp_qm_helper_get_V_m2n proc~c_ommp_qm_helper_get_v_m2n->module~mod_qm_helper proc~c_ommp_qm_helper_get_nmm C_ommp_qm_helper_get_nmm proc~c_ommp_qm_helper_get_nmm->module~mod_qm_helper proc~c_ommp_qm_helper_use_nonbonded C_ommp_qm_helper_use_nonbonded proc~c_ommp_qm_helper_use_nonbonded->module~mod_qm_helper proc~c_ommp_qm_helper_get_npol C_ommp_qm_helper_get_npol proc~c_ommp_qm_helper_get_npol->module~mod_qm_helper proc~numerical_geomgrad numerical_geomgrad proc~numerical_geomgrad->module~mod_mmpol proc~ommp_qm_helper_vdw_energy ommp_qm_helper_vdw_energy proc~ommp_qm_helper_vdw_energy->module~mod_qm_helper proc~c_ommp_qm_helper_get_e_n2p C_ommp_qm_helper_get_E_n2p proc~c_ommp_qm_helper_get_e_n2p->module~mod_qm_helper proc~ommp_get_angle_energy ommp_get_angle_energy proc~ommp_get_angle_energy->module~mod_link_atom proc~ommp_bond_geomgrad ommp_bond_geomgrad proc~ommp_bond_geomgrad->module~mod_link_atom module~mod_polarization mod_polarization module~mod_polarization->module~mod_mmpol proc~qm_helper_link_atom_geomgrad qm_helper_link_atom_geomgrad proc~qm_helper_link_atom_geomgrad->module~mod_mmpol proc~qm_helper_link_atom_geomgrad->module~mod_link_atom module~mod_geomgrad->module~mod_mmpol proc~mmpol_init_from_xyz mmpol_init_from_xyz proc~mmpol_init_from_xyz->module~mod_mmpol proc~update_coordinates update_coordinates proc~update_coordinates->module~mod_link_atom proc~ommp_get_full_bnd_energy ommp_get_full_bnd_energy proc~ommp_get_full_bnd_energy->module~mod_link_atom proc~c_ommp_qm_helper_get_cqm C_ommp_qm_helper_get_cqm proc~c_ommp_qm_helper_get_cqm->module~mod_qm_helper proc~c_ommp_qm_helper_get_e_m2n C_ommp_qm_helper_get_E_m2n proc~c_ommp_qm_helper_get_e_m2n->module~mod_qm_helper proc~c_ommp_qm_helper_get_frozen C_ommp_qm_helper_get_frozen proc~c_ommp_qm_helper_get_frozen->module~mod_qm_helper proc~ommp_qm_helper_vdw_geomgrad ommp_qm_helper_vdw_geomgrad proc~ommp_qm_helper_vdw_geomgrad->module~mod_qm_helper proc~c_ommp_qm_helper_get_h_n2m C_ommp_qm_helper_get_H_n2m proc~c_ommp_qm_helper_get_h_n2m->module~mod_qm_helper proc~c_ommp_qm_helper_get_qm_atoms C_ommp_qm_helper_get_qm_atoms proc~c_ommp_qm_helper_get_qm_atoms->module~mod_qm_helper proc~ommp_terminate_qm_helper ommp_terminate_qm_helper proc~ommp_terminate_qm_helper->module~mod_qm_helper proc~ommp_qm_helper_update_coord ommp_qm_helper_update_coord proc~ommp_qm_helper_update_coord->module~mod_qm_helper proc~c_ommp_qm_helper_get_v_p2n C_ommp_qm_helper_get_V_p2n proc~c_ommp_qm_helper_get_v_p2n->module~mod_qm_helper proc~ommp_get_link_atom_coordinates ommp_get_link_atom_coordinates proc~ommp_get_link_atom_coordinates->module~mod_link_atom proc~ommp_qm_helper_link_atom_geomgrad ommp_qm_helper_link_atom_geomgrad proc~ommp_qm_helper_link_atom_geomgrad->module~mod_qm_helper proc~ommp_set_external_field ommp_set_external_field proc~ommp_set_external_field->module~mod_polarization proc~ommp_fixedelec_geomgrad ommp_fixedelec_geomgrad proc~ommp_fixedelec_geomgrad->module~mod_geomgrad proc~c_ommp_full_geomgrad C_ommp_full_geomgrad proc~c_ommp_full_geomgrad->module~ommp_interface module~test_geomgrad~2 test_geomgrad module~test_geomgrad~2->module~ommp_interface module~test_geomgrad test_geomgrad module~test_geomgrad->module~ommp_interface module~mod_ommp_c_interface mod_ommp_C_interface module~mod_ommp_c_interface->module~ommp_interface program~test_si_geomgrad_num test_SI_geomgrad_num program~test_si_geomgrad_num->module~ommp_interface program~test_si_geomgrad_num->module~test_geomgrad program~test_si_init test_SI_init program~test_si_init->module~ommp_interface program~test_si_potential test_SI_potential program~test_si_potential->module~ommp_interface program~test_si_geomgrad test_SI_geomgrad program~test_si_geomgrad->module~ommp_interface program~test_si_geomgrad->module~test_geomgrad proc~ommp_init_mmp ommp_init_mmp proc~ommp_init_mmp->module~mod_inputloader proc~ommp_init_xyz ommp_init_xyz proc~ommp_init_xyz->module~mod_inputloader proc~polelec_geomgrad polelec_geomgrad proc~polelec_geomgrad->module~mod_polarization proc~ommp_polelec_geomgrad ommp_polelec_geomgrad proc~ommp_polelec_geomgrad->module~mod_geomgrad proc~ommp_get_polelec_energy ommp_get_polelec_energy proc~ommp_get_polelec_energy->module~mod_polarization

Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=ip), private, parameter :: pair_allocation_chunk = 16

Abstract Interfaces

abstract interface

  • private subroutine vdw_term(Rij, Rij0, Eij, V)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=rp), intent(in) :: Rij
    real(kind=rp), intent(in) :: Rij0
    real(kind=rp), intent(in) :: Eij
    real(kind=rp), intent(inout) :: V

abstract interface

  • private subroutine vdw_gterm(Rij, Rij0, Eij, Rijgrad)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=rp), intent(in) :: Rij
    real(kind=rp), intent(in) :: Rij0
    real(kind=rp), intent(in) :: Eij
    real(kind=rp), intent(out) :: Rijgrad

Derived Types

type, public ::  ommp_nonbonded_type

Derived type for storing the information relative to the calculation of non-bonding interactions

Components

Type Visibility Attributes Name Initial
type(ommp_topology_type), public, pointer :: top

Data structure for topology

logical(kind=lp), public :: use_nl

Flag for using neighbors list

type(ommp_neigh_list), public :: nl

Neighbor list struture

real(kind=rp), public, allocatable, dimension(:) :: vdw_r

VdW radii for the atoms of the system

real(kind=rp), public, allocatable, dimension(:) :: vdw_e

Vdw energies for the atoms of fthe system

real(kind=rp), public, allocatable, dimension(:) :: vdw_f

Scale factor for displacing the interaction center

integer(kind=ip), public :: npair = 0

Number of nonbonded pair parameters

logical(kind=lp), public, allocatable :: vdw_pair_mask_a(:,:)

Mask to apply a pair parameter to a pair of atoms dimension is Natoms x Nparams

logical(kind=lp), public, allocatable :: vdw_pair_mask_b(:,:)

Mask to apply a pair parameter to a pair of atoms dimension is Natoms x Nparams

real(kind=rp), public, allocatable :: vdw_pair_r(:)

Radii for the VdW atom pairs

real(kind=rp), public, allocatable :: vdw_pair_e(:)

VdW energies for atom pairs

real(kind=rp), public, dimension(4) :: vdw_screening = [0.0, 0.0, 1.0, 1.0]

Screening factors for 1,2 1,3 and 1,4 neighbours. Default vaules from tinker manual.

real(kind=rp), public :: radf = 1.0

Scal factor for atomic radii/diameters (1.0 is used for diameters, 2.0 for radii)

integer(kind=ip), public :: radrule

Flag for the radius rule to be used

integer(kind=ip), public :: radtype

Flag for the radius type

integer(kind=ip), public :: vdwtype

Flag for the vdW type

integer(kind=ip), public :: epsrule

Flag for eps rule !!TODO


Functions

private pure function get_Rij0(vdw, i, j) result(Rij0)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw

Nonbonded data structure

integer(kind=ip), intent(in) :: i

Indices of interacting atoms

integer(kind=ip), intent(in) :: j

Indices of interacting atoms

Return Value real(kind=rp)

private pure function get_eij(vdw, i, j) result(eij)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in) :: vdw

Nonbonded data structure

integer(kind=ip), intent(in) :: i

Indices of interacting atoms

integer(kind=ip), intent(in) :: j

Indices of interacting atoms

Return Value real(kind=rp)

private pure function get_Rij0_inter(vdw1, vdw2, i, j) result(Rij0)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in), target :: vdw2

Nonbonded data structure

integer(kind=ip), intent(in) :: i

Indices of interacting atoms

integer(kind=ip), intent(in) :: j

Indices of interacting atoms

Return Value real(kind=rp)

private pure function get_eij_inter(vdw1, vdw2, i, j) result(eij)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in) :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in) :: vdw2

Nonbonded data structure

integer(kind=ip), intent(in) :: i

Indices of interacting atoms

integer(kind=ip), intent(in) :: j

Indices of interacting atoms

Return Value real(kind=rp)


Subroutines

public subroutine vdw_init(vdw, top, vdw_type, radius_rule, radius_size, radius_type, epsrule, cutoff)

Initialize the non-bonded object allocating the parameters vectors

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(inout) :: vdw
type(ommp_topology_type), intent(in), target :: top
character(len=*) :: vdw_type
character(len=*) :: radius_rule
character(len=*) :: radius_size
character(len=*) :: radius_type
character(len=*) :: epsrule
real(kind=rp) :: cutoff

public subroutine vdw_set_cutoff(vdw, cutoff, subdivision)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(inout) :: vdw
real(kind=rp), intent(in) :: cutoff
integer(kind=ip), intent(in) :: subdivision

public subroutine vdw_terminate(vdw)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(inout) :: vdw

public subroutine vdw_remove_potential(vdw, i)

Remove the VdW interaction from the specified atom the atom will not interact anymore with any other atom

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(inout) :: vdw
integer(kind=ip), intent(in) :: i

public subroutine vdw_set_pair(vdw, mask_a, mask_b, r, e)

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(inout) :: vdw

Nonbonded data structure

logical(kind=lp), intent(in) :: mask_a(vdw%top%mm_atoms)
logical(kind=lp), intent(in) :: mask_b(vdw%top%mm_atoms)
real(kind=rp), intent(in) :: r

Equilibrium distance for the pair

real(kind=rp), intent(in) :: e

Depth of the potential

private subroutine vdw_lennard_jones(Rij, Rij0, Eij, V)

Arguments

Type IntentOptional Attributes Name
real(kind=rp), intent(in) :: Rij
real(kind=rp), intent(in) :: Rij0
real(kind=rp), intent(in) :: Eij
real(kind=rp), intent(inout) :: V

private subroutine vdw_lennard_jones_Rijgrad(Rij, Rij0, Eij, Rijgrad)

Arguments

Type IntentOptional Attributes Name
real(kind=rp), intent(in) :: Rij
real(kind=rp), intent(in) :: Rij0
real(kind=rp), intent(in) :: Eij
real(kind=rp), intent(out) :: Rijgrad

private subroutine vdw_buffered_7_14(Rij, Rij0, Eij, V)

Compute the dispersion-repulsion energy using the buffered 7-14 potential. Details can be found in ref: 10.1021/jp027815

Arguments

Type IntentOptional Attributes Name
real(kind=rp), intent(in) :: Rij
real(kind=rp), intent(in) :: Rij0
real(kind=rp), intent(in) :: Eij
real(kind=rp), intent(inout) :: V

private subroutine vdw_buffered_7_14_Rijgrad(Rij, Rij0, Eij, Rijgrad)

Compute the gradient of vdw energy (using the buffered 7-14 potential ref: 10.1021/jp027815) with respect to the distance between the two atoms (Rij).

Arguments

Type IntentOptional Attributes Name
real(kind=rp), intent(in) :: Rij
real(kind=rp), intent(in) :: Rij0
real(kind=rp), intent(in) :: Eij
real(kind=rp), intent(out) :: Rijgrad

public subroutine vdw_potential(vdw, V)

Compute the dispersion repulsion energy for the whole system using a double loop algorithm

Read more…

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw

Nonbonded data structure

real(kind=rp), intent(inout) :: V

Potential, result will be added

public subroutine vdw_geomgrad(vdw, grad)

Compute the dispersion repulsion geometric gradients for the whole system using a double loop algorithm

Read more…

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw

Nonbonded data structure

real(kind=rp), intent(inout) :: grad(3,vdw%top%mm_atoms)

Gradients, result will be added

public subroutine vdw_potential_inter(vdw1, vdw2, V)

Compute the dispersion repulsion energy for the whole system using a double loop algorithm

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in), target :: vdw2

Nonbonded data structure

real(kind=rp), intent(inout) :: V

Potential, result will be added

public subroutine vdw_geomgrad_inter(vdw1, vdw2, grad1, grad2)

Compute the dispersion repulsion energy for the whole system using a double loop algorithm

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in), target :: vdw2

Nonbonded data structure

real(kind=rp), intent(inout) :: grad1(3,vdw1%top%mm_atoms)

Potential, result will be added

real(kind=rp), intent(inout) :: grad2(3,vdw2%top%mm_atoms)

Potential, result will be added

public subroutine vdw_potential_inter_restricted(vdw1, vdw2, pairs, s, n, V)

Compute the dispersion repulsion energy between two systems vdw1 and vdw2 accounting only for the pairs pairs(1,i)--pairs(2,i) and scaling each interaction by s(i).

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in), target :: vdw2

Nonbonded data structure

integer(kind=ip), intent(in) :: pairs(2,n)

pairs of atoms for which the interaction should be computed

real(kind=rp), intent(in) :: s(:)

scaling factors for each interaction

integer(kind=ip), intent(in) :: n

number of pairs for which the interaction should be computed

real(kind=rp), intent(inout) :: V

Potential, result will be added

public subroutine vdw_geomgrad_inter_restricted(vdw1, vdw2, pairs, s, n, grad1, grad2)

Compute the dispersion repulsion energy for the whole system using a double loop algorithm

Arguments

Type IntentOptional Attributes Name
type(ommp_nonbonded_type), intent(in), target :: vdw1

Nonbonded data structure

type(ommp_nonbonded_type), intent(in), target :: vdw2

Nonbonded data structure

integer(kind=ip), intent(in) :: pairs(2,n)

pairs of atoms for which the interaction should be computed

real(kind=rp), intent(in) :: s(:)

scaling factors for each interaction

integer(kind=ip), intent(in) :: n

number of pairs for which the interaction should be computed

real(kind=rp), intent(inout) :: grad1(3,vdw1%top%mm_atoms)

Potential, result will be added

real(kind=rp), intent(inout) :: grad2(3,vdw2%top%mm_atoms)

Potential, result will be added