ommp_bonded_type Derived Type

type, public :: ommp_bonded_type


Inherits

type~~ommp_bonded_type~~InheritsGraph type~ommp_bonded_type ommp_bonded_type type~ommp_topology_type ommp_topology_type type~ommp_bonded_type->type~ommp_topology_type top type~yale_sparse yale_sparse type~ommp_topology_type->type~yale_sparse conn

Inherited by

type~~ommp_bonded_type~~InheritedByGraph type~ommp_bonded_type ommp_bonded_type type~ommp_system ommp_system type~ommp_system->type~ommp_bonded_type bds type~ommp_link_atom_type ommp_link_atom_type type~ommp_system->type~ommp_link_atom_type la type~ommp_link_atom_type->type~ommp_bonded_type bds

Contents

Source Code


Components

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

Data structure for topology

integer(kind=ip), public :: nbond

Number of bond terms in the potential energy function

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

Atoms involved in the ith bond term

real(kind=rp), public :: bond_cubic

3rd and 4th order terms coefficients, corresponding to and

real(kind=rp), public :: bond_quartic

3rd and 4th order terms coefficients, corresponding to and

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

Force constants for bond terms

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

Equilibrium lengths for bonds

logical(kind=lp), public :: use_bond = .false.

Flag to enable the calculation of bond terms in potential energy function

integer(kind=ip), public :: nangle

Number of angle terms in the potential energy function

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

Atoms involved in the ith angle term

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

Type of function to be used for ith angle term

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

Auxiliary atom to be used in calculaton of ith angle term

real(kind=rp), public :: angle_cubic

Coefficients for 3rd to 6th order terms corresponding to ... .

real(kind=rp), public :: angle_quartic

Coefficients for 3rd to 6th order terms corresponding to ... .

real(kind=rp), public :: angle_pentic

Coefficients for 3rd to 6th order terms corresponding to ... .

real(kind=rp), public :: angle_sextic

Coefficients for 3rd to 6th order terms corresponding to ... .

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

Force constants for the ith angle term

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

Equilibrium angle for the ith angle term

logical(kind=lp), public :: use_angle = .false.

Flag to enable the calculation of angle terms in potential energy function

integer(kind=ip), public :: nstrbnd

Number of stretching-bending coupling terms in potential energy function

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

Atoms involved in the ith stretching-bending term

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

Force constants for the ith stretching-bending term ( and )

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

Force constants for the ith stretching-bending term ( and )

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

Equilibrium angle for the ith stretching-bending term

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

Equilibrium distances for the ith stretching-bending term

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

Equilibrium distances for the ith stretching-bending term

logical(kind=lp), public :: use_strbnd = .false.

Flag to enable calculation of stretching-bending coupling terms in potential energy function

integer(kind=ip), public :: nangtor
integer(kind=ip), public, allocatable :: angtorat(:,:)
integer(kind=ip), public, allocatable :: angtor_t(:)
integer(kind=ip), public, allocatable :: angtor_a(:,:)
real(kind=rp), public, allocatable :: angtork(:,:)
logical(kind=lp), public :: use_angtor = .false.
integer(kind=ip), public :: nstrtor
integer(kind=ip), public, allocatable :: strtorat(:,:)
integer(kind=ip), public, allocatable :: strtor_t(:)
integer(kind=ip), public, allocatable :: strtor_b(:,:)
real(kind=rp), public, allocatable :: strtork(:,:)
logical(kind=lp), public :: use_strtor = .false.
integer(kind=ip), public :: nurey

Number of Urey-Bradley terms in potential energy function

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

Atoms involved in ith Urey-Bradley term

real(kind=rp), public :: urey_cubic

3rd and 4th order constants for U-B potential ( and )

real(kind=rp), public :: urey_quartic

3rd and 4th order constants for U-B potential ( and )

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

Force constants for U-B terms

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

Equilibrium distance for U-B potentials

logical(kind=lp), public :: use_urey = .false.

Flag to enable calculation of U-B terms in the potential energy function

integer(kind=ip), public :: nopb

Number of out-of-plane bending function in potential energy func.

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

Atoms involved in ith oop bending function

real(kind=rp), public :: opb_cubic = 0.0

Coefficients for 3rd to 6th order terms corresponding to ... for out-of-plane bending.

real(kind=rp), public :: opb_quartic = 0.0

Coefficients for 3rd to 6th order terms corresponding to ... for out-of-plane bending.

real(kind=rp), public :: opb_pentic = 0.0

Coefficients for 3rd to 6th order terms corresponding to ... for out-of-plane bending.

real(kind=rp), public :: opb_sextic = 0.0

Coefficients for 3rd to 6th order terms corresponding to ... for out-of-plane bending.

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

Force constants for ith out-of plane bending

logical(kind=lp), public :: use_opb = .false.

Flag to enable out-of-plane bending calculation

integer(kind=ip), public :: npitors
integer(kind=ip), public, allocatable :: pitorsat(:,:)
real(kind=rp), public, allocatable :: kpitors(:)
logical(kind=lp), public :: use_pitors = .false.
integer(kind=ip), public :: ntorsion
integer(kind=ip), public, allocatable :: torsionat(:,:)
integer(kind=ip), public, allocatable :: torsn(:,:)
real(kind=rp), public, allocatable :: torsamp(:,:)
real(kind=rp), public, allocatable :: torsphase(:,:)
logical(kind=lp), public :: use_torsion = .false.
integer(kind=ip), public :: nimptorsion
integer(kind=ip), public, allocatable :: imptorsionat(:,:)
integer(kind=ip), public, allocatable :: imptorsn(:,:)
real(kind=rp), public, allocatable :: imptorsamp(:,:)
real(kind=rp), public, allocatable :: imptorsphase(:,:)
logical(kind=lp), public :: use_imptorsion = .false.
integer(kind=ip), public :: ntortor
integer(kind=ip), public, allocatable :: tortorat(:,:)
integer(kind=ip), public, allocatable :: tortorprm(:)
integer(kind=ip), public, allocatable :: ttmap_shape(:,:)
real(kind=rp), public, allocatable :: ttmap_ang1(:)
real(kind=rp), public, allocatable :: ttmap_ang2(:)
real(kind=rp), public, allocatable :: ttmap_v(:)
real(kind=rp), public, allocatable :: ttmap_vx(:)
real(kind=rp), public, allocatable :: ttmap_vy(:)
real(kind=rp), public, allocatable :: ttmap_vxy(:)
logical(kind=lp), public :: use_tortor = .false.

Source Code

    type ommp_bonded_type
        type(ommp_topology_type), pointer :: top
        !! Data structure for topology
        
        ! Bond
        integer(ip) :: nbond
        !! Number of bond terms in the potential energy function
        integer(ip), allocatable :: bondat(:,:)
        !! Atoms involved in the ith bond term
        real(rp) :: bond_cubic, bond_quartic
        !! 3rd and 4th order terms coefficients, corresponding to 
        !! \(k^{(2)}\) and \(k^{(3)}\) 
        real(rp), allocatable :: kbond(:)
        !! Force constants for bond terms
        real(rp), allocatable :: l0bond(:)
        !! Equilibrium lengths for bonds
        logical(lp) :: use_bond = .false.
        !! Flag to enable the calculation of bond terms in potential 
        !! energy function

        ! Angle
        integer(ip) :: nangle
        !! Number of angle terms in the potential energy function
        integer(ip), allocatable :: angleat(:,:)
        !! Atoms involved in the ith angle term
        integer(ip), allocatable :: anglety(:)
        !! Type of function to be used for ith angle term
        integer(ip), allocatable :: angauxat(:)
        !! Auxiliary atom to be used in calculaton of ith angle term
        real(rp) :: angle_cubic, angle_quartic, angle_pentic, angle_sextic
        !! Coefficients for 3rd to 6th order terms corresponding to 
        !! \(k^{(3)}\) ... \(k^{(6)}\). 
        real(rp), allocatable :: kangle(:)
        !! Force constants for the ith angle term
        real(rp), allocatable :: eqangle(:)
        !! Equilibrium angle for the ith angle term
        logical(lp) :: use_angle = .false.
        !! Flag to enable the calculation of angle terms in potential energy 
        !! function

        ! Stretch-Bend
        integer(ip) :: nstrbnd
        !! Number of stretching-bending coupling terms in potential energy function
        integer(ip), allocatable :: strbndat(:,:)
        !! Atoms involved in the ith stretching-bending term
        real(rp), allocatable :: strbndk1(:), strbndk2(:)
        !! Force constants for the ith stretching-bending term (\(k_1\) and \(k_2\))
        real(rp), allocatable :: strbndthet0(:)
        !! Equilibrium angle for the ith stretching-bending term
        real(rp), allocatable :: strbndl10(:), strbndl20(:)
        !! Equilibrium distances for the ith stretching-bending term
        logical(lp) :: use_strbnd = .false.
        !! Flag to enable calculation of stretching-bending coupling terms in 
        !! potential energy function
        
        ! Angle-Torsion coupling
        integer(ip) :: nangtor
        integer(ip), allocatable :: angtorat(:,:), angtor_t(:), angtor_a(:,:)
        real(rp), allocatable :: angtork(:,:)
        logical(lp) :: use_angtor = .false.
        
        ! Bond-Torsion coupling
        integer(ip) :: nstrtor
        integer(ip), allocatable :: strtorat(:,:), strtor_t(:), strtor_b(:,:)
        real(rp), allocatable :: strtork(:,:)
        logical(lp) :: use_strtor = .false.
        
        ! Urey-Bradley
        integer(ip) :: nurey
        !! Number of Urey-Bradley terms in potential energy function
        integer(ip), allocatable :: ureyat(:,:)
        !! Atoms involved in ith Urey-Bradley term
        real(rp) :: urey_cubic, urey_quartic
        !! 3rd and 4th order constants for U-B potential (
        !! \(k^{(3)}\) and \(k^{(4)}\))
        real(rp), allocatable :: kurey(:)
        !! Force constants for U-B terms
        real(rp), allocatable :: l0urey(:)
        !! Equilibrium distance for U-B potentials
        logical(lp) :: use_urey = .false.
        !! Flag to enable calculation of U-B terms in the potential energy function

        ! Out-of-Plane Bending
        integer(ip) :: nopb
        !! Number of out-of-plane bending function in potential energy func.
        integer(ip), allocatable :: opbat(:,:)
        !! Atoms involved in ith oop bending function
        real(rp) :: opb_cubic=0.0, opb_quartic=0.0, opb_pentic=0.0, opb_sextic=0.0
        !! Coefficients for 3rd to 6th order terms corresponding to 
        !! \(k^{(3)}\) ... \(k^{(6)}\) for out-of-plane bending. 
        real(rp), allocatable :: kopb(:)
        !! Force constants for ith out-of plane bending
        logical(lp) :: use_opb = .false.
        !! Flag to enable out-of-plane bending calculation
        
        ! Pi-torsion 
        integer(ip) :: npitors
        integer(ip), allocatable :: pitorsat(:,:)
        real(rp), allocatable :: kpitors(:)
        logical(lp) :: use_pitors = .false.

        ! Torsion
        integer(ip) :: ntorsion
        integer(ip), allocatable :: torsionat(:,:), torsn(:,:)
        real(rp), allocatable :: torsamp(:,:), torsphase(:,:)
        logical(lp) :: use_torsion = .false.
        
        ! Imporoper Torsion
        integer(ip) :: nimptorsion
        integer(ip), allocatable :: imptorsionat(:,:), imptorsn(:,:)
        real(rp), allocatable :: imptorsamp(:,:), imptorsphase(:,:)
        logical(lp) :: use_imptorsion = .false.

        ! Torsion-torsion coupling (cmap)
        integer(ip) :: ntortor
        integer(ip), allocatable :: tortorat(:,:), tortorprm(:), ttmap_shape(:,:)
        real(rp), allocatable :: ttmap_ang1(:), ttmap_ang2(:), ttmap_v(:), &
                                 ttmap_vx(:), ttmap_vy(:), ttmap_vxy(:)
        logical(lp) :: use_tortor = .false.
    end type ommp_bonded_type