This is an utility module, that is not actually used my openMMpol itself, but can be initialized and used by a QM program interfaced with openMMPol to simplify certain steps of the interface using already well tested code.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(ommp_topology_type), | public, | allocatable | :: | qm_top |
Topology of the QM system |
||
logical(kind=lp), | public | :: | reconnect | = | .false. |
Flag to decide if the topology should be rebuily at each change of geometry. |
|
real(kind=rp), | public, | allocatable | :: | qqm(:) |
Charges of QM nuclei |
||
logical(kind=lp), | public | :: | E_n2p_done | = | .false. |
Flag for E_n2p |
|
real(kind=rp), | public, | allocatable | :: | E_n2p(:,:) |
Electric field of nuclei at polarizable sites |
||
logical(kind=lp), | public | :: | G_n2p_done | = | .false. |
Flag for G_n2p |
|
real(kind=rp), | public, | allocatable | :: | G_n2p(:,:) |
Electric field gradients of nuclei at polarizable sites |
||
logical(kind=lp), | public | :: | E_n2m_done | = | .false. |
Flag for E_n2m |
|
real(kind=rp), | public, | allocatable | :: | E_n2m(:,:) |
Electric field of nuclei at static sites |
||
logical(kind=lp), | public | :: | G_n2m_done | = | .false. |
Flag for G_n2m |
|
real(kind=rp), | public, | allocatable | :: | G_n2m(:,:) |
Electric field gradients of nuclei at static sites |
||
logical(kind=lp), | public | :: | H_n2m_done | = | .false. |
Flag for H_n2m |
|
real(kind=rp), | public, | allocatable | :: | H_n2m(:,:) |
Electric field Hessian of nuclei at static sites |
||
logical(kind=lp), | public | :: | V_m2n_done | = | .false. |
Flag for V_m2n |
|
real(kind=rp), | public, | allocatable | :: | V_m2n(:) |
Electrostatic potential of MMPol atoms (static) at QM nuclei |
||
logical(kind=lp), | public | :: | E_m2n_done | = | .false. |
Flag for E_m2n |
|
real(kind=rp), | public, | allocatable | :: | E_m2n(:,:) |
Electrostatic potential of MMPol atoms (static) at QM nuclei |
||
logical(kind=lp), | public | :: | V_p2n_done | = | .false. |
Flag for V_p2n |
|
real(kind=rp), | public, | allocatable | :: | V_p2n(:) |
Electrostatic potential of MMPol atoms (polarizable) at QM nuclei |
||
logical(kind=lp), | public | :: | V_pp2n_done | = | .false. |
Flag for V_pp2n |
|
logical(kind=lp), | public | :: | V_pp2n_req | = | .false. |
Flag to enable the computation of V_pp2n, this is only needed in some wired cases like when using qm_helper as driver for DFTB |
|
real(kind=rp), | public, | allocatable | :: | V_pp2n(:) |
Electrostatic potential of MMPol atoms (polarizable, AMOEBA P dipoles) at QM nuclei |
||
logical(kind=lp), | public | :: | E_p2n_done | = | .false. |
Flag for E_p2n |
|
real(kind=rp), | public, | allocatable | :: | E_p2n(:,:) |
Electrostatic potential of MMPol atoms (polarizable) at QM nuclei |
||
logical(kind=lp), | public | :: | use_nonbonded | = | .false. |
Flag for using QM nonbonded terms |
|
type(ommp_nonbonded_type), | public, | allocatable | :: | qm_vdw |
Structure to store VdW parameter for QM atoms |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm |
ommp_qm_helper object to be initialized |
||
integer(kind=ip), | intent(in) | :: | qmat |
Number of QM atoms |
||
real(kind=rp), | intent(in) | :: | cqm(:,:) |
Coordinates of QM atoms |
||
real(kind=rp), | intent(in) | :: | qqm(:) |
Nuclear charges of QM atoms |
||
integer(kind=ip), | intent(in) | :: | zqm(:) |
Atomic number of QM atoms |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm | |||
integer(kind=ip), | intent(in) | :: | attype(qm%qm_top%mm_atoms) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm |
ommp_qm_helper object to be initialized |
||
real(kind=rp), | intent(in) | :: | cnew(3,qm%qm_top%mm_atoms) |
Coordinates of QM atoms |
||
logical(kind=lp), | intent(in), | optional | :: | reconnect_in |
Flag to rebuil connectivity |
|
integer(kind=ip), | intent(in), | optional | :: | linkatoms(:) |
Atoms that should be considered link atoms |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm | |||
real(kind=rp), | intent(in) | :: | eps(qm%qm_top%mm_atoms) | |||
real(kind=rp), | intent(in) | :: | rad(qm%qm_top%mm_atoms) | |||
real(kind=rp), | intent(in) | :: | fac(qm%qm_top%mm_atoms) | |||
character(len=*) | :: | vdw_type | ||||
character(len=*) | :: | radius_rule | ||||
character(len=*) | :: | radius_size | ||||
character(len=*) | :: | radius_type | ||||
character(len=*) | :: | epsrule |
Assign vdw parameters of the QM part from attype and prm file
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm | |||
character(len=*), | intent(in) | :: | prmfile |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(in) | :: | qm | |||
type(ommp_system), | intent(inout) | :: | mm | |||
real(kind=rp), | intent(inout) | :: | V |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(in) | :: | qm | |||
type(ommp_system), | intent(inout) | :: | mm | |||
real(kind=rp), | intent(inout) | :: | qmg(3,qm%qm_top%mm_atoms) | |||
real(kind=rp), | intent(inout) | :: | mmg(3,mm%top%mm_atoms) |
Computes the missing gradients for QM/MM linkatoms that is bonded terms on QM atoms, LA forces projection on QM and MM atoms. To obtain the correct forces in output, qmg should already contain the QM forces, so that LA forces could be projected on QM and MM force vectors
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(in) | :: | qm | |||
type(ommp_system), | intent(inout) | :: | mm | |||
real(kind=rp), | intent(inout) | :: | qmg(3,qm%qm_top%mm_atoms) | |||
real(kind=rp), | intent(inout) | :: | mmg(3,mm%top%mm_atoms) | |||
real(kind=rp), | intent(in) | :: | original_qmg(3,qm%qm_top%mm_atoms) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_qm_helper), | intent(inout) | :: | qm |
Computes the electrostatic quantities (that means nuclear-MM
interaction terms) needed to perform an energy calculation.
Computes:
(1) EF of nuclei at polarizable sites
(2) V of the whole MM system at QM sites
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(in) | :: | system | |||
type(ommp_qm_helper), | intent(inout) | :: | qm |
Computes the electrostatic quantities (that means nuclear-MM
interaction terms) needed to perform a gradient calculation.
Computes:
(1) GEF on nuclei at polarizable sites
(2) EF, GEF, HEF of nuclei at static sites
(3) EF of whole MM system at QM sites
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ommp_system), | intent(in) | :: | system | |||
type(ommp_qm_helper), | intent(inout) | :: | qm |