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.
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 |
Performs all the memory allocation and vector initialization needed to run the openMMPol library
Type | Intent | Optional | 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 |
Enable nonbonded part of pontential
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(inout) | :: | sys_obj |
The object to be initialized |
Enable nonbonded part of pontential
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(inout), | target | :: | sys_obj |
The object to be initialized |
Enable link atom
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(inout), | target | :: | sys_obj |
The object to be initialized |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(inout) | :: | sys_obj |
The system object to bi initialized |
Performs all the deallocation needed at the end of the calculation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(inout) | :: | sys_obj |
Builds the adjacency matrix of polarization groups starting from atomic adjacency matrix and list of polarization groups indices.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_electrostatics_type), | intent(in) | :: | eel | |||
type(yale_sparse), | intent(out) | :: | adj |
The group adjacency matrix to be saved. |
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.
Type | Intent | Optional | 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 |
Prints a complete summary of all the quantities stored in the MMPol module
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(in) | :: | sys_obj | |||
character(len=*), | intent(in), | optional | :: | of_name |
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.
Type | Intent | Optional | 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 |