mod_nonbonded Module


Uses

  • module~~mod_nonbonded~~UsesGraph module~mod_nonbonded mod_nonbonded module~mod_constants mod_constants module~mod_nonbonded->module~mod_constants module~mod_adjacency_mat mod_adjacency_mat module~mod_nonbonded->module~mod_adjacency_mat module~mod_topology mod_topology module~mod_nonbonded->module~mod_topology module~mod_memory mod_memory module~mod_nonbonded->module~mod_memory module~mod_neighbor_list mod_neighbor_list module~mod_nonbonded->module~mod_neighbor_list iso_c_binding iso_c_binding module~mod_constants->iso_c_binding module~mod_adjacency_mat->module~mod_memory module~mod_topology->module~mod_adjacency_mat module~mod_topology->module~mod_memory module~mod_memory->module~mod_constants module~mod_memory->iso_c_binding module~mod_io mod_io module~mod_memory->module~mod_io 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


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