mod_mmpol Module

Main module for the control of openMMPol library. It contains all the scalar and vector (allocatable) quantities needed to build up the atomistic polarizable embedding model and perform the calculation required from the quantum chemical software.


Uses

  • module~~mod_mmpol~~UsesGraph module~mod_mmpol mod_mmpol module~mod_link_atom mod_link_atom module~mod_mmpol->module~mod_link_atom module~mod_adjacency_mat mod_adjacency_mat module~mod_mmpol->module~mod_adjacency_mat module~mod_io mod_io module~mod_mmpol->module~mod_io module~mod_constants mod_constants module~mod_mmpol->module~mod_constants module~mod_bonded mod_bonded module~mod_mmpol->module~mod_bonded module~mod_topology mod_topology module~mod_mmpol->module~mod_topology module~mod_memory mod_memory module~mod_mmpol->module~mod_memory module~mod_electrostatics mod_electrostatics module~mod_mmpol->module~mod_electrostatics module~mod_nonbonded mod_nonbonded module~mod_mmpol->module~mod_nonbonded module~mod_link_atom->module~mod_io module~mod_link_atom->module~mod_constants module~mod_link_atom->module~mod_bonded module~mod_link_atom->module~mod_topology module~mod_link_atom->module~mod_memory module~mod_link_atom->module~mod_nonbonded module~mod_utils mod_utils module~mod_link_atom->module~mod_utils module~mod_adjacency_mat->module~mod_memory module~mod_io->module~mod_constants iso_c_binding iso_c_binding module~mod_constants->iso_c_binding module~mod_bonded->module~mod_io module~mod_bonded->module~mod_topology module~mod_bonded->module~mod_memory module~mod_topology->module~mod_adjacency_mat module~mod_topology->module~mod_memory module~mod_memory->module~mod_io module~mod_memory->module~mod_constants module~mod_memory->iso_c_binding module~mod_electrostatics->module~mod_adjacency_mat module~mod_electrostatics->module~mod_io module~mod_electrostatics->module~mod_constants module~mod_electrostatics->module~mod_topology module~mod_electrostatics->module~mod_memory module~fmmlib_interface fmmlib_interface module~mod_electrostatics->module~fmmlib_interface module~mod_profiling mod_profiling module~mod_electrostatics->module~mod_profiling module~mod_nonbonded->module~mod_adjacency_mat module~mod_nonbonded->module~mod_constants module~mod_nonbonded->module~mod_topology module~mod_nonbonded->module~mod_memory module~mod_neighbor_list mod_neighbor_list module~mod_nonbonded->module~mod_neighbor_list module~mod_utils->module~mod_constants module~mod_utils->module~mod_memory module~fmmlib_interface->module~mod_constants module~mod_tree mod_tree module~fmmlib_interface->module~mod_tree module~mod_ribtree mod_ribtree module~fmmlib_interface->module~mod_ribtree module~mod_harmonics mod_harmonics module~fmmlib_interface->module~mod_harmonics module~mod_fmm_utils mod_fmm_utils module~fmmlib_interface->module~mod_fmm_utils module~mod_fmm mod_fmm module~fmmlib_interface->module~mod_fmm module~mod_octatree mod_octatree module~fmmlib_interface->module~mod_octatree module~mod_profiling->module~mod_io module~mod_profiling->module~mod_constants module~mod_profiling->module~mod_memory module~mod_neighbor_list->module~mod_adjacency_mat module~mod_neighbor_list->module~mod_io module~mod_neighbor_list->module~mod_memory module~mod_tree->module~mod_adjacency_mat module~mod_tree->module~mod_constants module~mod_tree->module~mod_fmm_utils module~mod_ribtree->module~mod_constants module~mod_ribtree->module~mod_profiling module~mod_ribtree->module~mod_tree module~mod_ribtree->module~mod_fmm_utils module~mod_harmonics->module~mod_constants module~mod_harmonics->module~mod_fmm_utils module~mod_fmm_utils->module~mod_constants module~mod_fmm->module~mod_constants module~mod_fmm->module~mod_tree module~mod_fmm->module~mod_harmonics module~mod_fmm->module~mod_fmm_utils module~mod_octatree->module~mod_constants module~mod_octatree->module~mod_profiling module~mod_octatree->module~mod_tree module~mod_octatree->module~mod_fmm_utils

Used by


Contents


Derived Types

type, public ::  ommp_system

Components

Type Visibility Attributes Name Initial
logical, public :: mmpol_is_init = .false.

Initialization flag

integer(kind=ip), public :: ff_type

Force field type selection flag (0 for AMBER, 1 for AMOEBA)

logical(kind=lp), public :: amoeba

AMOEBA FF = True; WANG-AMBER = False

type(ommp_topology_type), public, allocatable :: top

Data structure containing the topology of the system

type(ommp_electrostatics_type), public, allocatable :: eel

Data structure containing all the information needed to run the elctrostatics related calculations

logical(kind=lp), public :: use_bonded = .false.
type(ommp_bonded_type), public, allocatable :: bds

Data structure containing all the information needed to run the bonded terms calculations

logical(kind=lp), public :: use_nonbonded = .false.
type(ommp_nonbonded_type), public, allocatable :: vdw

Data structure containing all the information needed to run the non-bonded terms calculations

logical(kind=lp), public :: use_linkatoms = .false.
type(ommp_link_atom_type), public, allocatable :: la

Data structure containing all the information needed to handle link atoms with a certain QM part described by a QM Helper object


Subroutines

public subroutine mmpol_init(sys_obj, l_ff_type, l_mm_atoms, l_pol_atoms)

Performs all the memory allocation and vector initialization needed to run the openMMPol library

Read more…

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout) :: sys_obj

The object to be initialized

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

Force field type used in initialization

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

Number of MM atoms used in initialization

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

Number of polarizable atoms used in initialization

public subroutine mmpol_init_nonbonded(sys_obj)

Enable nonbonded part of pontential

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout) :: sys_obj

The object to be initialized

public subroutine mmpol_init_bonded(sys_obj)

Enable nonbonded part of pontential

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout), target :: sys_obj

The object to be initialized

public subroutine mmpol_init_link_atom(sys_obj)

Enable link atom

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout), target :: sys_obj

The object to be initialized

public subroutine mmpol_prepare(sys_obj)

Compute some derived quantities from the input that are used during the calculation. The upstream code have to provide cmm, q, pol, adjacency matrix and in the case of AMOEBA also multipoles rotation information, and polarization group information.
This routine
* compute connectivity lists from connected atoms
* invert polar_mm list creating mm_polar
* populate cpol list of coordinates
* compute factors for thole damping
* scales by 1/3 AMOEBA quadrupoles (?)
* Build list for polarization groups, compute groups connectivity
* performs multipoles rotation

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout) :: sys_obj

The system object to bi initialized

public subroutine mmpol_terminate(sys_obj)

Performs all the deallocation needed at the end of the calculation

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout) :: sys_obj

public subroutine build_pg_adjacency_matrix(eel, adj)

Builds the adjacency matrix of polarization groups starting from atomic adjacency matrix and list of polarization groups indices.

Arguments

Type IntentOptional Attributes Name
type(ommp_electrostatics_type), intent(in) :: eel
type(yale_sparse), intent(out) :: adj

The group adjacency matrix to be saved.

public subroutine update_coordinates(sys_obj, new_c)

Interface to change the coordinates of the system (eg. during a MD or a geometry optimization). This function clears all the relevant, flags and update the needed quantities. All those operations are needed for a correct functionality of the program therefore coordinates should never be updated without passing from this interface.

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(inout), target :: sys_obj

System data structure

real(kind=rp), intent(in), dimension(3,sys_obj%top%mm_atoms) :: new_c

New coordinates to be updated

public subroutine mmpol_ommp_print_summary(sys_obj, of_name)

Prints a complete summary of all the quantities stored in the MMPol module

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(in) :: sys_obj
character(len=*), intent(in), optional :: of_name

public subroutine mmpol_save_as_mmp(sys_obj, of_name, r_version)

Save the loaded system in mmpol format. Only the electrostatic part is saved, everything else is just ignored. Version 2 and 3 of the mmp format are supported, 3 is used as default.

Arguments

Type IntentOptional Attributes Name
type(ommp_system), intent(in), target :: sys_obj

System data structure to be saved

character(len=*), intent(in) :: of_name

Name of the output file

integer(kind=ip), intent(in), optional :: r_version

Revision version requested for .mmp