mod_link_atom Module


Uses

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

Used by


Contents


Variables

Type Visibility Attributes Name Initial
integer(kind=ip), private, parameter :: link_atom_allocation_chunk = 20

Derived Types

type, public ::  ommp_link_atom_type

Components

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

Topology of MM part of the system

type(ommp_topology_type), public, pointer :: qmtop

Topology of QM part of the system

type(ommp_topology_type), public, allocatable :: qmmmtop

Linked QM/MM topology

integer(kind=ip), public, allocatable :: mm2full(:)

Maps from qm and mm systems to full topology indexes

integer(kind=ip), public, allocatable :: qm2full(:)

Maps from qm and mm systems to full topology indexes

integer(kind=ip), public :: nla

Number of link atoms

integer(kind=ip), public, allocatable :: links(:,:)

Indexes of link-involved atoms: links(1,:) contains the index of MM atom in mmtop links(2,:) contains the index of QM atom in qmtop links(3,:) contains the index of link atom in qmtop

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

Distance of link atom from QM atom

integer(kind=ip), public, allocatable :: vdw_screening_pairs(:,:)

Pairs of vdw interactions that should be screened

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

Screening factors for each vdw pair

integer(kind=ip), public :: vdw_n_screening

Number of screening vdw to be used

type(ommp_bonded_type), public, allocatable :: bds

Subroutines

public subroutine init_link_atom(la, qmtop, mmtop)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la
type(ommp_topology_type), intent(in), target :: qmtop
type(ommp_topology_type), intent(in), target :: mmtop

public subroutine link_atom_update_merged_topology(la)

Update merged topology in linkatom object so that its coordinates are the same of mmtop and qmtop.

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la

public subroutine add_link_atom(la, imm, iqm, ila, la_dist)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la
integer(kind=ip), intent(in) :: imm
integer(kind=ip), intent(in) :: iqm
integer(kind=ip), intent(in) :: ila
real(kind=rp), intent(in) :: la_dist

public subroutine init_eel_for_link_atom(la, imm, ila, eel, prmfile)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
integer(kind=ip), intent(in) :: imm
integer(kind=ip), intent(in) :: ila
type(ommp_electrostatics_type), intent(inout) :: eel
character(len=*), intent(in) :: prmfile

public subroutine link_atom_position(la, idx, crd)

Compute the cartesian coordinates of link atom idx at the current geometry.

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
integer(kind=ip), intent(in) :: idx
real(kind=rp), intent(out) :: crd(3)

private subroutine check_vdw_pairs(la, n)

Check if n new screening pairs could be allocated in la structure. If the allocated arrays are too small, they are reallocated on-the-fly.

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la
integer(kind=ip), intent(in) :: n

private subroutine add_screening_pair(la, iqm, imm, s)

Insert a VdW screening pair in the link atom structure

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la
integer(kind=ip), intent(in) :: iqm
integer(kind=ip), intent(in) :: imm
real(kind=rp), intent(in) :: s

public subroutine init_vdw_for_link_atom(la, iqm, imm, vdw_screening)

Initialize the quantities needed for vdw screening due to the presence of a link atom between iqm and imm

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout) :: la
integer(kind=ip), intent(in) :: iqm
integer(kind=ip), intent(in) :: imm
real(kind=rp), intent(in) :: vdw_screening(:)

public subroutine init_bonded_for_link_atom(la, prmfile)

Insert in the bonded parameter required for the link atom between iqm and imm Link atoms should never appear in bonded interactions!

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(inout), target :: la
character(len=*), intent(in) :: prmfile

public subroutine link_atom_bond_geomgrad(la, qmg, mmg, doqm, domm)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
real(kind=rp), intent(inout) :: qmg(:,:)
real(kind=rp), intent(inout) :: mmg(:,:)
logical, intent(in) :: doqm
logical, intent(in) :: domm

public subroutine link_atom_angle_geomgrad(la, qmg, mmg, doqm, domm)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
real(kind=rp), intent(inout) :: qmg(:,:)
real(kind=rp), intent(inout) :: mmg(:,:)
logical, intent(in) :: doqm
logical, intent(in) :: domm

public subroutine link_atom_torsion_geomgrad(la, qmg, mmg, doqm, domm)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
real(kind=rp), intent(inout) :: qmg(:,:)
real(kind=rp), intent(inout) :: mmg(:,:)
logical, intent(in) :: doqm
logical, intent(in) :: domm

public subroutine link_atom_project_grd(la, laforces, qmg, mmg)

Arguments

Type IntentOptional Attributes Name
type(ommp_link_atom_type), intent(in) :: la
real(kind=rp), intent(in) :: laforces(3,la%nla)
real(kind=rp), intent(inout) :: qmg(3,la%qmtop%mm_atoms)
real(kind=rp), intent(inout) :: mmg(3,la%mmtop%mm_atoms)